Redis์ ๋ํ ์ง์์ ์ ๊ฑฐํ๋ฉด RabbitMQ ๋๋ Kafka/nsq์ ์๊ฐ์ ์ง์คํ ์ ์์ต๋๋ค.
Python 3์์ asyncio๋ก ์ด์ํ๋ ๊ฑฐ๋ํ ์์
๋ ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ๊ฐํ๊ฒ ๊ณ ๋ ค๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ๋ฏธ๋ก ์ด ์์ ์ ํ๋ ค๋ฉด ์ด์ก ์๋จ์ ์ธ๊ธฐ๊ฐ ์ค์ํ์ง ์์์ผ ํฉ๋๋ค.
๊ฒฐ๊ตญ ๋๋ ๋ด๊ฐ ํ ์ ์๋ ์ผ์ ์ ํํ๊ฒ ์ง๋ง ์ ์ด๋ ์ฌ๊ธฐ์์ ๋น์ ์ ์ฐ๋ ค๋ฅผ ํ๋ช ํ ์ ์์ต๋๋ค.
ํ์ฌ ์
๋ฌ๋ฆฌ์ ๋์์ด ์กด์ฌํฉ๋๋ค(์: huey
๋ฐ rq
์ด๋ ๋ช
์์ ์ผ๋ก redis๋ฅผ ๋ธ๋ก์ปค๋ก ์ง์ํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ์๋ฌ๋ฆฌ๊ฐ ํ๋ ธ์ ๋ ์๋ฌด ๊ฒ๋ ์์์ต๋๋ค.
@ask sql ๋ธ๋ก์ปค ์ง์ ์ค๋จ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น? ํ๋ก๋์
์์ sql ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ด ๋ง์ด ์๋์ง ์์ฌ๋ฉ๋๋ค. ๊ทธ๋ค์ด ํ๋ ๊ฒฝ์ฐ์๋ ์ค์ ๋ก ํด์๋ ์๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ rabbitmq๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ด ๋ง ๊ทธ๋๋ก ํ ๋ช
๋ น ๊ฑฐ๋ฆฌ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ ๋์ปค๊ฐ ์์ต๋๋ค. ๋ ์ด์ _๊ทธ๋ ๊ฒ_ ์ด๋ ต์ง ์์ต๋๋ค.
๋๋ RabbitMQ / Redis / SQS / Qpid ์ด์ธ์ ๋ค๋ฅธ ๋ชจ๋ ๋ธ๋ก์ปค๋ฅผ ํฌํจํ์ฌ ๋ธ๋ก์ปค๋ก์์ SQL์ ๋ํ ์ง์์ ์ค๋จํ์ต๋๋ค. :)
(๋ณต์ ํ๋ค)
์ ๋ ์ ๋ฌ๋ฆฌ ์ปค๋ฎค๋ํฐ์ ๊ทธ๋ ๊ฒ ์ฝ๋งค์ด๋ ์ฌ๋์ด ์๋๋๋ค. ๋ด $0.02์ ๊ด๊ณ์์ด:
์ ์ง ๊ด๋ฆฌ ๋ฌธ์ ์ ๋ํ ๊ทํ์ ์๊ฒฌ์ ๊ณต๊ฐํ ์ ์์ผ๋ฉฐ ์ด๋ฌํ ์ข ๋ฅ์ ์กฐ์น๋ ์ง์ ๊ฐ๋ฅ์ฑ์ ํฅํ ํ ๊ฑธ์์ ๋๋ค. ํ์ง๋ง ๋น์ ์ด ํ ์ ์๋ ๋ค๋ฅธ '์ ๋จ'์ด ์์ต๋๊น?
๋ฐฉ์ ์์ '๊ณต๊ธ' ์ธก๋ฉด์์ ์ง์ญ ์ฌํ์์ ์
๋ฌ๋ฆฌ์ ๋ ๋ง์ ๊ธฐ์ฌ๋ฅผ ํ์ง ์๋ ์ด์ ๊ฐ ๋ฌด์์ธ์ง ์๊ฐํ์ญ๋๊น?
์ปค๋ฐ ๋ฐ PR์ ๋์ถฉ ์ดํด๋ณด๋ฉด ๋ด๊ฐ ๊ธฐ์ฌํ ๋ช ๊ฐ์ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋น๊ตํ์ฌ ์
๋ฌ๋ฆฌ๋ ์ฃผ๋ก ํ ์ฌ๋์ ์์
์์ ์ ์ ์์ต๋๋ค.
@MaximilianR ๋ ์์ ์ ์ํด ๋งํ๊ธฐ:
๊ทธ๋๋ ์ ๋ ์ ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋์์ด ๋ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
@MaximilianR , ๋ง์ ๊ธฐ์ฌ์๊ฐ ์์์ง๋ง ํ์คํ ๋๋ ๋ง์ ์ผ์ ํ์ต๋๋ค. ํ๋ก์ ํธ๊ฐ ๋๋ฌด ๋นจ๋ฆฌ ์ฑ์ฅํ๊ณ ์ด๋ ์์ ์์ ๋๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ฑฐ๋ IRC/email/StackOverflow ๋ฑ์์ ์ฌ์ฉ์๋ฅผ ์ง์ํ๋ ๊ฒ ์ค์์ ์ ํํด์ผ ํ์ต๋๋ค. ํนํ ๋ค์ค ์ฒ๋ฆฌ ํ ๊ต์ฐฉ ์ํ ๋ฌธ์ ์ ๊ฐ์ ๋ฌธ์ ๋ ์ง์ค ์ฝ๋ฉ์ 6๊ฐ์์ด ํจ์ฌ ๋๊ฒ ๊ฑธ๋ ธ์ต๋๋ค. ์ฌ๋๋ค์ ๋ฉํ ๋ง. ๊ทธ ์์ ์์ ์ฐ๋ฆฌ๋ ๋ค์ด๋ก๋์์ ๊ฑฐ์ RabbitMQ์ ํฌ๊ธฐ์์ง๋ง 8๋ช ์ด ํํ์์ผ๋ก ์ผํ๋ ๊ณณ์์๋ ๋๋ฐ์ ์์์ต๋๋ค.
์ ๋จํด์ผ ํ ๋ค๋ฅธ ํญ๋ชฉ์ด ์์ ์ ์์ง๋ง Redis๋งํผ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋ ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
amqp/kombu๋ฅผ ์์ ํ asyncio๋ก ์ด์ํ๋ ์์ ๋ ์๊ฐ์ ๋ง์ด ๋จ์ถํ์ง๋ง ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ์ต๋๋ค. ๊ทธ๋๋ ์๋ฃ๋์ง ์์์ต๋๋ค.
@ask ์์ ๋ฉ์์ง๊ฐ ์ฌ์ ํ SQS์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ด๋ ๋ฐ ๊ด์ฌ์ด ์๋ค๋ ์๋ฏธ์ ๋๊น? ์ฌ๊ธฐ์ ์ด๋ฆฐ SQS ํฐ์ผ์ด ํ๋๋ง ์๋ค๋ ๊ฒ์ ์์์ง๋ง ์ฌ์ ํ ๋ฌธ์์ "์คํ์ " ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. SQS์ ํ์ฌ ์ํ์ ํฅํ ์๊ตฌ ์ฌํญ์ ๋ํด ์กฐ์ธํด ์ฃผ์๊ฒ ์ต๋๊น?
์ฐ๋ฆฌ๋ ํ๋ก๋์ ์์ Celery + SQS๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก ์ด๋ฅผ ์ํด ์ฝ๊ฐ์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ผ ์๋ ์์ง๋ง SQS๊ฐ ํ๋ก์ ํธ์ ๋ํ ์ฅ๊ธฐ ๊ณํ์ ์ผ๋ถ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋ฐ ์ํฉ์ ๋น ์ง๊ณ ์ถ์ง ์์ต๋๋ค.
@ ์์์
ํ์คํ ํ๋ก์ ํธ์ ์ต์ ์ ๋คํ์ง๋ง Redis ์ง์์ด ์ค๋จ๋๋ฉด ๋ด๋ถ์ ์ผ๋ก Celery๋ฅผ ์ ๊ฑฐํ๋๋ก ํ์คํ ๋ฐ์ด๋ถ์ผ ๊ฒ์ ๋๋ค. ์ ์ฐ๋ฆฌ๊ฐ RabbitMQ๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒ์ธ์ง ์๊ณ ์ถ๋ค๋ฉด ๋น๊ณต๊ฐ๋ก ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ๊ณต๊ฐ์ ์ผ๋ก ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ณ ์ถ์ง๋ ์์ต๋๋ค.
๊ด๋ จ: Docker์์ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ช ๋ น์ด๋ผ๊ณ ์ ์ํ๋ฉด ํจ๊ณผ์ ์ผ ์ ์์ง๋ง ๋๋จธ์ง ์ฌ๋๋ค์ด ๋ฐฐํฌํ๋ ๋ฐฉ์์ ๋ฐ๋์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค.
@nicksloan SQS๋ ์ด์ ๋ง์คํฐ ๋ฌธ์์์ ์ง์๋๋ ์ ์ก์ผ๋ก ๋์ด๋ฉ๋๋ค. http://docs.celeryproject.org/en/master/getting-started/brokers/index.html
๋น๋๊ธฐ I/O๋ฅผ ์ฌ์ฉํ์ฌ SQS ์ ์ก์ ๋ค์ ์์ฑํ๋ ์์ ์ 1000๋ฌ๋ฌ๊ฐ ์กฐ๊ธ ๋๋ ํ์์ ๋ฐ์์ต๋๋ค.
@scoates Redis ์ ์ก์ ๋ฉ์์ง ์ฝ๊ธฐ์ ๋น๋๊ธฐ I/O๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํจ๊ป ํดํน๋์์ง๋ง ๊ฒ์๋ ์ฌ์ ํ ๋๊ธฐ์์ด๊ธฐ ๋๋ฌธ์ ๋ ๋์ ์ํฉ์ ์์ต๋๋ค. Python redis ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๊ธฐ์์ด๋ฏ๋ก ๋ฉ์์ง๋ฅผ ์ฝ๋ ๋ฐ์๋ ์ฌ์ ํ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ ์๋ ๋ฐฉ์์ ๋ํ ๋ง์ ๋ถํ์ค์ฑ์ด ์์ต๋๋ค. ๋ฒ๊ทธ๋ ์ฝ๊ฒ ์จ๊ธธ ์ ์์ผ๋ฉฐ, redis-py ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ฐ๋ฆฌ๊ฐ ๋น์ ํต์ ์ธ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ๋ ๊ธ๊ฒฉํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
์ ๋ Redis๋ฅผ ์ง์ํ๊ณ ์ถ์ต๋๋ค. ์ ๋ง ๊ทธ๋ ์ต๋๋ค. ๋๋ RabbitMQ/Pivotal์์ ์ผํ ๋ Celery๊ฐ ๊ตฌํํ๋ ํจํด์ ๋ํ Python์ ๊ณตํต ์๋ฃจ์ ์ด ํ์ํ๋ค๊ณ ๋๊ผ๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์ํด ์ธ์ฐ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ปค๋ฎค๋ํฐ์ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ํ์ฌ๊ฐ ๊ณ์ ์๋ํ๋๋ก ํฌ์ํ์ง ์์ผ๋ฉด ๋๋ ์๋ฐฉ์ ๋ ๋ ๊ฒ์ด๊ณ ์ต์ ์ ๊ฒฝ์ฐ ์ง๊ธ์ฒ๋ผ ์ฌ๋๋ค์ด ํ๋ก์ ํธ๋ฅผ ๋นํํ๊ฒ ๋ง๋๋ ์ด์ก๊ณผ ๊ด๋ จ๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ด ์ถ์ ๋ ๋น์ฐธํ๊ฒ ๋ง๋ค๊ณ ์ฌ๊ธฐ๋ฅผ ๋จ์ด๋จ๋ฆฝ๋๋ค.
์ด๊ฒ์ ์ ๋ฌ๋ฆฌ์ ์ญ์ฌ๋ฅผ ๊ณ ๋ คํ ๋ ๋๋ฌด ๊ธ์ง์ ์ผ ์ ์์ง๋ง RabbitMQ ๋์ Redis๋ง ์ ์งํ๋ ๊ฒ์ ๋ํด ์๊ฐํด ๋ณด์ จ์ต๋๊น?
@MaximilianR ๊ณ ๋ คํ์ง๋ง ์ ์ด์ ์ ๋ฉ์์ง ์ ๋ฌ๊ณผ ์ฌ๋ฐ๋ฅธ ๋ถ์ฐ ์์คํ ๊ตฌ์ถ์ ์์ต๋๋ค. Redis๋ ์์ง ๋ฉ์์ง ํ์ธ์ ๊ตฌํํ๊ธฐ ์ํด ์๋ํ๋ BRPOPLPUSH ๊ตฌํ์ ์ ๊ณตํ์ง ์์์ผ๋ฉฐ ๋ถ์ฐ ์์คํ ์์ ๋ฒฝ์๊ณ ์๊ฐ์ ์์กดํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ์ฌ์ค์ ์ธ์ ํ ์ ์๋ค๋ ์ฌ์ค์ด ๋ฐํ์ง๋ฉด์ ๋์ฑ ์กฐ์ฌ์ค๋ฝ์ต๋๋ค. RabbitMQ๋ ์ ์ด๋ ๋ฌธ์ ๊ณต๊ฐ์ ์ฌ๊ฐํ๊ฒ ๊ณต๊ฒฉํ๊ณ ์์ผ๋ฉฐ Kafka ๋ฐ NSQ์ ๊ฐ์ ๋ค๋ฅธ ํ๋ ์ด์ด๊ฐ ์์ต๋๋ค. ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ ๋๊ธฐ์ด์ ๊ฐ๋จํ ๋ชฉ๋ก ์์ ์ผ๋ก ์ทจ๊ธํ๊ณ ์์ง๋ง Celery๊ฐ ๊ทธ ์ค ํ๋๊ฐ ๋๊ธฐ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. :)
@scoates : ๋๋ ๋ด๊ฐ ์ด๋ป๊ฒ ๋ฐ์ ํ๊ณ ์๋์ง์ ๋ํด ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. 2016๋ ์ "rabbitmq๋ ๋ฐฐํฌํ๊ธฐ ์ด๋ ต๋ค"๋ ๋ง์ ๋ง๋ ์๋๋ ์๋ฆฌ์๋ค. ์ด๋๊ฐ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋ํด ์๋ฌด๊ฒ๋ ๋ชจ๋ฅธ๋ค๊ณ ํด๋ ์ ๋ง ๋์์ด ๋๋ ๋์ปค๊ฐ ์์ต๋๋ค. ์๋ชป๋ ๊ฐ์ ์ ํ์ง ๋ง์๊ธฐ ๋ฐ๋๋๋ค.
@ ์ฐ๋ฆฌ์ ํจ๊ป ํ์ธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. Celery๋ ํ๋ฅญํ ์ ํ์ด๋ฉฐ ๊ทํ(๋ฐ ์ปค๋ฎค๋ํฐ)๊ฐ ๊ฐ์ง ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ณ ๋ คํ ๋ ํต์ฌ ์ ํ์ ์ง์คํ๋ ๊ฒ์ด ์ต์ ์ ๊ฒฐ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํธํ๋์ง ์๋ ์ฌ๋ฌ ์์คํ ์ ์ฌ์ฉํ์ฌ ๋์ผํ ํ๋ฅญํ ๊ธฐ๋ฅ์ ์๋ํ๊ณ ์ ๊ณตํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค์ด ์ผ์ธ์ง ์์ํ ์ ์์ต๋๋ค. ์๋น์ ์ ์ฅ์์๋ ์ ํ์ ํญ์ด ๋๋ฌด ๋์ด ์ ํ์ด ๋ณต์กํด์ง๋ ๊ฒ ๊ฐ์์. ๋๋ ์ด๊ฒ์ด ์๋ง๋ ์ผ๋ถ ์ฌ์ฉ์๋ฅผ ํ๋๊ฒ ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง๋ง ๋ ์ ์ ๋ธ๋ก์ปค๋ฅผ ๊ณ ์ํ๋ ๊ฒ์ด ์ ํ์ ๋ํด ์ฌ๋ฐ๋ฅธ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. AMQP๊ฐ ํ์ค์ด๊ณ ์ ๋ฐ์๋ค์ฌ์ง๋ ํ๋กํ ์ฝ์ธ ๊ฒ์ ์ด์ ์ ๋ง์ถ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ rabbitmq๊ฐ ์์ฃผ ์ข์ ๊ตฌํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ง ํ ์ผ์ด ๋ง์ง ์๋ค๋ ๊ฒ์ ์ฌํ ์ผ์ด์ง๋ง, ๋ชจ๋ ์ด์ก ์๋จ๊ณผ ๊ธฐ๋ฅ์ ๋ชจ๋ ํฉ์น๋ฉด ์ผ์ฃผ์ผ์ ๋ช ์๊ฐ์ผ๋ก ์ง์ ๊ฐ๋ฅํ์ง ์์ต๋๋ค.
Redis ํ๋กํ ์ฝ์ ๋งค์ฐ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ์ ์ก์ ์์ ํ ๋น๋๊ธฐ์์ผ๋ก ๋ค์ ์์ฑํ๋ ๊ฒ์ด ๊ทธ๋ ๊ฒ ์ด๋ ค์ธ ํ์๋ ์์ต๋๋ค. Celery๊ฐ ๋ชจ๋ Tornado ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ ์ ์๋๋ก ํ๋ ๋ ์ด์ด๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋์ผํ ๋ ์ด์ด๋ฅผ asyncio ๋ฐ Twisted์ ๋ํด ๋ง๋ค ์ ์์ผ๋ฏ๋ก ์ฌ์ฌ์ฉํ ์ ์๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ ์๋ ์์ต๋๋ค.
Python์ stdlib์ asyncio๋ก ํฌ๊ฒ ๋ณํํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์๋ก์ด ์น ํ๋ ์์ํฌ, ์๋ก์ด ๋คํธ์ํฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ฉฐ ๊ฑฐ์ ์ ์ฒด ์ํ๊ณ๊ฐ ์ ์ํด์ผ ํฉ๋๋ค. ๋ ์ด์ ์์ฒด ์ด๋ฒคํธ ๋ฃจํ๋ฅผ ์ ์ง ๊ด๋ฆฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ ์ด ์กฐ๊ธ ๋ ์ฌ์์ง์ง๋ง ์ ํ์๋ ์ฝ๊ฐ์ ์์ ์ด ํ์ํฉ๋๋ค.
๋ํ ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๋ ์ ๋ฉ์์ง ํ๋กํ ์ฝ์ด ์์ผ๋ฏ๋ก Go ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ผ๋ก ์ ์์ ์๋ฅผ ์์ฑํ๊ณ ์ถ์ต๋๋ค. Redis๋ ๋ฉ์์ง ํค๋, ์์ฑ ๋ฑ์ ๊ตฌํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง ์ํธ ์ด์ฉ์ฑ์ ๊ฐ์ฅ ์ ํฉํ์ง ์์ต๋๋ค. AMQP ํ๋กํ ์ฝ์ ์๋ ์ฌ์ฉ ์ฌ๋ก ์ค ํ๋์๊ธฐ ๋๋ฌธ์ ํ์คํ ์ฐ์์ ์์ต๋๋ค.
@sk ๋ด ์ ๊ทผ ๋ฐฉ์์ ํ์ฌ๊ฐ ๋ธ๋ก์ปค๋ฅผ ์ ์งํ๋๋ก ํ๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋์ Redis ์ฐ๊ตฌ์์ ๋๊ตฐ๊ฐ์ ์ด์ผ๊ธฐ๋ฅผ ํด๋ณด๊ณ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ๊ด์ฌ์ ๋ ์ ์๋์ง ๋ณด๋๋ก ํฉ์๋ค.
MongoDB ๋ฐ ๊ธฐํ ์๋น์ค๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
SQL ๋ธ๋ก์ปค์ ๊ฒฝ์ฐ ์ข์ ์๊ฐ์ด ์๋๋ฉฐ ์ง์ํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๋์ ์ถ์ถํ์ฌ ์ ์ง ๊ด๋ฆฌํ ์ฌ๋์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ด์ฌ์ด ์ถฉ๋ถํ์ง ์์ผ๋ฉด ํ์ํ์ง ์์ต๋๋ค.
์ผ์ข
์ ๋ธ๋ก์ปค๊ฐ ๋ ์ ์๋ ์ ์ผํ SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ Pub/Sub ๊ธฐ๋ฅ์ด ์์ง๋ง ํ์ฌ ๊ตฌํ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ Postgres์
๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋น์ถ์ฒํ๊ณ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ ์ง ๋ณด์๋ฅผ ์ธ์ํ๊ฑฐ๋ ํ์์ ํตํด ์ด๋ฅผ ์ํด ๋จ๊ณ๋ฅผ ๋ฐ์ ์๋ ์์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ฌ๋๋ค์ด ํ์๋ก ํ๋ ์ ํ์ ๊ฐ์ง๊ณ ์์ง๋ง ์๋ฌด๋ ์ง์ํ๊ณ ์ถ์ดํ์ง ์์ต๋๋ค. ์ด ์์ ์์ ์ด 18ํ๋ฅผ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด Redis Labs๋ฅผ ๋จ๋ ์ผ๋ก ํ๋ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. :)
๊ทธ๋ฌ๋ ์ปค๋ฎค๋ํฐ์ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋ ํ์ฌ๊ฐ ๊ณ์ ์๋ํ๋๋ก ํฌ์ํ์ง ์์ผ๋ฉด ๋๋ ์๋ฐฉ์ ๋ ๋ ๊ฒ์ด๊ณ ์ต์ ์ ๊ฒฝ์ฐ ์ง๊ธ์ฒ๋ผ ์ฌ๋๋ค์ด ํ๋ก์ ํธ๋ฅผ ๋นํํ๊ฒ ๋ง๋๋ ์ด์ก๊ณผ ๊ด๋ จ๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ด ์ถ์ ๋ ๋น์ฐธํ๊ฒ ๋ง๋ค๊ณ ์ฌ๊ธฐ๋ฅผ ๋จ์ด๋จ๋ฆฝ๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๋ฌ ํ๋ก์ ํธ์์ redis ๋ธ๋ก์ปค์ ํจ๊ป celery๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ทธ๊ฒ์ ์์กดํ๊ณ ์์ง๋ง ๊ทธ ์๊ฒฌ์ ๊ฐ๋ ฅํ ๋์ํฉ๋๋ค. ๋์ ์์ค์ ํ์ง์ ์ ์งํ ์ ์๋ค๋ฉด ์๋ฌ๋ฆฌ๋ผ๋ ์ด๋ฆ์ ๋ถ๋ฆฌ๊ณ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ๋ถํํ๊ฒ ๋ง๋ค ๋ฟ์ ๋๋ค.
์๋ ํ์ธ์. ์ ๋ Redis Labs์์ ์ผํ๋ฉฐ ์ต๊ทผ๊น์ง ์ ๋ฌ๋ฆฌ ์ฌ์ฉ์์์ต๋๋ค. @thedrow ๊ฐ ์ด ์ฌ์ค์
@dvirsky ์ ๋ง์ฐฌ๊ฐ์ง๋ก Redis์ ๋ฐ์ผ๋ฉฐ , ์ด ๋ฐฑ์๋๋ฅผ ์ง์ํ ์ ์๋ค๋ฉด(์๋ฅผ ๋ค์ด) Redis ์ธก์์ ์ต์์ ์๋ฃจ์ ์ ์ฐพ๋ ๋ฐ ์ฐธ์ฌํ๊ณ ์ ์ฌ์ ์ผ๋ก ๊ตฌํ์์ ํน์ ์ฌํญ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด Redis ๋ฉ์์ง ์ง์์ ํ์ฅํฉ๋๋ค. HA ์ง์ ๊ฒฝํ์ ๊ฐ๊ธฐ ์ํด ์ด๋ ์์ ์์ Sentinel/Redis Cluster๋ฅผ ์ฌ์ฉํ๋ ๋ฐฑ์๋์ ๊ธฐ๋ฅ์ ๊ฐ์กฐํ ์๋ ์์ต๋๋ค. ํ์ฌ ํ์ํ ๋ ธ๋ ฅ์ ํ๊ฐํ๊ณ ์๋ ๋น ๋ฅธ ์์ผ ๋ด์ ์ข์ ์์์ด ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด๊ฒ์ ์ ๋ง ์ข์ ์์์ ๋๋ค! ๋๋ ๋น์ ์ด ๊ทธ๊ฒ์ ์ปค๋ฐํ๊ธฐ ์ ์ ๊ด๋ จ๋ ์์ ์ ์๊ณ ์ถ์ดํ๋ค๋ ๊ฒ์ ์์ ํ ์ดํดํฉ๋๋ค :)
์ง๊ธ ์ฌ๊ธฐ ์๋ฒฝ 3์์ด๊ณ ๋ฌธ์ ๋ชฉ๋ก์ ์์งํ์ง ์์์ง๋ง ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์งง์ ๋ฉ๋ชจ๊ฐ ์์ต๋๋ค.
Celery๋ Redis์ ๋ํ ์ธํฐํ์ด์ค๋ก ๊ตฌํ๋๋ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ๋์ ์ ์ํ์ง ์์ต๋๋ค.
AMQP API๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ฐ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฉ์์ง์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฆ-๋๊ธฐ์ด ๋ฉ์์ง, ๊ฒ์/๊ตฌ๋
๋ฐ ์ฃผ์ ๋ผ์ฐํ
. ํ ํฝ ๋ผ์ฐํ
์ ์๊ฒฉํ ์๊ตฌ ์ฌํญ์ ์๋์ง๋ง ๋๋จธ์ง๋ 1) ์์
๋ฉ์์ง ์ฒ๋ฆฌ, 2) ๋ชจ๋ํฐ๋ง ์ด๋ฒคํธ ๋ณด๋ด๊ธฐ/๋ฐ๊ธฐ, 3) ์์
์์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ์ฌ ๊ด๋ฆฌํ๊ธฐ(์: ์ข
๋ฃ/๋์์ฑ ์ฆ๊ฐ ๋ฑ)์ ๊ฐ์ Celery์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ค์ํฉ๋๋ค. ).
1) ์์ ์ ๋ํด ์์ ์๋ฅผ ์ฐจ๋จํ์ง ์๋๋ก ๋น๋๊ธฐํ๋์ด์ผ ํฉ๋๋ค.
ํ์ฌ ๋ฒ์ ์ ๋๊ธฐ์ redis-py ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ๋ง๋ค๊ธฐ ์ํด ํดํนํ๋ค.
๊ทธ๊ฒ์ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฉ์์ง๋ฅผ ์๋นํ์ง๋ง ํด๋ผ์ด์ธํธ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ์ ํํ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฌ์ฉํ ์ ์๋ ๋น๋๊ธฐ redis ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ ์์ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์ ์๋ Tornado/asyncio ๋๋ ์์ ์์
์ ๋ง์ด ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ต์
์ ๊ฒฝ์ฐ์๋ ๊ทธ๋ ์ง ์์ ์ ์์ต๋๋ค.
๋๋ฌด ๊น๋ค๋ก์.
2) ์ฐ๊ฒฐ ๊ด๋ฆฌ
์ฐ๋ฆฌ๋ ์์
์ ์๋นํ๋ ํ๋์ ์ฐ๊ฒฐ๊ณผ pubsub๋ฅผ ์ํํ๋ ํ๋์ ์ฐ๊ฒฐ, ๊ทธ ๋ค์ ํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ฉ์์ง ํ์ธ ๋๋ ํ์ธ๋์ง ์์ ๋ฉ์์ง ๋ณต์๊ณผ ๊ฐ์ ๋์ญ ์ธ ์์
์ ์ํํ๊ธฐ ์ํ ์ฐ๊ฒฐ ์ ์ฌ๊ธฐ์ ์ค๋ฅ ์ฒ๋ฆฌ์ ๊ด๋ จํ์ฌ ์ฝ๊ฐ์ ํผ๋์ด ์์ผ๋ฉฐ ์ฌ์ฉ ํ ๋ชจ๋ ์ฐ๊ฒฐ์ ๋ซ์ง ์์ ์ ์์ต๋๋ค.
3) ๋ฉ์์ง ์์ ํ์ธ
๋ฉ์์ง๋ ํ์ธ๋ ํ์๋ง ์๋ฒ์์ ์ ๊ฑฐ๋๋ฉฐ ๋ชจ๋ ๋ฉ์์ง ์๋น์๊ฐ ๋ฉ์์ง๋ฅผ ๋ณต์ํ๋ ค๊ณ ์๋ํ๋ ๊ฐ์์ฑ ์ ํ ์๊ฐ์ด ์์ต๋๋ค. ๊ธ์, ์๋ง์ด์ผ.
๋์ค์ ๋ ์์ธํ ์ค๋ช
ํ ์ ์์ต๋๋ค.
@ask ๋๋ถ์ "1" ์ง์ ์ ๋ํด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ๋์ ๋ธ๋ก์ปค ๋ด๋ถ์์ ์ง์ ๋ณด๋ด๋ ๋ช ๊ฐ์ง ๋ช ๋ น์ ํ์ํ ์ต์ํ์ ๋น๋๊ธฐ Redis ์ง์์ ์ง์ ๊ตฌํํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์์ต๋๋ค.
๋จ 2๊ฐ, ๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ๋ค๋ฅธ ์์ ๋ฌธ์ ๋ ๊ณง ์๋ฃจ์ ์ด ํ์ํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ ์๋ํ์ง๋ง ๋ฉ์์ง ์น์ธ์ผ๋ก ์ธํด ๋ฉ์์ง๊ฐ ์์ค๋ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ง๋ง ์น์ธ ์๋ฎฌ๋ ์ด์ ์ด์ ์ ์ํฉ์ด ํจ์ฌ ๋ ๋๋นด๊ธฐ ๋๋ฌธ์ ์์๋ฆฌ์คํธ ํญ๋ชฉ์ ๋๋ค. ์์ ์๋ ๋๊ธฐ์ Redis ํด๋ผ์ด์ธํธ์ ์ํด ์ฐจ๋จ๋ ์ ์์ผ๋ฉฐ, ์ด๋ก ์ธํด ์ฑ๋ฅ์ด ์ ํ๋๊ณ ๋๋ฌธ ๊ฒฝ์ฐ์๋ ์์ ์๊ฐ ์ค๋จ๋ฉ๋๋ค.
1) ์์ ์ ๋ํด ์์ ์๋ฅผ ์ฐจ๋จํ์ง ์๋๋ก ๋น๋๊ธฐํ๋์ด์ผ ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ํ์ธํ ๊ฒฐ๊ณผ ๋น๋๊ธฐ redis ํด๋ผ์ด์ธํธ๋ ์๋ฒฝํ์ง ์์์ต๋๋ค(ํ ๋ค์ด๋์ ๋ํ ๋ช ๊ฐ์ง๊ฐ ์์). ์ด๋ฌํ ์ํฉ์์ ๋ด๊ฐ ์ฌ๋ฌ ๋ฒ ์ํํ ๊ฒ์ ์ค๋ ๋ ํ ์คํ๊ธฐ์ ํจ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ redis-py๊ฐ ๋น๋๊ธฐ ํด๋ผ์ด์ธํธ์ฒ๋ผ ์๋ํ๋๋ก ๋ง๋๋ ๊ฒ์ด์์ต๋๋ค. ๋์ ์์ ์ด ๋๋ฌด ๋ง์ง ์๊ณ ๋ช ๊ฐ์ ์ค๋ ๋๊ฐ ์ํํ๋ ํ ๋น๋๊ธฐ ํด๋ผ์ด์ธํธ๋ณด๋ค ๋ ์ ์๋ํฉ๋๋ค.
ํธ์ง: ๋๋ ์์ง ํ์ด์ฌ์ asyncio๋ก ์ง์ ์์ ํ์ง ์์์ง๋ง, ๋ด๊ฐ ๋ณธ ๋ฐ๋ก๋ ํ ๋ค์ด๋์ ๋งค์ฐ ์ ์ฌํ๋ฏ๋ก ์ด ํจํด์ ์๋ง๋ ์ฝ๊ฒ ํ ์ ์์ ๊ฒ์ ๋๋ค.
@dvirsky ์ฐ๋ฆฌ๋ ๋ํ fork
๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ค๋ ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Python์ ์ด ๊ฒฝ์ฐ๋ฅผ ์ง์ํ์ง ์์ผ๋ฉฐ cpython์ฉ ํจ์น๊ฐ ์์ฑ๋ ๊ฒฝ์ฐ์๋ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์ ํ๋ ค๋ฉด ๊ธฐ์กด Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ต์ํ C ํ์ฅ์ ์กฐ์ฌ์ค๋ฝ๊ฒ ํจ์นํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ง ์ ์ Python ๋ฒ๊ทธ ์ถ์ ๊ธฐ์์ ์คํ๋์์ผ๋ฉฐ ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋น๋๊ธฐ I/O๋ก ๋ง์ด๊ทธ๋ ์ด์
์ ์ํํ ์ด์ ์
๋๋ค. ๋ํ ํต์ฌ ๋น๋๊ธฐ I/O ์ง์์ด ํฌํจ๋ Python์ ๋ฏธ๋์ด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๊ณณ์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
@antirez ๋ค์:
ํฌ์ธํธ "1"์ ๋ํด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ๋์ ๋ธ๋ก์ปค ๋ด๋ถ์์ ์ง์ ๋ณด๋ด๋ ๋ช ๊ฐ์ง ๋ช ๋ น์ ํ์ํ ์ต์ํ์ ๋น๋๊ธฐ Redis ์ง์์ ์ง์ ๊ตฌํํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์์ต๋๋ค.
๋๋ ๊ทธ๋ ๊ฒํ์ง ์์ ๊ฒ์ ๋๋ค. redis-py์ ๋๋ถ๋ถ์ ์ฝ๋๋ ๋ช ๋ น ๊ตฌํ์ด ์๋ ๋คํธ์ํน ๋ฐ ์ฐ๊ฒฐ ๊ด๋ฆฌ๋ฅผ ์ค์ฌ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค...
@dvirsky ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ํด ์๋ฒฝํ๊ฒ ์๋ํ๋ ์ฐ๊ฒฐ ๊ด๋ฆฌ ์ ๋ค๋ฆญ์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์๊ฐ์ ๋ญ๋นํด์๋ ์ ๋ฉ๋๋ค. ๋คํธ์ํน์ด ๋ง์ง๋ ์์ง๋ง ๋๋ถ๋ถ์ด ํ๋กํ ์ฝ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์์ผ๋ฉฐ ๊ฑฐ์ โโ์๋์ผ๋ก ๋๋ ๊ธฐ์กด redis ํด๋์ค์ ์ฐ๊ฒฐํ์ฌ ์ด๋ฏธ ์ํํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@ask ์, redis ํ๋กํ ์ฝ์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ธฐ ์ํ ์ ์ฉ C ํ์ฅ์ธ hiredis๊ฐ ์์ต๋๋ค. IIRC๋ ๋น๋๊ธฐ ํด๋ผ์ด์ธํธ์์๋ ์๋ํ ์ ์์ต๋๋ค. ์ง๊ธ๊น์ง redis๋ฅผ ๋น๋๊ธฐํํ๊ธฐ ์ํด ์ด๋ค ์ ๋ต์ ์ ํํ์ จ์ต๋๊น?
์ด์จ๋ ์ต๊ทผ ๋น๋๊ธฐ ํด๋ผ์ด์ธํธ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํด๋ด์ผ ํฉ๋๋ค. ์ ๋ ์ง๋ 1๋ ๋ฐ ๋์ ํ์ด์ฌ ์์ ์ ๋ง์ด ํ์ง ์์์ต๋๋ค. https://github.com/leporo/tornado-redis ๊ฐ ๊ทธ๋ค์ง ํ์ฑํ๋์ง ์์์์ ์ ์ ์์ต๋๋ค.
์ ๋ต์ด ๋ง์ง ์์ต๋๋ค. ์ด๋ฒคํธ ๋ฃจํ์ ์์ผ์ ์ถ๊ฐํ๊ณ ์๋ฅผ ๋ค์ด BRPOP๋ฅผ ๋๊ธฐ์ ์ผ๋ก ๋ณด๋ธ ๋ค์ ์์ผ์ ์ฝ์ ์ ์์ ๋๊น์ง ๊ธฐ๋ค๋ ธ๋ค๊ฐ ์๋ต์ ๋๊ธฐ์ ์ผ๋ก ์ฝ์ต๋๋ค. ;)
์๋ต์ ํ์ฑํ๋ ๋์ค์ ๋ค์ ์์ํ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์
@dvirsky ํ๋กํ ์ฝ ๊ตฌ๋ฌธ ๋ถ์ ์ด์ธ์ ๋ค๋ฅธ ์ฉ๋๋ก hiredis๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ gevent/eventlet๊ณผ์ ํธํ์ฑ ๋ฌธ์ (๋ค์ค ์ฒ๋ฆฌ ๋์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ)๊ฐ ๋ฐ์ํ๊ณ Celery๊ฐ PyPy์์ ์คํ๋๋ ๊ฒฝ์ฐ ์์์ ์ด์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
@dvirsky ๋ํ py-hiredis๋ ํ์ฌ ํ๋กํ ์ฝ ๊ตฌ๋ฌธ ๋ถ์ ์ด์ธ์ ๊ธฐ๋ฅ์ ๋ ธ์ถํ์ง ์์ต๋๋ค.
Python์ ์ด๋ ์์ ์์ ์ ์ ํ ๋น๋๊ธฐ redis ํด๋ผ์ด์ธํธ๊ฐ ํ์ํ ๊ฒ์ด๋ฏ๋ก ์ ์ ํ ๊ฒ์ ์์ํ๋ ๊ฒ์ด ๋์ ์๊ฐ์ ์๋๋๋ค. ์๋ฅผ ๋ค์ด redis-py์์ ์ผ๋ถ ํ๋กํ ์ฝ ๊ตฌ๋ฌธ ๋ถ์ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํฉ๋๋ค.
๋น์ ์ ์ง๊ธ gevent๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
@dvirsky ์ฐ๋ฆฌ๋ ๋น๋๊ธฐ I/O๋ก gevent, eventlet ๋ฐ ๋ฉํฐํ๋ก์ธ์ฑ(prefork)์ ์ง์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ๋๋ฅผ ์ง์ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ํ๋๋ฅผ ์ง์ํฉ๋๋ค.
์, gevent๊ฐ ์์
์ ๋ ์ ํฉํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ์คํฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ธฐ๋ง ํ๊ฑฐ๋ HTTP ์์ฒญ์ ์ํํ ๋.
gevent์์ FD๋ฅผ ๋
ธ์ถํ๊ณ ๋ฑ๋กํ๋ ๊ฒ์ ์ฝ์ง๋ง py-hiredis์์ ์ถ๊ฐ ์์
์ด ํ์ํฉ๋๋ค.
@dvirsky ๋ค์์ https://gist.github.com/GuoJing/5875326
gevent์ ํ๋ ฅํ๋ ค๋ฉด FD๋ฅผ ๋
ธ์ถํด์ผ ํฉ๋๋ค.
์ ๋ ์ต๊ทผ์ Redis์ ๋ํ celery ์ง์์ ๋๋ฌ์ผ ๋ฌธ์ ์ ๋ํด ์๊ฐ๋ฐ์๊ณ ์ฒ ์ ํ ๋ถ์์ ์๋ฃํ์ง๋ ์์์ง๋ง asyncio๋ฅผ ์ฌ์ฉํ์ฌ python redis ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑ/์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ์ข์ ์๊ฐ์ฒ๋ผ ๋ค๋ฆฌ์ง๋ง ์ต๊ทผ ๋ฒค์น๋งํฌ์์๋ ๊ทธ๊ฒ ๊ฐ์ฅ ์ข์ต๋๋ค. ๊ฐ๋ฅํ ํ ๋ง์ ์ฑ๋ฅ์ ๋์ด๋ด๊ธฐ ์ํด asyncio+libuv ์์ ๊ตฌํ๋์์ต๋๋ค.
์ฐธ์กฐ๋ฅผ ์ํด
์ด ์ ์ฅ์ ๋ฐ๋ํ๊ฑฐ๋ ๋ฌธ์ ๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ๊ฐ๋ฐ์์ด์ ์ฌ์ฉ์๋ก์ Redis ํด๋ผ์ด์ธํธ์ ๋ํ ์ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด libuv์ ์ ์ ์ผ๋ก ์์กดํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ต๋ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ๊ฒ์ ์ค์ ๋ก ๋ฐฉ์งํ ์ ์์ผ๋ฉฐ ๊ณ ์ฉ์ ํ์์ ๋๋ค. libuv์๋ ์ค์ ๋ก ์ด๋ค ๊ฒฝ์ฐ์๋ io ์๋๋ฅผ ๋ฆ์ถ๋ ์๋ง์ ์ผ์ด ์์ต๋๋ค. ioredis๋ Node๋ฅผ ํตํด ์ด๋ฅผ ์ํํ์ง๋ง ์ค์ ๋ก๋ ์ฑ๋ฅ์ด ์ข์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ด๊ฐ ์์ํ๋ ์๋ฃจ์ ์๋ ํผํฉ ๊ณ ์ฉ ๋น๋๊ธฐ ๊ตฌํ์ด ์์ต๋๋ค. (๋ค๋ฅด๊ฒ ๋งํ๋ฉด ์๋ง์ ์ ํ๊ณผ ๋ฒค์น๋งํน์ ํตํด ๋ง์ ๋์์ ์๋ํด์ผ ํฉ๋๋ค.)
@merl-dev ๋ฌธ์ ๋ ์ฌ์ ํ PyPy์
๋๋ค. ์ฌ๊ธฐ์ hiredis+cffi๋ ์์ํ python ํ๋กํ ์ฝ ํ์ ๊ตฌํ๋ณด๋ค redis ํ๋กํ ์ฝ์ ํ์ฑํ ๋ ๋ ๋๋ฆฝ๋๋ค.
์ ์ด๋ ๋ด ๋ฒ์ ์๋ redis-py์ ๋ํ ๋ช ๊ฐ์ง ํ
์คํธ ์คํจ๊ฐ ์์ต๋๋ค. https://github.com/redis/hiredis-py/pull/46 ์ฐธ์กฐ
๊ณ ์ฉ๋ ํด๋ผ์ด์ธํธ๋ฅผ CPython ํ์ฅ์ผ๋ก ์์ฑํ๋ ๊ฒ์ ์ ์ ์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค. ๋๋ ์ฌ์ ํ CFFI์ ๋ํด 100% ํ์ ํ์ง ๋ชปํฉ๋๋ค.
๊ฐ์ ์ก์
@thedrow ์ด๊ฒ์ ๋๋ฅผ ์๊ธฐ์์ผ์ค๋๋ค - ์๋ก์ด redis ์คํธ๋ฆผ ๊ธฐ๋ฅ์
์ฐ๋ฆฌ๋ํ์ง ์์๋ค. ํ์ฌ๋ก์๋ redis ๋ธ๋ก์ปค๋ฅผ ๋ฆฌํฉํ ๋งํ ์ ์๋ ๋ฅ๋ ฅ์ด ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฌ๋ฌ๋ถ์ด ๊ทธ๋ ๊ฒ ํ ์ ์๋ ์ฌ์ ๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค.
@theedrow ์ฐ๋ฆฌ๋... ์๋ฌด๊ฒ๋ ์ฝ์ํ์ง ์์ ์ ์์ง๋ง Redis ์ํ๊ณ๋ฅผ ์ฌ์ ์ ์ง์ํ๋ ๋ฐ ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ํ ์ ํ ์ ์์ต๋๋ค.
@dvirsky ์ด ์ ์์ ๋ง์ ํ์๋ ๊ฑด๊ฐ์? ๋ฐ๋ผ์ TAPPEND
๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ธฐ์ด์ ์ถ๊ฐํ๊ณ TREAD + TACK
๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ธฐ์ด์์ ์ ๊ฑฐ, ์ฒ๋ฆฌ ๋ฐ ์น์ธํ ์ ์์ต๋๋ค.
@georgepsarakis ๋ ์ด์ ์ ์์ด ์๋๋ฉฐ ์๋ํ๋ฉฐ ์ ๋์ฌ๋ X, ์ฆ XADD์ ๋๋ค. https://www.youtube.com/watch?v=ELDzy9lCFHQ ์ฐธ์กฐ
๊ทธ๋ ๋ค๋ฉด redis ๋ธ๋ก์ปค ์ง์์ ๋ํ ์ต์ข ์์ฒญ์ ๋ฌด์์ ๋๊น? ๊ณง ์ฌ์ฉ์ด ์ค๋จ๋ ์์ ์ ๋๊น?
์ง๊ธ์ ์๋๋๋ค.
์ปค๋ฎค๋ํฐ๊ฐ ์ด๋ ์ชฝ์ผ๋ก ๊ธฐ์ธ๊ณ ์๋์ง ์ ์ ์์์ง๋ง ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๊ณ ์๊ณ Redis๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์๊ฐ์ผ๋ก ์ธํด ๋ธ๋ก์ปค๋ก Redis์ ํจ๊ป ๊ฐ๊ธฐ๋ฅผ ์ฃผ์ ํฉ๋๋ค. ์๊ฐ?
redis ๋ธ๋ก์ปค๊ฐ ๊ฐ๊น์ด ์ฅ๋์ ๊ณ์ ์ ์ง๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค. ๋๋ฌด ๋ง์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ์ค๊ณํฉ๋๋ค.
@ermik ์ ๊ด๋ จ ๋ฌธ์ ์ ๋ํด ๋์์
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์. ์ ๋ Redis Labs์์ ์ผํ๋ฉฐ ์ต๊ทผ๊น์ง ์ ๋ฌ๋ฆฌ ์ฌ์ฉ์์์ต๋๋ค. @thedrow ๊ฐ ์ด ์ฌ์ค์