๐ RabbitMQ ์ ์ฉ ๊ณ๊ธฐ
ํ์ฌ ์งํ์ค์ธ ๋น ๋ฐ์ดํฐ ํ๋ก์ ํธ์์ Message Queue๋ฅผ ์ ์ฉํ ์ผ์ด ์๊ฒผ๋ค.
์ฌ์ฉ์ ์ ์ & ๋ฐ์ดํฐ ๋ณด์ ์ ํตํ ๋น ๋ฐ์ดํฐ ์ถ์ฒ ์์คํ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด
MBTI ํ ์คํธ๋ฅผ ์ค๋ง์ฃผํ 'JUBTI(้ ๋นํฐ์์ด)'๋ฅผ ๊ฐ๋ฐํ๋๋ฐ,
ํ ์ฌ์ฉ์๊ฐ ํ ์คํธ๋ฅผ ๋ง์น ๋๋ง๋ค
๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ SpringBoot API๋ก ๋ฐ์ Flask ์๋ฒ์ ๋ณด๋ด์ ๋ฐ์ดํฐ ๋ณด์ ์์ ์ ์งํํด์ผ ํ๋ค.
(API ์๋ฒ๋ Spring Rest API, Analysis ์๋ฒ๋ Flask๋ก ๊ตฌ์ฑ)
๊ทธ๋ฐ๋ฐ ํด๋น ํ ์คํธ๋ ๋นํ์์ผ๋ก ์งํํ ์ ์๋ ์๋น์ค์ด๋ฉฐ,
์นด์นด์คํก ๊ณต์ ํ๊ธฐ ๊ธฐ๋ฅ๊น์ง ์ถ๊ฐํ์ฌ ์ต๋ํ ๋ง์ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ํ ์คํธ ํ ์ ์๋๋ก ํ๊ธฐ์
๋์์ ๋ง์ ์ฌ์ฉ์๊ฐ ๋ชฐ๋ฆด ๋์ ์ฑ๋ฅ์ ๋ฌธ์ ์ ์ด ์์๋์๋ค.
๐ก ์ฐ๋ฆฌ๋ ์ฒซ ๋ฒ์งธ ํด๊ฒฐ ๋ฐฉ์์ผ๋ก ์ค์ผ์ค๋ฌ๋ฅผ ์๊ฐํ๋ค.
ํ
์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ผ๋ฉด ์ฐ์ DB์ ์ ์ฅํ๊ณ , ์ค์ผ์ค๋ฌ๋ฅผ ์ด์ฉํ์ฌ
์ ํด์ง ์ฃผ๊ธฐ๋ง๋ค ํ ๋ฒ์ฉ Flask ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด์ ์์ธ ๋ฐ์ดํฐ๋งํผ ๋ฐ์ดํฐ ๋ณด์ ์ ์งํํ๋ ๋ฐฉ์!
์์ ๊ฐ์ด ์งํํ๋ฉด ๋ฌธ์ ๋ ์์ง๋ง, ๊ณ์ํด์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณด์ ์ ์งํํ๋ ๊ฒ ๋ณด๋ค
์ถ์ฒ ์์คํ ์ฑ๋ฅ ๊ฐ์ ์ ์ ๋๊ฐ ์์ฝ๋ค๋ ๊ฒฐ๋ก ์ ๋์ถํ๋ค.
๐ก ์๋ก์ด ๊ฐ์ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก MQ๋ฅผ ์ ์ฉํ์ฌ MSA๋ฅผ ๊ตฌ์ถํ์๋ ๊ฒ!
๋์ฑ ์ ๊ตํ ๋ฐ์ดํฐ ๋ณด์ ๋ฐ ๋น ๋ฐ์ดํฐ ์ถ์ฒ ์ฑ๋ฅ ๊ฐ์ ์ ์ํด
์ค์๊ฐ์ผ๋ก ํ ์คํธ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ Flask๋ก ๋ณด๋ด๊ณ ๊ณ์ํด์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ๋ ๋ฐฉ์์ ์งํค๊ณ ์ ํ๋ค.
๋ฐ๋ผ์ ๋ง์ ์ฌ์ฉ์๊ฐ ๋์์ ์ ์ํ์ ๋๋, API ์๋ฒ๊ฐ ์์์ ์ด๋ป๊ฒ ์๋ํ๊ณ ์๋ ๊ด๊ณ์์ด
Flask ์๋ฒ๋ API์์ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ค์ ์์๋๊ณ ๊ณ์ํด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ชฉํ๋ก ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ ์ด์ ๋ก RabbitMQ ์ ์ฉ์ ๊ฒฐ์ ํ๋ค.
1๏ธโฃ ๋ฐ์ดํฐ๋ฅผ ์์๋ ๊ณณ ํ์ -> Message Queue ์ด์ฉํ์.
2๏ธโฃ Spring ์๋ฒ์ Flask ์๋ฒ์ ํต์ ์ด ํ์ -> AMQP๋ฅผ ์ง์ํ๋ RabbitMQ ์ด์ฉํ์.
๐ RabbitMQ์ ์ฐ์
RabbitMQ๋ AMQP๋ฅผ ๊ตฌํํ ๋ฏธ๋ค์จ์ด๋ก,
์๋น์ค์ ์๋น์ค ์ฌ์ด์ ์กด์ฌํ๋ฉฐ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
๋ฐฑ์๋ ์์์๋ ํ๋ก ํธ์ ๋ฐฑ์ผ๋ก ๋๋ ์ ์๋๋ฐ, ๋ณดํต ํ๋ก ํธ๋ API, ๋ฐฑ์ Analysis ์๋ฒ๋ก ๋ณธ๋ค.
์ด ๋, ๋ฐฑ์๋์ ํ๋ก ํธ, ๋ฐฑ์ ํ ์๋ฒ์์ ๋๋ฆฌ๋ ๊ฒ์ ์ํํ ์ ์๋ค.
๊ทธ ์ด์ ๋ ์ฌ์ฉ์๊ฐ ๋ง์์ง ๊ฒฝ์ฐ ๋ถ์ ์๋ฒ๊ฐ ์ฌ๋งํ๊ฑฐ๋,
๋ฐ๋๋ก ๋ถ์์ ์์ด ๋ง์์ ธ์ ๋ถ์ ์๋ฒ๊ฐ ์ฌ๋งํ๊ฒ ๋ ์ API๊น์ง ํจ๊ป ์ฌ๋งํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๐ ์์กด์ฑ์ด ๋๋ฌด ๋์์ ์๊ธฐ๋ ๋ฌธ์ !
๋ฐ๋ผ์ ์๋ฒ๋ ๋ถํ ํด์ฃผ๊ณ , ๋ถํ ๋ ์๋ฒ๋ค์ ๋ฉ์์ง๋ฅผ ํ์ ์ ์ฌํ์ฌ ์ํตํ๋๋ก ํ๋ ๊ฒ์ด
๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ ์ธก๋ฉด์์ ์ข๋ค. ์ด๊ฒ ๋ฐ๋ก MSA(๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ) ๐ฅ
์ด ๋ RabbitMQ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ์์ง ํ๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ํด์ค๋ค.
RabbitMQ๋ AMQP๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ์ ํจ์จ์ ์ธ ๋ฉ์์ง ๊ตํ์ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
AMQP ์ด์ ์์ฉํ๋ MQ๋ค์ ํ๋ซํผ ์ข ์์ ์ธ ์ ํ์ด ๋ง์์ ๋ฉ์์ง ๋ธ๋ฆฟ์ง๊ฐ ๋ฐ๋ก ํ์ํ๊ณ ,
๊ทธ๋ก ์ธํ ์๋ ์ ํ๊ฐ ๋ฐ์ํ๋ค.
๐ RabbitMQ ์ ์ฉ ๋ฐฉ์
0๏ธโฃ Spring ์๋ฒ๋ ํ๋, Flask ์๋ฒ๋ ๋ ๊ฐ๋ฅผ ๋์
1๏ธโฃ ์ฌ์ฉ์๊ฐ ํ ์คํธ๋ฅผ ์งํ
2๏ธโฃ ํด๋น ๊ฒฐ๊ณผ๋ฅผ Spring API๋ก ๋ฐ์
3๏ธโฃ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ RabbitMQ๋ก ์ ์ฌ (Spring์ Producer ๊ตฌํ)
4๏ธโฃ ์ ์ฌ๋ ๋ด์ฉ์ ๋๊ฐ์ Flask ์๋ฒ๊ฐ ์ฐจ๋ก๋๋ก ๊ฐ์ ธ๊ฐ (Flask์ Consumer ๊ตฌํ, prefetch count 1๋ก ์ค์ )
๊ฒฐ๊ณผ
Spring API์์๋ ๊ณ์ํด์ ์ฌ์ฉ์์ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ RabbitMQ๋ก ์ ์ฌํ๊ณ ,
API์ ๋์ ์ฌ๋ถ์ ๊ด๊ณ ์์ด Flask์์๋ ๊ณ์ํด์ Queue๋ฅผ ์ง์ผ๋ณด๋ฉฐ ์ ์ฌ๋ ๋ฉ์์ง๊ฐ ์์ผ๋ฉด ๊ฐ์ ธ์จ๋ค.
์ ์ฌ๋ ๋ฉ์์ง๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๊ฒฝ์ฐ์๋ Flask ์๋ฒ ๋ ๊ฐ๊ฐ ๋ฉ์์ง๋ฅผ ๋๋ ๊ฐ์ง๋ค.
ex) 1๋ฒ, 2๋ฒ, 3๋ฒ ๋ฉ์์ง๊ฐ ์๋ค๊ณ ํ ๋
1๋ฒ์ Flask1์ด ๋ฐ๊ณ , 2๋ฒ์ Flask2๊ฐ ๋ฐ๋๋ฐ, 1๋ฒ์ด ์ค๋๊ฑธ๋ ค์ 2๋ฒ์ด ๋จผ์ ๋๋๋ค๊ณ ๊ฐ์ ํ๋ฉด
3๋ฒ ๋ฉ์์ง๋ ๋ถ์์ด ๋๋ Flask2์ด ๋ฐ์ ๋ถ์์ ์์ํ๋ค.
๐ MQ๋ฅผ ํตํด MSA๋ฅผ ๊ตฌ์ถํจ (๊ฐ ์๋ฒ์ ์์กด์ฑ ์ค์)
๐ ๊ณ์ํด์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ ๋ณด์ ์ ์งํํจ์ผ๋ก์จ ์ถ์ฒ ์์คํ ์ ์ ํ์ฑ ๋์
๐ RabbitMQ์ ์์ธํ ๊ตฌํ ๋ฐฉ์์ ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!
https://seolhee2750.tistory.com/267
์ฐธ๊ณ
- https://kamang-it.tistory.com/entry/AMQPRabbitMQRabbitMQ%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0%EC%99%80-%EC%84%A4%EC%B9%98%EB%B0%A9%EB%B2%95-1
- https://xzio.tistory.com/2024
'1๏ธโฃ Web > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Web] ๋ก์ปฌ ํ๊ฒฝ์์ SpringBoot์ Flask์ RabbitMQ ์ ์ฉํ๊ธฐ (0) | 2023.04.02 |
---|---|
[SpringBoot] Spring ๋น๋ํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ (0) | 2022.04.26 |
[SpringBoot] spring-boot-devtools ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ๋ฐฉ๋ฒ (0) | 2022.04.26 |
๋๊ธ