๋ฌด๋ถ๋ณํ Microservices ๋์ ์ผ๋ก ์ธํ P95 Latency 462% ์ฆ๊ฐ ๋ฐ ์ด์ ๋น์ฉ 4.5๋ฐฐ ์์น
๐คฏ Microservices Destroyed Our Startup. Yours Could Be Next.
AI ์์ฝ
Context
Rails์ Postgres ๊ธฐ๋ฐ์ Monolith ๊ตฌ์กฐ๋ก P95 Latency 80ms์ 99.95%์ ๊ฐ์ฉ์ฑ์ ์ ์งํ๋ 12์ธ ๊ท๋ชจ์ ํํ ํฌ ์คํํธ์ ์ฌ๋ก์. ๋จ์ํ ํ์ฅ์ฑ ์ฐ๋ ค๋ก ์ธํด ์กฐ์ง ๊ท๋ชจ์ ๋ฌด๊ดํ Microservices ์ ํ์ ๊ฐํํ๋ฉฐ ์ํคํ ์ฒ ๋ณต์ก๋๊ฐ ๊ธ์ฆํ ์ํฉ์.
Technical Solution
- Monolith๋ฅผ 40๊ฐ์ Microservices๋ก ๋ถํ ํ์ฌ ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ ค๋ ์๋
- gRPC ๋์ ์ ํตํ ์๋น์ค ๊ฐ ํต์ ์๋ ์ต์ ํ ๋ฐ REST ์ค๋ฒํค๋ ์ ๊ฑฐ ์๋
- Istio Service Mesh ์ ์ฉ์ ํตํ ์๋น์ค ๊ฐ์์ฑ ํ๋ณด ๋ฐ ํธ๋ํฝ ์ ์ด ์ค๊ณ
- Kafka ๊ธฐ๋ฐ Event-driven Architecture ๊ตฌ์ถ์ผ๋ก ๋ฐ์ดํฐ ๋๊ธฐํ ๋ฐ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ตฌํ
- EKS ๊ธฐ๋ฐ Kubernetes ํ๊ฒฝ ๊ตฌ์ถ์ ํตํ ์ธํ๋ผ ํ์ฅ์ฑ ํ๋ณด ์๋
- ์ต์ข ์ ์ผ๋ก ๋ณต์ก๋ ์๊ณ์ ๋๋ฌ ํ 30๊ฐ ์๋น์ค๋ฅผ 3๊ฐ์ Macroservices๋ก ์ฌํตํฉํ๋ Modular Monolith ๊ตฌ์กฐ๋ก ํ๊ท
์ค์ฒ ํฌ์ธํธ
- ์์ง๋์ด 80๋ช ์ด์์ ๊ท๋ชจ ํน์ ์๋ก ์์ ํ ๋ค๋ฅธ Scaling Profile์ด ์กด์ฌํ๋์ง ๊ฒํ - ๋ถ์ฐ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํ Saga Pattern ๋ฐ Idempotency Key ๊ตฌํ ์ญ๋ ํ๋ณด ์ฌ๋ถ ํ์ธ - ๋จ์ํ ์ฑ๋ฅ ์ ํ๊ฐ ์ธ๋ฑ์ค ์ต์ ํ๋ ์ฟผ๋ฆฌ ํ๋์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅํ ์์ค์ธ์ง ์ฐ์ ๊ฒ์ฆ - ์ํคํ ์ฒ ๋ณ๊ฒฝ ์ 'Anti-goals'๋ฅผ ๋ช ๋ฌธํํ์ฌ ๋ฌด๋ถ๋ณํ ๊ธฐ์ ๋์ ๋ฐฉ์ง