π[Django] Celeryλ?
Celeryλ?
Celery
λ, λμμ± νλ‘κ·Έλλ°μμ κ°μ₯ λ§μ΄ μ¬μ©νλ κΈ°λ² μ€ νλμ.
λΆμ° λ©μμ§ μ λ¬μ κΈ°λ°μΌλ‘ λμνλ λΉλκΈ° μμ ν λΌκ³ νλ€.
- μ¦, μ€μκ° μ²λ¦¬μ μ€μ μ λκ³ μμ
μμ½μ μ§μνλ μμ
ν μΈκ±°μ!!
- μ€μΌμ€λ§λ μ§μνκΈ΄ ν¨
Celeryλ λ©μμ§λ₯Ό μ λ¬νλ μν (Publisher
)κ³Ό λ©μμ§λ₯Ό Message Broker
μμ κ°μ Έμ μμ
μ μννλ Worker
μ μν μ λ΄λΉνλ€.
Worker?
Worker
λ μΉ μλΉμ€μμ λ°±μλμ μμ
μ μ²λ¦¬νλ λ³λμ Frame
μ!
μ΄λ‘ μΈν΄ μ¬μ©μμκ² μ¦κ°μ μΈ λ°μμ 보μ¬μ€ νμκ° μλ μμ λ€λ‘ μΈν΄ μ¬μ©μκ° λλΌλ μκ° μ§μ°μ μ΅μν ν μ μμ.
μ΄μ²λΌ Celery
λ₯Ό μ¬μ©νλ©΄, API μλ²λ₯Ό κ°λ°νκ³ μ΄μνλ©΄μ μ¬μ©μ μμ²μ ν¬ν¨λ νμκ° μλ λΆνμν κ³Όμ μ΄λ λ¬΄κ±°μ΄ μΏΌλ¦¬ μ€ν λ±μ μμ
μ Celery Task
λ‘ μ μν΄μ Broker(RabbitMQ, Redis λ±)
μ Consumer(Celery Worker)
λ₯Ό μ΄μ©ν΄ λΉλκΈ° μ²λ¦¬νμ¬ μ¬μ©μμκ² λΉ λ₯΄κ² μλ΅μ μ 곡ν μ μλ€!!
[μ¬μ©μ μμ²μ ν¬ν¨λ νμ μλ μμ μμ]
- νμκ°μ
μΆν μ΄λ©μΌ λ°μ‘
- μ£Όλ¬Έ λ΄μ λ€μ΄λ‘λ
Celery κ΅¬μ± μμ
Broker
Broker
λ Task(Message)λ₯Ό Worker
μκ² μ λ¬νλ μν μ
Client
Client
λ Taskλ₯Ό μμ± νλ μν μ
Worker
Worker
λ Taskλ₯Ό μ€ννκ³ μ²λ¦¬νλ μν
Celery λμ ꡬ쑰
Celeryλ μΉ μλ²μμ λ°μν μμ²(Task)
μ Message Broker
μμ λ°μ Celeryλ₯Ό μ΄μ©ν΄ λΆμ° μ²λ¦¬ν¨!
Celeryμμλ μμ μ΄ μλ£λλ μ΄λ²€νΈμ λν΄ DB Taskλ₯Ό μνν¨!
Celery Broker?
Broker
λ Client
μ Worker
μ¬μ΄μμ λ©μμ§λ₯Ό μ λ¬νλ μν μ!
5.0
λ²μ κΈ°μ€μΌλ‘ λ€μκ³Ό κ°μ Broker
λ₯Ό μ§μνλ€κ³ νλ€.
- RabbitMQ
- RabbitMQμ μΈμ¦ λ° μΈκ° λ°©μμ κ·Έλλ‘ μ¬μ©ν μ μλ€!
- λ§€μ° ν¨μ¨μ & κ΄λ²μν λ°°ν¬ λ° ν μ€νΈλ λ©μμ§ λΈλ‘컀μ
- κ³ κΈ λΌμ°ν μꡬ μ¬νμ΄ μλ μν°νλΌμ΄μ¦ λ©μμ§μ μ 곡νλλ°μ μ ν©
- Redis
- μμμ΄ λΉ λ₯΄κ³ κ°λ²Όμ΄
Broker
- νμ§λ§ μμ μ μΈ μ λ¬μ μ§μνμ§λ μλλ€
- μμ€ν μ΄ μ’ λ£λλ κ²½μ°, λͺ λΆ λμ μμ μ λν μ λ³΄κ° μμ€λλ κ²μ΄ μ€μνμ§ μμ μ ν리μΌμ΄μ μ μ ν©
Redis
μμ²΄κ° λ©λͺ¨λ¦¬λ₯Ό μ¬μ©νμ¬ μ μ₯νλ λ°©λ²μ΄λΌ, λ©λͺ¨λ¦¬κ° λΆμ‘±ν μν©μμλ μμλ‘Key
κ° μμ λ μ μμ βTask
λ₯Ό λ°μλ μμ λ μ μμ- λ©μμ§ μμ€ λ°©μ§ κΈ°λ²μ΄ μμγ γ
- μμμ΄ λΉ λ₯΄κ³ κ°λ²Όμ΄
- Amazon SQS
- Zookeeper
Message Broker
Message Broker
λ, μ‘μ μμ μ΄μ λ©μμ§ νλ‘ν μ½λ‘λΆν°μ λ©μμ§λ₯Ό μμ μμ μ΄μ λ©μμ§ νλ‘ν μ½λ‘ λ³ννλ μ€κ° λͺ¨λμ!
Kafka
, ActiveMQ
, RabbitMQ
, Redis
λ±μ΄ μ¬κΈ°μ ν΄λΉλ¨
λκΈλ¨κΈ°κΈ°