์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 

๊ณ ์„ฑ๋Šฅ ์‹ค์‹œ๊ฐ„ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ RabbitMQ + Kafka + Redis ์‹ค์ „ ํ”„๋กœ์ ํŠธ

RabbitMQ, Kafka, Redis๋ฅผ Python Flask์™€ ํ†ตํ•ฉํ•ด, ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ์™€ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์‹ค์ „ ํ”„๋กœ์ ํŠธ๋กœ ์ตํžˆ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐฑ์—”๋“œ, ๋ฐ๋ธŒ์˜ต์Šค ยท ์ธํ”„๋ผ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • RabbitMQ

  • Kafka

  • ๋ฐฑ์—”๋“œ

  • backend

์ด ๊ฐ•์˜๋Š” ์‹ค๋ฌด์—์„œ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ ์ธ RabbitMQ, Kafka, Redis๋ฅผ ํ•œ ๋ฒˆ์— ํ†ตํ•ฉํ•˜์—ฌ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์ „ํ˜• ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. Python Flask๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ์ด ๊ฐ•์˜๋Š” ๋Œ€๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ, ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌ๋ฐ, ๊ณ ์„ฑ๋Šฅ ์บ์‹ฑ ๋ฐ ์•Œ๋ฆผ ์‹œ์Šคํ…œ์„ ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์š”!

๋ณธ ๊ฐ•์˜๋Š” RabbitMQ, Kafka, Redis๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ดํ•ดํ•˜๋Š” ๋ถ„๋“ค์„ ๋Œ€์ƒ์œผ๋กœ, ์ด๋ฅผ ์‹ค์ œ ์„œ๋น„์Šค์— ๊ตฌ์ฒด์ ์œผ๋กœ ํ†ตํ•ฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ๋ฐฐ์šฐ๊ฒŒ ๋˜๋‚˜์š”?

Python, Flask, Kafka, Redis, rabbitmq ํ†ตํ•ฉ ์„ธํŠธ

  • RabbitMQ๋ฅผ ํ™œ์šฉํ•œ ๋น„๋™๊ธฐ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ ๊ตฌ์ถ•:
    ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ ์„ค๊ณ„ ์ „๋žต, ๋‹ค์–‘ํ•œ Exchange ์œ ํ˜•, ์žฅ์•  ์‹œ๋ฎฌ๋ ˆ์ด์…˜, DLQ ๋ฐ ์žฌ์‹œ๋„ ์ฒ˜๋ฆฌ ์‹ค์Šต์„ ํ†ตํ•ด ์•ˆ์ •์ ์ธ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • Kafka๋ฅผ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถ„์„:
    ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•, Kafka Streams๋ฅผ ์ด์šฉํ•œ TPS ์ง‘๊ณ„ ๋ฐ ์ด์ƒ์น˜ ํƒ์ง€, Elastic Search ์—ฐ๋™๊ณผ 1๋งŒ ๊ฑด ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹ค์Šต์„ ํ†ตํ•ด ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์˜ ๋ชจ๋“  ๊ณผ์ •์„ ์ฒด๋“ํ•ฉ๋‹ˆ๋‹ค.

  • Redis๋ฅผ ํ™œ์šฉํ•œ ์ดˆ๊ณ ์† ์บ์‹ฑ ๋ฐ ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ:
    Cache-Aside์™€ Write-Through ์ „๋žต, Redis Pub/Sub ๋ฐ ์›น์†Œ์ผ“์„ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ฃผ๋ฌธ ํ˜„ํ™ฉํŒ ๊ตฌํ˜„ ์‹ค์Šต์œผ๋กœ API ์„ฑ๋Šฅ ๊ฐœ์„ ๊ณผ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์‘๋‹ต์„ ์‹คํ˜„ํ•ฉ๋‹ˆ๋‹ค.


  • ํ†ตํ•ฉ ์•„ํ‚คํ…์ฒ˜ ์ตœ์ข… ํ”„๋กœ์ ํŠธ:
    Stripe ์ˆ˜์ค€์˜ "์‹ค์‹œ๊ฐ„ ๊ฒฐ์ œ ํŠธ๋žœ์žญ์…˜ & ์•Œ๋ฆผ ์‹œ์Šคํ…œ", Airbnb ์Šคํƒ€์ผ์˜ "์ˆ™๋ฐ• ์˜ˆ์•ฝ & ๊ฐ€๊ฒฉ ์˜ˆ์ธก ์‹œ์Šคํ…œ", ๊ทธ๋ฆฌ๊ณ  ์žฅ์•  ์ „ํŒŒ ๋ฐฉ์ง€ ์‹œ์Šคํ…œ(์˜ˆ: Circuit Breaker, Fallback ๋ฉ”์ปค๋‹ˆ์ฆ˜)์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ, ๊ธฐ์ˆ  ํ†ตํ•ฉ๊ณผ ์šด์˜ ์ „๋žต์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ตํž™๋‹ˆ๋‹ค.


