You probably donโt need microservices
Microservices is a great architectural style that helps to scale the system and the organization. But probably you donโt need microservices...
www.thrownewexception.com
๋ง์ดํฌ๋ก ์๋น์ค๋ ์์คํ ๊ณผ ๊ตฌ์กฐ๋ฅผ ํ์ฅํ๋๋ฐ์ ๋์์ด ๋๋ ํ๋ฅญํ ๋ฐฉ์์ผ๋ก ์ต๊ทผ ๊ต์ฅํ ์ธ๊ธฐ์๋ ์ํคํ ์ฒ ์คํ์ผ์ด๋ค. ๋ง์ ์ฑ๊ณตํ ํ์ฌ๋ค(๋ทํ๋ฆญ์ค, Spotify..)์ ํฌํจํ์ฌ ๋๋ถ๋ถ์ ํ์ฌ๋ค์ด ์ด ๋ฐฉ์์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ ๊ณํ์ ๊ฐ์ง๊ณ ์๋ค. ํ์ง๋ง, ๋ช๋ช ํ์ฌ๋ค์ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ๊ฐ์ ธ์ค๋ ์ถ๊ฐ ๋น์ฉ์ ๊ฐ๊ณผํ๊ณ ์๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ์ด์ผ๊ธฐ ํ๊ธฐ์ ์, ์ ์์ ๋ง์ดํฌ๋ก ์๋น์ค ๊ฒฝํ์ ์ด์ผ๊ธฐํ๋ค.
How it started - Is it microservices?
2012๋ ๋๋ โ์ด๋ป๊ฒ ํ๋ฉด ์์ฒ๋ช ์ ์์ง๋์ด์ ์ฒ๋ฐฐ ๋ ๋ง์ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๋๋ก ์ฑ์ฅ์ํฌ ์ ์์๊นโ ๋ผ๋ ๋์ ์ ์ง๋ฉดํ๋ค.
๋๋ ๋น์ โScalability Rules: 50 Principles for Scaling Web Sitesโ ์ฑ ์ ์ฝ๊ณ ์์๊ณ , ๊ทธ ์ฑ ์์ AKF Scale Cube ๋ผ๋ ๋ฐฉ์์ ๋ณด์๋ค.

๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ ํ๋ก๋์ ํ๊ฒฝ์์ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ์คํ๋๋ ๋ฐ์ด๋๋ฆฌ๋ค์ด ํ์ํ์ง ์ค๋ช ํ๋๋ฐ์ ์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์๋ค. ๊ฒ์ ๋ชจ๋์ ํธ๋ํฝ ํจํด์ ์ฅ๋ฐ๊ตฌ๋ ๋ชจ๋์ ํธ๋ํฝ ํจํด๊ณผ๋ ์์ ํ ๋ค๋ฅด๋ค. ์ด ์ปดํฌ๋ํธ๋ค์ ๋ถ๋ฆฌ๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ค. ๊ฒ๋ค๊ฐ ์ด๊ฒ์ ์ฌ๋ฌ ํ๋ค์ด ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ด๊ณ ์์จ์ ์ผ๋ก ์ผํ ์ ์๊ฒ ํด์ค๋ค. ์ด๊ฒ์ ์์ฒ ๋ช ์ ์์ง๋์ด๋ก ํ์ฌ๋ฅผ ์ฑ์ฅ์ํค๋ ๋์ ์ ํด๊ฒฐํ๋๋ฐ์ ๋์์ด ๋์๋ค.
So, whatโs wrong?
๋ง์ดํฌ๋ก ์๋น์ค๋ ๊ทธ ์์ฒด๋ก๋ ๋ฌธ์ ๊ฐ ์๋ค! ๊ทธ๋ฆฌ๊ณ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ์ฐ์ ์ ๋ง๋ณ ํต์น์ฝ์ ์๋ค๋ ์ฌ์ค์ ์์ด๋ฒ๋ฆฐ ๋ฏ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ก๋ ํด๋ฅผ ๋ผ์น ์ ์๋ ์ฝ๋ ์๋ค.
Ex 1. You get a service, and you get a service, you all get a service
ํ๋ฒ์ ์ฝ 200๋ช ์ ๊ฐ๋ฐ์๊ฐ ์๋ ์คํํธ์ ์์ง๋์ด ๋๋ช ๊ณผ ๋ํ๋ฅผ ํ ์ ์ด ์๋ค. ๊ทธ ์ค ํ์ฌ๋์ด ๋งํ๊ธธ ๊ทธ๋ค์ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ณต์กํ ์์คํ ์ ์ด์ํ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ํ๋ค. ๊ทธ ์ค ๊ฐ์ฅ ํฐ ๊ณผ์ ๋ ๊ทธ ๋ง์ดํฌ๋ก ์๋น์ค๋ค์ด ๋ชจ๋ ์ ์ง๋๊ณ ์์์ ๋ณด์ฅํ๋ ๊ฒ์ด๋ผ๊ณ ํ์๋ค. ์ค๋๋ ์์กด์ฑ, ์ค๋๋ ๋ฐํ์ ๋ฒ์ , ์ผ๋ถ ์๋น์ค ๋ด์ ์ง์ ๋ถ์กฑ ๋ฑ๋ฑ ํ๊ฒฝ ์์์๋!
๊ทธ ํ์ฌ๋ ๊ฐ๋ฐ์๋ณด๋ค ๋ ๋ง์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ด์ํ๊ณ ์๋ค. ํด๋ผ์ด์ธํธ๋ค์๊ฒ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ํ ์ค์ฌ์ ํ์ฌ์์, ์ด ๋ชจ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ๊ณ์ํด์ ๋ฐ๋ผ๊ฐ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๋ค.
Ex 2. You change, I change, we all change
๋ฎ์ ๊ฒฐํฉ๋์ ๋์ ์์ง๋ ฅ์ ๋ฐ๋ก ๋ฌ์ฑํ๋ ๊ฒ์ ์ด๋ ต๋ค. ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ์์ ์ด๋ฅผ ์ ๋๋ก ๊ตฌํํ๋ ๊ฒ์ ๋์ฑ ์ด๋ ต๋ค. ๋งค์ฐ ์์ ์๋น์ค(๋๋ ธ ์๋น์ค๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋)๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฐํฉ๋๊ฐ ๋๊ณ ์์ง๋ ฅ์ด ๋ฎ์์ง๋ ์ํฉ์ ์ฒํ ๊ฒ์ด๋ค.
์ด์ ํ์ฌ์์ bounded context์ ๋งค์ฐ ๋ง์ ์์ ์๋น์ค๋ค์ด ์์ด์ ์ด๋ค ๋ณํ์๋ ์ฌ๋ฌํ์ด ํจ๊ป ์์ ํด์ผํ๋ ์ํฉ์ด ์์๋ค. ์ฌ์ง์ด ์ฑ๋ฅ๋ง์ ๋์ฐํ๋ค.
๐ก bounded context
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD: Domain-Driven Design)์์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ผ๋ก, ํน์ ๋๋ฉ์ธ ๋ชจ๋ธ์ด ์ ํจํ ๊ฒฝ๊ณ๋ฅผ ์ ์ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฆ, ํน์ ๋น์ฆ๋์ค ์์ญ ๋ด์์ ์ฉ์ด์ ๊ฐ๋ ์ ์๋ฏธ๊ฐ ๋ช ํํ๊ฒ ์ ์๋๊ณ ์ผ๊ด๋๊ฒ ์ฌ์ฉ๋๋ ๋ฒ์์ด๋ค. ์ด๋ ๋๋ฉ์ธ ๋ด์ ๋ ผ๋ฆฌ์ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ์ฌ ํผ๋์ ์ค์ด๊ณ , ๊ฐ ๊ฒฝ๊ณ ๋ด์์ ๋ชจ๋ธ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๊ฒ ํ๋ค.
์๋ฅผ ๋ค์ด, ์ ์์๊ฑฐ๋ ์์คํ ์์ "์ฃผ๋ฌธ(Order)"์ด๋ผ๋ ๊ฐ๋ ์ ์ฌ๋ฌ ์ปจํ ์คํธ์์ ๋ค๋ฅด๊ฒ ํด์๋ ์ ์๋ค. ์ฃผ๋ฌธ์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ปจํ ์คํธ์ ์ฃผ๋ฌธ์ ๋ฐฐ์กํ๋ ์ปจํ ์คํธ๋ ์๋ก ๋ค๋ฅธ ์๊ตฌ์ฌํญ๊ณผ ๊ท์น์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋ณ๋์ bounded context๋ก ๋ค๋ฃจ๋ ๊ฒ์ด ์ข๋ค.
์ด ์์๋ ์ข์ ์์์ธ๋ฐ, ๊ทธ ์ด์ ๋ ํ๋ค์ด ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ชจ๋ ์ ๋ณด๋ฅผ ์ข ํฉํ๋ ๋ ํ๋์ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์์ ์๋น์ค๋ค์ ํฉ์ณ ๋ ๋์ ์์ง๋ ฅ์ ๊ฐ์ง๋ ค๋ ์์ด๋์ด๊ฐ ๋จ์ง โ๋ชจ๋๋ฆฌ์์ฒ๋ผ ๋ณด์ธ๋คโ๋ผ๋ ์ด์ ๋ก ๋์๋ค๊ณ ์ฌ๊ฒจ์ก๋ค.
Ex3. Everything was fine, until it wasnโt
๊ธฐ์ ๋ถ์ผ์์ ์ผ์ด๋๋ ๋๊ท๋ชจ ์ธ๋ ฅ ๊ฐ์ถ์ผ๋ก ์ธํด ๋ ๋ง์ ํ์ฌ๋ค์ด ์ฌ์ธต์ ์ผ๋ก ์ธ๋ ฅ์ ๊ฐ์ถํ ํ์๋ ์๋น์ค ์๊ฐ ๋๋ฌด ๋ง๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ฃ๊ณ ์๋ค.
์ด๊ฒ์ ๊ณต์ฅํ ์๊ฐ ์๋ ์ ์๋ค. ๋๊ฐ ํ์ฌ๋ค์ด 40~60%์ ์ธ๋ ฅ์ ๊ฐ์ถํ ๊ฒ์ด๋ผ๊ณ ์์ํ์๊น? ๋จ์ํจ์ ์ด ์ ๊ณ์์ ๊ฐ์ฅ ์ด๋ ค์ด ๊ฒ ์ค ํ๋์ด๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ฐ๋ฅํ ๋จ์ํ๊ฒ ์ ์งํ๋, ๋๋ฌด ๋จ์ํ์ง ์์์ผ ํ๋ค.
ํ๋ก๋์ ํ๊ฒฝ์์ ๋จ์ํ ์์คํ ์ ๊ฐ์ง๊ณ ์๋ ํ์ฌ๋ ๋ ๋์ ๋ฏผ์ฒฉ์ฑ์ ๊ฐ์ง๋ค. ๊ทธ๋ค์ ์ด์ ์ค๋ฒํค๋๋ฅผ ๋๋ฌด ๊ฑฑ์ ํ์ง ์๊ณ ๋ ๋น์ฉ์ ์ ๊ฐํ๊ณ ์ธ๋ ฅ์ ์ค์ผ ์ ์๋ค.
Ex 4. Letโs start our startup using microservices
Greenfield ํ๋ก์ ํธ๋ ๋๋๋ค. ์ด๊ฒ์ ์ฐฝ์์ ์ธ ์์ ๊ฐ๊ฐ ๊ทธ๋ฆฌ๊ธฐ ์์ํ ๋น ์บ๋ฒ์ค์ ๊ฐ๋ค. ์ด ์ํฉ์์ ์์ ๊ฐ๋ ๋ค์ฑ๋ก์ด ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ธฐ๋ก ํ๋ค. ์์ ๊ฐ๋ Ruby, Golang, Java์ ๊ฐ์ ์ฃผ์ ์์์ ์ ํํ๊ณ , ๊ทธ๊ฒ์ Postgresql, Elasticsearch, Cassandra ๋ฑ๊ณผ ์์๋ค.
์ด ๊ทธ๋ฆผ, ๋ง์ฝ ๊ทธ๋ค์ด ์๊ฐ์ ๋ด์ ์์ฑํ ์๋ง ์๋ค๋ฉด ํผ์นด์๊ฐ ๋ ์ ์์๋ค.
ํญ์ ๋์๊ฒ์ ์๋๋ค. ์ค์ ๋ก jet.com์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ณ , ์๋งํธ์ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋๋ค. ๋๋ ๋จ์ง ์ฐ๋ฆฌ๊ฐ ์์ง๋์ด๋ก์ ๋นํ์ ์ธ ์ฌ๊ณ ๋ฅผ ๊ฐ๊ณ ๋ฌด์์ด ๊ฐ์ฅ ์ข์์ง ์ ํํด์ผํ๋ค๊ณ ๋งํ๊ณ ์ถ๋ค.
Ok, but why?
์ด ๊ธ์ ์ฝ๋ ์ผ๋ถ ์ฌ๋๋ค์ โ์ด๊ฒ์ ๊ธฐ์ ์ด์์ผโ๋ผ๊ณ ์๊ฐํ ์ ์๋ค. ํ์ง๋ง ์๋๋ค. ์ฒ์ ๋ ์์์ ์ฌ๋๋ค์ ๋๋ ์๋ค. ๊ทธ๋ค์ ๋งค์ฐ ๋๋ํ๊ณ ํ๋ฅญํ ์์ง๋์ด๋ค. ๋ค๋ฅธ ์์์ ๋์จ ์ฌ๋๋ค๋ ๋ถ๋ช ํ ๋๋ํ ๊ฒ์ด๋ค.

