๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ๊ธฐ์ ์ ์ผ๋ก ๋ง์ ์ด๋ ค์์ด ์๋ฐ๋๋ค.
์๋์ ์ฌ์ง๋ง ๋ณด๋๋ผ๋ ํ๋์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด์ ์์ผ์ ํ ๊ธฐ์ ๋ค์ด ๊ต์ฅํ ๋ง๋ค.
์ค๋์ ์ฌ๊ธฐ์ ๋์จ ๊ธฐ์ ๋ค์ ํน์ง๊ณผ ์ด๋ค ์ญํ ์ ์ํํ๋์ง์ ๋ํด์ ์์๋ณด๋ ค ํ๋ค.
CNCF๊ฐ ์ ์ํ ํ์ค MSA ๊ตฌ์ฑ ์์
CNCF๋ ์ง๋ Cloud Native Architecture ์์๋ ์ ๊น ์ธ๊ธํ Cloud Native Computing Foundation ๋จ์ฒด์ด๋ค.
CNCF ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ง์ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๋๋๋ค.
- API Gateway ํจํด ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Service Mesh ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Container Runtime ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- CI / CD ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Message Queuing ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- RESTful API ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
Data Sync by Messaging
๋๋ถ๋ถ์ ๋ง์ดํฌ๋ก์๋น์ค์์๋ ๋ฉ์์ง ํ๋ฅผ ํ์ฉํ ๋น๋๊ธฐ ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด ๋ฉ์์ง ํ๋ ์ ์ฌ์ฉ๋๋ ๊ฒ์ผ๊น?
๋ฉ์์ง ํ๋ฅผ ์ง์ ํ์ง ์๋๋ค๋ฉด?
์๋ฅผ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
User ์๋น์ค๊ฐ ์กด์ฌํ๋ค.
ํ์ง๋ง ์ด ์๋น์ค๊ฐ ์ฌ์ฉ์๋ค์ด ๋ง์์ง๋ค๊ณ ํด๋ณด์.
๊ทธ๋ผ ์ฐ๋ฆฌ์ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ํด์ ์ํด์ Scale-out ์ ํ๊ฒ ๋๊ณ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ ์ปจํ ์ด๋๊ฐ ์์ฑ๋์๋ค.
์ฌ๊ธฐ์ ๋ฐ์ํ ์ ์๋ ์๋ฌธ์ด ์กด์ฌํ๋ค.
๊ทธ๋ผ ๋์ผํ ์๋น์ค์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ๋์ด ์ ์ฅ๋์ง ์์๊น? ๊ทธ๋ผ ๋๊ธฐํ๋ ์ด๋ป๊ฒ ์ํค์ง?
์ค์ ๋ก ๋ถ์ฐ๋์ด ์ ์ฅ๋๋ค.
๊ฒฐ๊ตญ ์ฌ์ฉ์๋ API Gateway๊ฐ ๋ณด๋ด๋ ์์ฒญ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ, ๋ฌด๊ฒฐํ์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๊ฐ๋ฅ์ฑ์ด ์กด์ฌํ๊ฒ ๋๋ค.
์ด ๋ฐฉ์์๋ ์ฌ๋ฌ ํด๊ฒฐ ๋ฐฉ์์ด ์กด์ฌํ๋๋ฐ, ํ๋์ฉ ์์๋ณด์.
- ํ๋์ ์๋น์ค ์ธ์คํด์ค๊ฐ Scale-Out ๋๋ค ํ๋๋ผ๋ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ
- Message Queue๋ฅผ ์ด์ฉํ๊ธฐ
ํ๋์ ์๋น์ค ์ธ์คํด์ค๊ฐ Scale-Out ๋๋ค ํ๋๋ผ๋ ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ
์ฌ๋ฌ ์ธ์คํด์ค๊ฐ Scale-Out ๋๋๋ผ๋ ๊ถ๊ทน์ ์ผ๋ก ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฌธ์ ๋ ๋์ผํ ์๋น์ค์ด๋ฏ๋ก ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค.
ํ์ง๋ง ์ฌ๋ฌ ์ธ์คํด์ค๊ฐ ๋์ผํ DB๋ฅผ ๋ณด๊ณ ์์ ์ ํ๊ฒ ๋๋ค๋ฉด ํธ๋์ญ์ ๊ณผ Isolation Level์ ๊ดํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
ํธ๋์ญ์ ๊ณผ Isonlation Level ์ ๋ํด์๋ ํด๋น ๋งํฌ๋ฅผ ํตํด ํ์ธํ ์ ์๋ค.
๊ฒฐ๊ตญ ์ด ๋ฌธ์ ๋ณด๋ค ๋ ๊ฐ๋จํ ๋ฌธ์ ๋ฅผ ์ฐพ์์ผ ํ๋ค.
Message Queue ์ฌ์ฉํ๊ธฐ
์์ ๋ฐฉ์์ ๋ฌธ์ ์์ ํธ๋์ญ์ ๊ณผ ๊ณ ๋ฆฝ ์์ค์ ๊ด๋ฆฌํ๋ ๊ฒ ๋ณด๋ค ํจ์ฌ ๊ฐ๋จํ ๋ฐฉ์์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๊ธฐํ๋ฅผ ์ํํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
Message Queue
๋ฉ์์ง ํ์ ์๋น์ค๋ฅผ ํ ์ค๋ก ์ ๋ฆฌํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์กฐ์์ ์ธ์คํด์ค๊ฐ ํ์ฅ๋๋๋ผ๋ ๋ถ์ฐ ์์คํ ๋ฐ ๋ฐ์ดํฐ์ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์๋๋ก ํ๋ ๋ฉ์์ง ๋๊ธฐ์ด ๋ฏธ๋ค์จ์ด์ด๋ค.
์ฃผ๋ก ์ํ์น ์นดํ์นด kafka๋ ๋๋น์ ํ Rabbit MQ์ ๊ฐ์ ๋ฉ์์ง ๋ธ๋ก์ปค๋ฅผ ์ฌ์ฉํด์ ๋ฉ์์ง๋ฅผ ๊ตฌํํ๋ค.
์ด๋ฐ Message Queuing Server ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
- ์ธ์คํด์ค ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ํ์ฌ ํ์ ์๋ฒ์ ๊ตฌ๋
- ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ํ๋ฉฐ ์ค๊ฐ์ ํ์ ์๋ฒ๋ฅผ ๋๋ ๋ฐฉ์
์ด๋ฅผ ์ง์ํ๋ ๋๊ตฌ ๋ฐ ๊ธฐ์
ํ์ฌ ๋ง์ Messaging ๊ธฐ์ ๋ค์ด ์กด์ฌํ๋ค.
์ด๋ CNCF ์ CNCF Cloud Native Interactive Landscape ์์ ๋ ์์ธํ ํ์ธํ ์ ์๋ค.
- Apache Kafka
- RabbitMQ
- Spring Cloud Bus
- Amazon SNS (Simple Notification Service)
- Amazon SQS (Simple Queue Server)
- Active Queue
๋๊ธ