์ด ๊ฐ•์˜๊ฐ€ ํŠน๋ณ„ํ•œ ์ด์œ 

  • ์‹ค์ „ ์ค‘์‹ฌ:
    ์ด๋ก ์„ ๋„˜์–ด์„œ, ํ˜„์—…์—์„œ ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์Šต ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด, ๊ฐ ๊ธฐ์ˆ ์˜ ์ ์šฉ ์‚ฌ๋ก€์™€ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ง์ ‘ ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ†ตํ•ฉ ํ•™์Šต:
    ๊ฐœ๋ณ„ ๊ธฐ์ˆ ์ด ์•„๋‹Œ, RabbitMQ, Kafka, Redis๋ฅผ ํ†ตํ•ฉํ•œ ์ „์ฒด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋ฉฐ, ์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์š”๊ตฌ๋˜๋Š” ์ „ ๊ณผ์ •์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.



์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ด์š”

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

Python Flask๋กœ ๊ณ ์„ฑ๋Šฅ ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด
RabbitMQ, Kafka, Redis๋ฅผ ์‹ค๋ฌด์—์„œ ํ™œ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ์—”์ง€๋‹ˆ์–ด

๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ
์ˆ˜์ค€ ๋†’์€ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ๊ฐ€์ง€๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž ์ทจ์—…์ค€๋น„์ƒ

์ˆ˜๊ฐ• ๋Œ€์ƒ

  • ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž:
    Python Flask๋กœ ๊ณ ์„ฑ๋Šฅ ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

  • ์‹ค๋ฌด ์—”์ง€๋‹ˆ์–ด:
    RabbitMQ, Kafka, Redis๋ฅผ ์‹ค๋ฌด์—์„œ ํ™œ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ์—”์ง€๋‹ˆ์–ด

  • ์‹œ์Šคํ…œ ์„ค๊ณ„ ์ „๋ฌธ๊ฐ€:
    ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ๊ณผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์šด์˜ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ถ„

์ˆ˜๊ฐ• ํ›„ ๊ธฐ๋Œ€ ํšจ๊ณผ

  • ์ „๋ฌธ ์‹ค๋ฌด ์—ญ๋Ÿ‰ ๋ฐฐ์–‘:
    RabbitMQ, Kafka, Redis๋ฅผ ํ†ตํ•ฉํ•œ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ ๋ฐ ์šด์˜ํ•˜๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๊ณ ์„ฑ๋Šฅ ๋ฐฑ์—”๋“œ ๊ตฌ์ถ•:
    Flask, Celery, Kafka Streams ๋“ฑ์˜ ์ตœ์‹  ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•ด ๊ณ ์„ฑ๋Šฅ ํŠธ๋žœ์žญ์…˜ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด ๊ฐ•์˜๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ

  • 2024.05 ~ ํ˜„์žฌ: ๋ฏธ๊ตญ ์‹ค๋ฆฌ์ฝ˜๋ฐธ๋ฆฌ ์ธ๊ณต์ง€๋Šฅ ์Šคํƒ€ํŠธ์—…, ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด

  • 2023.08 ~ 2024.04: ๋ฏธ๊ตญ ๋น…ํ…Œํฌ ์—”์ง€๋‹ˆ์–ด ํŽ ๋กœ์šฐ์‹ญ ํ’€์Šคํƒ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด ํŽ ๋กœ์šฐ

     

  • ~2022.10 @๊ตญ๋‚ด ๊ธฐ์—… ์žฌ์ง(๊ฒ€์ƒ‰ํฌํ„ธ/ํ•€ํ…Œํฌ, AI)


์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • ๊ฐ•์˜๋Š” MacOS ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์œˆ๋„์šฐ๋ผ๋ฉด docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๋ฉด ๋Œ€๋ถ€๋ถ„ ๋”ฐ๋ผ์˜ค์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํ•™์Šต ์ž๋ฃŒ

  • PPT ์™€ ๋…ธ์…˜์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • Python

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • RabbitMQ, Kafka, Redis๋ฅผ ์‹ค๋ฌด์—์„œ ํ™œ์šฉํ•˜๊ณ  ์‹ถ์€ ์—”์ง€๋‹ˆ์–ด

  • ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€ ์—”์ง€๋‹ˆ์–ด

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Python

  • Flask

  • ์‹œ์Šคํ…œ๋””์ž์ธ

  • Docker

์•ˆ๋…•ํ•˜์„ธ์š”
๋ฏธ๊ตญ๋‹ฌํŒฝ์ด์ž…๋‹ˆ๋‹ค.

418

๋ช…

์ˆ˜๊ฐ•์ƒ

12

๊ฐœ

์ˆ˜๊ฐ•ํ‰

17

๊ฐœ

๋‹ต๋ณ€

4.3

์ 

๊ฐ•์˜ ํ‰์ 

3

๊ฐœ

๊ฐ•์˜

  • 2024.05 ~ ํ˜„์žฌ: ๋ฏธ๊ตญ ์‹ค๋ฆฌ์ฝ˜๋ฐธ๋ฆฌ AI ์Šคํƒ€ํŠธ์—…, ํ’€์Šคํƒ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด

  • 2023.08 ~ 2024.04: ๋ฏธ๊ตญ ๋น…ํ…Œํฌ ์—”์ง€๋‹ˆ์–ด ํŽ ๋กœ์šฐ์‹ญ ํ’€์Šคํƒ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด ํŽ ๋กœ์šฐ

     

     

  • ~2022.10 @๊ตญ๋‚ด ๊ธฐ์—… ์žฌ์ง(๊ฒ€์ƒ‰ํฌํ„ธ/ํ•€ํ…Œํฌ, AI)

     

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

25๊ฐœ โˆ™ (2์‹œ๊ฐ„ 27๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!