Scott Hanner์ ์ด ํธ์ํฐ์์ ์ข์ ์ด์ ๋ฅผ ์ ์ํ๋ค. ์ฐ๋ฆฌ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ค์ internalized(๋ด๋ฉดํ) ํ๋ค. ์๋ง ์ด๊ฒ์ด ๋ง์ ํ๋ค์ด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ฑํํ๋ ์ด์ ์ผ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ฌ๊ณ ๋ฐฉ์์ ์ฐ๋ฆฌ์ ๋์ ๊น์ํ ์๋ฆฌ์ก๊ณ ์๋ค.
์ ๋ก ์ด์์จ ์ ์ฑ (ZIRP)๋ ์๋ง ๊ทธ ์์ธ ์ค ํ๋์ผ ์ ์๋ค.

๐ก Zero Interest Rate Policy
์ ๋ก ์ด์์จ ์ ์ฑ (Zero Interest Rate Policy, ZIRP)์ ์ค์์ํ์ด ๊ธฐ์ค ๊ธ๋ฆฌ๋ฅผ 0%๋ก ์ค์ ํ๊ณ ์ ์งํ๋ ์ ์ฑ ์ ์๋ฏธํ๋ค. ์ด ์ ์ฑ ์ ๊ฒฝ์ ๋ฅผ ํ์ฑํํ๊ณ ๊ธ์ต ์์ฅ์ ์์ ํ์ํค๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ด ๋น์ ์์ "ZIRP"๋ ๊ธฐ์ ๋ถ์ผ์์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋์คํ๊ฐ ์ฝ๊ฒ ์ด๋ฃจ์ด์ง๊ณ , ๊ธฐ์ ๋ค์ด ๋ ๋ง์ ํ๋ก๊ทธ๋๋จธ๋ฅผ ๊ณ ์ฉํ๊ณ ์ ํ๋ ๊ฒฝํฅ๊ณผ ์ฐ๊ด์ง์ด ์ฌ์ฉ๋๋ค. ์ฆ, ๊ธฐ์ ์ฐ์ ์์์ ๋ง์ดํฌ๋ก์๋น์ค ์ดํ์ด ๋ง์น ๊ฒฝ์ ์ ๋ํ ์ ๋ก ์ด์์จ ์ ์ฑ ๊ณผ ๊ฐ์ด ํจ๊ณผ์ ์ธ ํ๋ก๊ทธ๋๋จธ ๊ณ ์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฉํ๋ค๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋ค.
์ ๋ก ์ด์์จ ์ ์ฑ ์๋์๋ ๋ง์ดํฌ๋ก์๋น์ค์ ์จ๊ฒจ์ง ๋น์ฉ์ ๋ํด ๋ ๋ง์ ์ธ์์ด ๋ ๊ฒ์ผ๋ก ์์ํ๋ค. ๊ด๋ฆฌ์๋ค์ ๋ฌธ์ ์ ๋ํ ์ข์ ํด๊ฒฐ์ฑ ์ด๋๋ผ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ฑํํ๊ธฐ๋ฅผ ๋์ฑ ๊บผ๋ คํ ๊ฒ์ด๋ค.
You still have time
์์ ์์ ์ค ์ด๋ค ๊ฒ์ด๋ผ๋ ๋น์ ๊ณผ ๊ด๋ จ์ด ์๋๋ผ๋, ๊ฑฑ์ ํ์ง ๋ง๋ผ. ์ํํธ์จ์ด์ ์ข์ ์ ์ ๊ฑฐ์ ํญ์ ๋ฐ๊ฟ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋น์ ์ด ์ด๊ฒ์ โ๋ฌธ์ โ๋ผ๊ณ ๋ณด๊ณ ์๋ค๋ฉด, โ๊ธฐํโ๋ผ๊ณ ๋ฐ๊ฟ์ ์๊ฐํด๋ณด์๋ผ.
์๋น์ค์ ์๊ฐ ๋ฅ๋ ฅ์ ํ์ ์ํค๋๋ฐ์ ์ํฅ์ ์ฃผ๊ณ ์๋ค๊ณ ์๊ฐํ๋๊ฐ? ํ์ฌ๊ฐ ์ด์ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์๋ ์ ๋ต์ ์๋ฆฝํด๋ผ. ์ ๋ขฐ์ฑ์ ์ํํ ์๋ ์๊ณ , ์๋๋ฉด ์์คํ ์ํคํ ์ฒ๋ฅผ ๋จ์ํํ๋ ๋ฐ ํฌ์ํ์ฌ ๋ ๋ง์ ํ์ ๋ฅ๋ ฅ์ ๋์ผ ์ ์๋ค.
์์ 2์ ํ์ ๊ทธ๋ ๊ฒ ํ๋ค. ๊ทธ๋ค์ ๋น์ฉ ์ ๊ฐ๊ณผ ๋ ๋์ ๊ณ ๊ฐ ๊ฒฝํ์ ์ง์คํ๋ โ์๋น์ค ํตํฉโ ์ ๋ต์ ์ ์ํ๋ค. ์ด์ ์ดํด ๊ด๊ณ์๋ค์ ๋งค์ฐ ๋ง์กฑํ๋ค.
์ฐฝ์ ์ ๊ณํํ๊ณ ์๋๊ฐ? ๋ง์ฝ ๋๊ฐ ํ์ฌ๋ฅผ ์ฐฝ์ ํ๊ณ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์๊ฐํ๊ณ ์๋ค๋ฉด, ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํด์ผํ๋์ง, ๋ค๋ฅธ ๋์์ ๊ณ ๋ คํ๊ณ ์๋์ง์ ๋ํด ์ค๋ช ํ๋ ์ค๊ณ ๋ฌธ์๋ฅผ ์์ฑํด๋ณด์๋ผ. ์ด๋ ์๊ฐ์ ์ ๋ฆฌํ๊ณ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์ ๋ง ๋์ ํ์ฌ์ ์ ํฉํ ๊ตฌ์กฐ์ธ์ง ๋ช ํํ๊ฒ ์ดํดํ ์ ์๋๋ก ๋์์ค ๊ฒ์ด๋ค.
๋ง์ดํฌ๋ก ์๋น์ค๋ ํ๋ฅญํ์ง๋ง, ์์คํ ๊ณผ ์กฐ์์ ๋ณต์ก์ฑ์ ๋ํ๋ค. ์์ ๋ฐฉ์์ด ๋ณ๊ฒฝ๋๊ณ , ๊ตฌ์กฐ๋ ์ ์ ๋ ๋ณต์กํด์ง๋ฉฐ, ๋ชจ๋๋ฆฌ์์์ ๋ง์ดํฌ๋ก ์๋น์ค๋ก์ ์ด์ ์ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ์ด๋ค. ๋ง์ดํฌ๋ก ์๋น์ค์ ๊ธํ๊ฒ ์ด๋ํ๊ธฐ ์ ์ ์ ์ ๋ค๋ก ๋ฌผ๋ฌ์์ ๊ธฐ๋ค๋ ค๋ณด์๋ผ. ๊ทธ๋ฆฌ๊ณ ์๊ฐํด๋ด๋ผ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์ด๋ป๊ฒ ๋์์ด ๋๋ฉฐ ์ด๋ป๊ฒ ํด๋ฅผ ๋ผ์น ์ง..
Dear Developers,
๋๋ ์๊ฐ์ ๊ฒฌ๊ณ ํ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ์ค๋ ์ง์ ๊ฐ๋ฅํ ์ฐ์ ์ ์ํ๋ค. ๊ธฐ์ ์ โ๋ชฉ์ โ์ด ์๋๋ผ โ์๋จโ์ผ๋ก ์ฌ์ฉํ์ฌ ์ค์ฉ์ ์ธ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์ฐ์ ์ ์ํ๋ค.
๐ก Sometimes microservices are greatโฆ but you probably donโt need microservices.
Opinion
์ฌ๊ธฐ์์ ๋งํ๋ ์์๋ค์ ๋ชจ๋ ๊ณต๊ฐํ๋ค. ํนํ 1๋ฒ์ ์ค์ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋ง์ด ๋๋ผ๊ณ ๊ฒฝํํ๊ณ ์๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ํคํ ์ฒ(๋ชจ๋๋ฆฌ์ ๋ฑ)๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค๋ณด๋ค ๋์ฑ ๋ง์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋๊ฐ? ์ด์ํ๋ ์๋น์ค์ ์ ์ ํ๊ฐ? ์ ๋ํด์๋ ๋ถ์ ์ ์ด๋ค.
์์ 4์ ํธ์ํฐ ๊ธ์์๋ ์ ํํ์ด ๋ ๊ฒ ๊ฐ์ง๋ง, ์ด ์ ์๊ฐ ๋งํ๊ณ ์ ํ๋ ๊ฒ์ ์ต๊ด์ ์ผ๋ก ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฑํํ๋ ๊ฒ์ ์ง์ ํ๊ณ ์ถ์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. ์ค์ ๋ก ๋ง๋๋ ค๋ ์๋น์ค์ ์ด๋ค ์ํคํ ์ฒ๊ฐ ์ ํฉํ ๊ฒ์ธ๊ฐ์ ๋ํ ๊ณ ๋ฏผ์์ด ํญ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฑํํด์๋ค. ์ด๋ฅผ ์ข๋ ๋นํ์ ์ธ ์ฌ๊ณ ๋ก ๋ฐ๋ผ๋ณด๊ณ '์ ํ'ํด์ผ๋ง ํ๋ค.
๐๊ฐ๋ฐ์์ ๋น์ฐํ ๊ฒ์ ์๋ค! ํญ์ ์๋น์ค์ ์ด๋ค๊ฒ์ด ์ ํฉํ ์ง ๋ถ์ํ๊ณ , ๊ณ ๋ฏผํ๋ฉฐ, ์ ํํ๋ ๊ฐ๋ฐ์๊ฐ ๋์.๐
'๐ Study > TLDR' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WebDev] Patterns for building realtime features (0) | 2025.02.12 |
---|---|
[WebDev] Developer philosophy (2) | 2025.02.05 |
[WebDev] Things You Should Never Do As A Software Engineer (0) | 2024.05.25 |
[WebDev] Clever code is probably the worst code you could write (0) | 2024.05.23 |
[WebDev] How not to do code reviews (0) | 2024.05.19 |
You probably donโt need microservices
Microservices is a great architectural style that helps to scale the system and the organization. But probably you donโt need microservices...
www.thrownewexception.com
๋ง์ดํฌ๋ก ์๋น์ค๋ ์์คํ ๊ณผ ๊ตฌ์กฐ๋ฅผ ํ์ฅํ๋๋ฐ์ ๋์์ด ๋๋ ํ๋ฅญํ ๋ฐฉ์์ผ๋ก ์ต๊ทผ ๊ต์ฅํ ์ธ๊ธฐ์๋ ์ํคํ ์ฒ ์คํ์ผ์ด๋ค. ๋ง์ ์ฑ๊ณตํ ํ์ฌ๋ค(๋ทํ๋ฆญ์ค, Spotify..)์ ํฌํจํ์ฌ ๋๋ถ๋ถ์ ํ์ฌ๋ค์ด ์ด ๋ฐฉ์์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ ๊ณํ์ ๊ฐ์ง๊ณ ์๋ค. ํ์ง๋ง, ๋ช๋ช ํ์ฌ๋ค์ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ๊ฐ์ ธ์ค๋ ์ถ๊ฐ ๋น์ฉ์ ๊ฐ๊ณผํ๊ณ ์๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ์ด์ผ๊ธฐ ํ๊ธฐ์ ์, ์ ์์ ๋ง์ดํฌ๋ก ์๋น์ค ๊ฒฝํ์ ์ด์ผ๊ธฐํ๋ค.
How it started - Is it microservices?
2012๋ ๋๋ โ์ด๋ป๊ฒ ํ๋ฉด ์์ฒ๋ช ์ ์์ง๋์ด์ ์ฒ๋ฐฐ ๋ ๋ง์ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๋๋ก ์ฑ์ฅ์ํฌ ์ ์์๊นโ ๋ผ๋ ๋์ ์ ์ง๋ฉดํ๋ค.
๋๋ ๋น์ โScalability Rules: 50 Principles for Scaling Web Sitesโ ์ฑ ์ ์ฝ๊ณ ์์๊ณ , ๊ทธ ์ฑ ์์ AKF Scale Cube ๋ผ๋ ๋ฐฉ์์ ๋ณด์๋ค.

๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ ํ๋ก๋์ ํ๊ฒฝ์์ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ์คํ๋๋ ๋ฐ์ด๋๋ฆฌ๋ค์ด ํ์ํ์ง ์ค๋ช ํ๋๋ฐ์ ์ด ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์๋ค. ๊ฒ์ ๋ชจ๋์ ํธ๋ํฝ ํจํด์ ์ฅ๋ฐ๊ตฌ๋ ๋ชจ๋์ ํธ๋ํฝ ํจํด๊ณผ๋ ์์ ํ ๋ค๋ฅด๋ค. ์ด ์ปดํฌ๋ํธ๋ค์ ๋ถ๋ฆฌ๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ค. ๊ฒ๋ค๊ฐ ์ด๊ฒ์ ์ฌ๋ฌ ํ๋ค์ด ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ด๊ณ ์์จ์ ์ผ๋ก ์ผํ ์ ์๊ฒ ํด์ค๋ค. ์ด๊ฒ์ ์์ฒ ๋ช ์ ์์ง๋์ด๋ก ํ์ฌ๋ฅผ ์ฑ์ฅ์ํค๋ ๋์ ์ ํด๊ฒฐํ๋๋ฐ์ ๋์์ด ๋์๋ค.
So, whatโs wrong?
๋ง์ดํฌ๋ก ์๋น์ค๋ ๊ทธ ์์ฒด๋ก๋ ๋ฌธ์ ๊ฐ ์๋ค! ๊ทธ๋ฆฌ๊ณ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ ๋ฌธ์ ๊ฐ ์๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ ์ฐ์ ์ ๋ง๋ณ ํต์น์ฝ์ ์๋ค๋ ์ฌ์ค์ ์์ด๋ฒ๋ฆฐ ๋ฏ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ก๋ ํด๋ฅผ ๋ผ์น ์ ์๋ ์ฝ๋ ์๋ค.
Ex 1. You get a service, and you get a service, you all get a service
ํ๋ฒ์ ์ฝ 200๋ช ์ ๊ฐ๋ฐ์๊ฐ ์๋ ์คํํธ์ ์์ง๋์ด ๋๋ช ๊ณผ ๋ํ๋ฅผ ํ ์ ์ด ์๋ค. ๊ทธ ์ค ํ์ฌ๋์ด ๋งํ๊ธธ ๊ทธ๋ค์ ํ๋ก๋์ ํ๊ฒฝ์์ ๋ณต์กํ ์์คํ ์ ์ด์ํ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ํ๋ค. ๊ทธ ์ค ๊ฐ์ฅ ํฐ ๊ณผ์ ๋ ๊ทธ ๋ง์ดํฌ๋ก ์๋น์ค๋ค์ด ๋ชจ๋ ์ ์ง๋๊ณ ์์์ ๋ณด์ฅํ๋ ๊ฒ์ด๋ผ๊ณ ํ์๋ค. ์ค๋๋ ์์กด์ฑ, ์ค๋๋ ๋ฐํ์ ๋ฒ์ , ์ผ๋ถ ์๋น์ค ๋ด์ ์ง์ ๋ถ์กฑ ๋ฑ๋ฑ ํ๊ฒฝ ์์์๋!
๊ทธ ํ์ฌ๋ ๊ฐ๋ฐ์๋ณด๋ค ๋ ๋ง์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ด์ํ๊ณ ์๋ค. ํด๋ผ์ด์ธํธ๋ค์๊ฒ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ํ ์ค์ฌ์ ํ์ฌ์์, ์ด ๋ชจ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ๊ณ์ํด์ ๋ฐ๋ผ๊ฐ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๋ค.
Ex 2. You change, I change, we all change
๋ฎ์ ๊ฒฐํฉ๋์ ๋์ ์์ง๋ ฅ์ ๋ฐ๋ก ๋ฌ์ฑํ๋ ๊ฒ์ ์ด๋ ต๋ค. ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ์์ ์ด๋ฅผ ์ ๋๋ก ๊ตฌํํ๋ ๊ฒ์ ๋์ฑ ์ด๋ ต๋ค. ๋งค์ฐ ์์ ์๋น์ค(๋๋ ธ ์๋น์ค๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋)๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฐํฉ๋๊ฐ ๋๊ณ ์์ง๋ ฅ์ด ๋ฎ์์ง๋ ์ํฉ์ ์ฒํ ๊ฒ์ด๋ค.
์ด์ ํ์ฌ์์ bounded context์ ๋งค์ฐ ๋ง์ ์์ ์๋น์ค๋ค์ด ์์ด์ ์ด๋ค ๋ณํ์๋ ์ฌ๋ฌํ์ด ํจ๊ป ์์ ํด์ผํ๋ ์ํฉ์ด ์์๋ค. ์ฌ์ง์ด ์ฑ๋ฅ๋ง์ ๋์ฐํ๋ค.
๐ก bounded context
๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD: Domain-Driven Design)์์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ผ๋ก, ํน์ ๋๋ฉ์ธ ๋ชจ๋ธ์ด ์ ํจํ ๊ฒฝ๊ณ๋ฅผ ์ ์ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฆ, ํน์ ๋น์ฆ๋์ค ์์ญ ๋ด์์ ์ฉ์ด์ ๊ฐ๋ ์ ์๋ฏธ๊ฐ ๋ช ํํ๊ฒ ์ ์๋๊ณ ์ผ๊ด๋๊ฒ ์ฌ์ฉ๋๋ ๋ฒ์์ด๋ค. ์ด๋ ๋๋ฉ์ธ ๋ด์ ๋ ผ๋ฆฌ์ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ์ฌ ํผ๋์ ์ค์ด๊ณ , ๊ฐ ๊ฒฝ๊ณ ๋ด์์ ๋ชจ๋ธ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๊ฒ ํ๋ค.
์๋ฅผ ๋ค์ด, ์ ์์๊ฑฐ๋ ์์คํ ์์ "์ฃผ๋ฌธ(Order)"์ด๋ผ๋ ๊ฐ๋ ์ ์ฌ๋ฌ ์ปจํ ์คํธ์์ ๋ค๋ฅด๊ฒ ํด์๋ ์ ์๋ค. ์ฃผ๋ฌธ์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ปจํ ์คํธ์ ์ฃผ๋ฌธ์ ๋ฐฐ์กํ๋ ์ปจํ ์คํธ๋ ์๋ก ๋ค๋ฅธ ์๊ตฌ์ฌํญ๊ณผ ๊ท์น์ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ๋ณ๋์ bounded context๋ก ๋ค๋ฃจ๋ ๊ฒ์ด ์ข๋ค.
์ด ์์๋ ์ข์ ์์์ธ๋ฐ, ๊ทธ ์ด์ ๋ ํ๋ค์ด ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ๋ชจ๋ ์ ๋ณด๋ฅผ ์ข ํฉํ๋ ๋ ํ๋์ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์์ ์๋น์ค๋ค์ ํฉ์ณ ๋ ๋์ ์์ง๋ ฅ์ ๊ฐ์ง๋ ค๋ ์์ด๋์ด๊ฐ ๋จ์ง โ๋ชจ๋๋ฆฌ์์ฒ๋ผ ๋ณด์ธ๋คโ๋ผ๋ ์ด์ ๋ก ๋์๋ค๊ณ ์ฌ๊ฒจ์ก๋ค.
Ex3. Everything was fine, until it wasnโt
๊ธฐ์ ๋ถ์ผ์์ ์ผ์ด๋๋ ๋๊ท๋ชจ ์ธ๋ ฅ ๊ฐ์ถ์ผ๋ก ์ธํด ๋ ๋ง์ ํ์ฌ๋ค์ด ์ฌ์ธต์ ์ผ๋ก ์ธ๋ ฅ์ ๊ฐ์ถํ ํ์๋ ์๋น์ค ์๊ฐ ๋๋ฌด ๋ง๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ๋ฃ๊ณ ์๋ค.
์ด๊ฒ์ ๊ณต์ฅํ ์๊ฐ ์๋ ์ ์๋ค. ๋๊ฐ ํ์ฌ๋ค์ด 40~60%์ ์ธ๋ ฅ์ ๊ฐ์ถํ ๊ฒ์ด๋ผ๊ณ ์์ํ์๊น? ๋จ์ํจ์ ์ด ์ ๊ณ์์ ๊ฐ์ฅ ์ด๋ ค์ด ๊ฒ ์ค ํ๋์ด๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ฐ๋ฅํ ๋จ์ํ๊ฒ ์ ์งํ๋, ๋๋ฌด ๋จ์ํ์ง ์์์ผ ํ๋ค.
ํ๋ก๋์ ํ๊ฒฝ์์ ๋จ์ํ ์์คํ ์ ๊ฐ์ง๊ณ ์๋ ํ์ฌ๋ ๋ ๋์ ๋ฏผ์ฒฉ์ฑ์ ๊ฐ์ง๋ค. ๊ทธ๋ค์ ์ด์ ์ค๋ฒํค๋๋ฅผ ๋๋ฌด ๊ฑฑ์ ํ์ง ์๊ณ ๋ ๋น์ฉ์ ์ ๊ฐํ๊ณ ์ธ๋ ฅ์ ์ค์ผ ์ ์๋ค.
Ex 4. Letโs start our startup using microservices
Greenfield ํ๋ก์ ํธ๋ ๋๋๋ค. ์ด๊ฒ์ ์ฐฝ์์ ์ธ ์์ ๊ฐ๊ฐ ๊ทธ๋ฆฌ๊ธฐ ์์ํ ๋น ์บ๋ฒ์ค์ ๊ฐ๋ค. ์ด ์ํฉ์์ ์์ ๊ฐ๋ ๋ค์ฑ๋ก์ด ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ธฐ๋ก ํ๋ค. ์์ ๊ฐ๋ Ruby, Golang, Java์ ๊ฐ์ ์ฃผ์ ์์์ ์ ํํ๊ณ , ๊ทธ๊ฒ์ Postgresql, Elasticsearch, Cassandra ๋ฑ๊ณผ ์์๋ค.
์ด ๊ทธ๋ฆผ, ๋ง์ฝ ๊ทธ๋ค์ด ์๊ฐ์ ๋ด์ ์์ฑํ ์๋ง ์๋ค๋ฉด ํผ์นด์๊ฐ ๋ ์ ์์๋ค.
ํญ์ ๋์๊ฒ์ ์๋๋ค. ์ค์ ๋ก jet.com์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ณ , ์๋งํธ์ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋๋ค. ๋๋ ๋จ์ง ์ฐ๋ฆฌ๊ฐ ์์ง๋์ด๋ก์ ๋นํ์ ์ธ ์ฌ๊ณ ๋ฅผ ๊ฐ๊ณ ๋ฌด์์ด ๊ฐ์ฅ ์ข์์ง ์ ํํด์ผํ๋ค๊ณ ๋งํ๊ณ ์ถ๋ค.
Ok, but why?
์ด ๊ธ์ ์ฝ๋ ์ผ๋ถ ์ฌ๋๋ค์ โ์ด๊ฒ์ ๊ธฐ์ ์ด์์ผโ๋ผ๊ณ ์๊ฐํ ์ ์๋ค. ํ์ง๋ง ์๋๋ค. ์ฒ์ ๋ ์์์ ์ฌ๋๋ค์ ๋๋ ์๋ค. ๊ทธ๋ค์ ๋งค์ฐ ๋๋ํ๊ณ ํ๋ฅญํ ์์ง๋์ด๋ค. ๋ค๋ฅธ ์์์ ๋์จ ์ฌ๋๋ค๋ ๋ถ๋ช ํ ๋๋ํ ๊ฒ์ด๋ค.

Scott Hanner์ ์ด ํธ์ํฐ์์ ์ข์ ์ด์ ๋ฅผ ์ ์ํ๋ค. ์ฐ๋ฆฌ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ค์ internalized(๋ด๋ฉดํ) ํ๋ค. ์๋ง ์ด๊ฒ์ด ๋ง์ ํ๋ค์ด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ฑํํ๋ ์ด์ ์ผ ๊ฒ์ด๋ค. ์ด๋ฌํ ์ฌ๊ณ ๋ฐฉ์์ ์ฐ๋ฆฌ์ ๋์ ๊น์ํ ์๋ฆฌ์ก๊ณ ์๋ค.
์ ๋ก ์ด์์จ ์ ์ฑ (ZIRP)๋ ์๋ง ๊ทธ ์์ธ ์ค ํ๋์ผ ์ ์๋ค.

๐ก Zero Interest Rate Policy
์ ๋ก ์ด์์จ ์ ์ฑ (Zero Interest Rate Policy, ZIRP)์ ์ค์์ํ์ด ๊ธฐ์ค ๊ธ๋ฆฌ๋ฅผ 0%๋ก ์ค์ ํ๊ณ ์ ์งํ๋ ์ ์ฑ ์ ์๋ฏธํ๋ค. ์ด ์ ์ฑ ์ ๊ฒฝ์ ๋ฅผ ํ์ฑํํ๊ณ ๊ธ์ต ์์ฅ์ ์์ ํ์ํค๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ด ๋น์ ์์ "ZIRP"๋ ๊ธฐ์ ๋ถ์ผ์์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋์คํ๊ฐ ์ฝ๊ฒ ์ด๋ฃจ์ด์ง๊ณ , ๊ธฐ์ ๋ค์ด ๋ ๋ง์ ํ๋ก๊ทธ๋๋จธ๋ฅผ ๊ณ ์ฉํ๊ณ ์ ํ๋ ๊ฒฝํฅ๊ณผ ์ฐ๊ด์ง์ด ์ฌ์ฉ๋๋ค. ์ฆ, ๊ธฐ์ ์ฐ์ ์์์ ๋ง์ดํฌ๋ก์๋น์ค ์ดํ์ด ๋ง์น ๊ฒฝ์ ์ ๋ํ ์ ๋ก ์ด์์จ ์ ์ฑ ๊ณผ ๊ฐ์ด ํจ๊ณผ์ ์ธ ํ๋ก๊ทธ๋๋จธ ๊ณ ์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฉํ๋ค๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋ค.
์ ๋ก ์ด์์จ ์ ์ฑ ์๋์๋ ๋ง์ดํฌ๋ก์๋น์ค์ ์จ๊ฒจ์ง ๋น์ฉ์ ๋ํด ๋ ๋ง์ ์ธ์์ด ๋ ๊ฒ์ผ๋ก ์์ํ๋ค. ๊ด๋ฆฌ์๋ค์ ๋ฌธ์ ์ ๋ํ ์ข์ ํด๊ฒฐ์ฑ ์ด๋๋ผ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ฑํํ๊ธฐ๋ฅผ ๋์ฑ ๊บผ๋ คํ ๊ฒ์ด๋ค.
You still have time
์์ ์์ ์ค ์ด๋ค ๊ฒ์ด๋ผ๋ ๋น์ ๊ณผ ๊ด๋ จ์ด ์๋๋ผ๋, ๊ฑฑ์ ํ์ง ๋ง๋ผ. ์ํํธ์จ์ด์ ์ข์ ์ ์ ๊ฑฐ์ ํญ์ ๋ฐ๊ฟ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋น์ ์ด ์ด๊ฒ์ โ๋ฌธ์ โ๋ผ๊ณ ๋ณด๊ณ ์๋ค๋ฉด, โ๊ธฐํโ๋ผ๊ณ ๋ฐ๊ฟ์ ์๊ฐํด๋ณด์๋ผ.
์๋น์ค์ ์๊ฐ ๋ฅ๋ ฅ์ ํ์ ์ํค๋๋ฐ์ ์ํฅ์ ์ฃผ๊ณ ์๋ค๊ณ ์๊ฐํ๋๊ฐ? ํ์ฌ๊ฐ ์ด์ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์๋ ์ ๋ต์ ์๋ฆฝํด๋ผ. ์ ๋ขฐ์ฑ์ ์ํํ ์๋ ์๊ณ , ์๋๋ฉด ์์คํ ์ํคํ ์ฒ๋ฅผ ๋จ์ํํ๋ ๋ฐ ํฌ์ํ์ฌ ๋ ๋ง์ ํ์ ๋ฅ๋ ฅ์ ๋์ผ ์ ์๋ค.
์์ 2์ ํ์ ๊ทธ๋ ๊ฒ ํ๋ค. ๊ทธ๋ค์ ๋น์ฉ ์ ๊ฐ๊ณผ ๋ ๋์ ๊ณ ๊ฐ ๊ฒฝํ์ ์ง์คํ๋ โ์๋น์ค ํตํฉโ ์ ๋ต์ ์ ์ํ๋ค. ์ด์ ์ดํด ๊ด๊ณ์๋ค์ ๋งค์ฐ ๋ง์กฑํ๋ค.
์ฐฝ์ ์ ๊ณํํ๊ณ ์๋๊ฐ? ๋ง์ฝ ๋๊ฐ ํ์ฌ๋ฅผ ์ฐฝ์ ํ๊ณ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์๊ฐํ๊ณ ์๋ค๋ฉด, ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฌ์ฉํด์ผํ๋์ง, ๋ค๋ฅธ ๋์์ ๊ณ ๋ คํ๊ณ ์๋์ง์ ๋ํด ์ค๋ช ํ๋ ์ค๊ณ ๋ฌธ์๋ฅผ ์์ฑํด๋ณด์๋ผ. ์ด๋ ์๊ฐ์ ์ ๋ฆฌํ๊ณ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์ ๋ง ๋์ ํ์ฌ์ ์ ํฉํ ๊ตฌ์กฐ์ธ์ง ๋ช ํํ๊ฒ ์ดํดํ ์ ์๋๋ก ๋์์ค ๊ฒ์ด๋ค.
๋ง์ดํฌ๋ก ์๋น์ค๋ ํ๋ฅญํ์ง๋ง, ์์คํ ๊ณผ ์กฐ์์ ๋ณต์ก์ฑ์ ๋ํ๋ค. ์์ ๋ฐฉ์์ด ๋ณ๊ฒฝ๋๊ณ , ๊ตฌ์กฐ๋ ์ ์ ๋ ๋ณต์กํด์ง๋ฉฐ, ๋ชจ๋๋ฆฌ์์์ ๋ง์ดํฌ๋ก ์๋น์ค๋ก์ ์ด์ ์ ์๊ฐ์ด ๊ฑธ๋ฆด ๊ฒ์ด๋ค. ๋ง์ดํฌ๋ก ์๋น์ค์ ๊ธํ๊ฒ ์ด๋ํ๊ธฐ ์ ์ ์ ์ ๋ค๋ก ๋ฌผ๋ฌ์์ ๊ธฐ๋ค๋ ค๋ณด์๋ผ. ๊ทธ๋ฆฌ๊ณ ์๊ฐํด๋ด๋ผ ๋ง์ดํฌ๋ก ์๋น์ค๊ฐ ์ด๋ป๊ฒ ๋์์ด ๋๋ฉฐ ์ด๋ป๊ฒ ํด๋ฅผ ๋ผ์น ์ง..
Dear Developers,
๋๋ ์๊ฐ์ ๊ฒฌ๊ณ ํ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ์ค๋ ์ง์ ๊ฐ๋ฅํ ์ฐ์ ์ ์ํ๋ค. ๊ธฐ์ ์ โ๋ชฉ์ โ์ด ์๋๋ผ โ์๋จโ์ผ๋ก ์ฌ์ฉํ์ฌ ์ค์ฉ์ ์ธ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์ฐ์ ์ ์ํ๋ค.
๐ก Sometimes microservices are greatโฆ but you probably donโt need microservices.
Opinion
์ฌ๊ธฐ์์ ๋งํ๋ ์์๋ค์ ๋ชจ๋ ๊ณต๊ฐํ๋ค. ํนํ 1๋ฒ์ ์ค์ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋ง์ด ๋๋ผ๊ณ ๊ฒฝํํ๊ณ ์๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ํคํ ์ฒ(๋ชจ๋๋ฆฌ์ ๋ฑ)๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค๋ณด๋ค ๋์ฑ ๋ง์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋๊ฐ? ์ด์ํ๋ ์๋น์ค์ ์ ์ ํ๊ฐ? ์ ๋ํด์๋ ๋ถ์ ์ ์ด๋ค.
์์ 4์ ํธ์ํฐ ๊ธ์์๋ ์ ํํ์ด ๋ ๊ฒ ๊ฐ์ง๋ง, ์ด ์ ์๊ฐ ๋งํ๊ณ ์ ํ๋ ๊ฒ์ ์ต๊ด์ ์ผ๋ก ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฑํํ๋ ๊ฒ์ ์ง์ ํ๊ณ ์ถ์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. ์ค์ ๋ก ๋ง๋๋ ค๋ ์๋น์ค์ ์ด๋ค ์ํคํ ์ฒ๊ฐ ์ ํฉํ ๊ฒ์ธ๊ฐ์ ๋ํ ๊ณ ๋ฏผ์์ด ํญ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฑํํด์๋ค. ์ด๋ฅผ ์ข๋ ๋นํ์ ์ธ ์ฌ๊ณ ๋ก ๋ฐ๋ผ๋ณด๊ณ '์ ํ'ํด์ผ๋ง ํ๋ค.
๐๊ฐ๋ฐ์์ ๋น์ฐํ ๊ฒ์ ์๋ค! ํญ์ ์๋น์ค์ ์ด๋ค๊ฒ์ด ์ ํฉํ ์ง ๋ถ์ํ๊ณ , ๊ณ ๋ฏผํ๋ฉฐ, ์ ํํ๋ ๊ฐ๋ฐ์๊ฐ ๋์.๐
'๐ Study > TLDR' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WebDev] Patterns for building realtime features (0) | 2025.02.12 |
---|---|
[WebDev] Developer philosophy (2) | 2025.02.05 |
[WebDev] Things You Should Never Do As A Software Engineer (0) | 2024.05.25 |
[WebDev] Clever code is probably the worst code you could write (0) | 2024.05.23 |
[WebDev] How not to do code reviews (0) | 2024.05.19 |