MSA์ ๋ํด ์์๋ณด๊ธฐ ์ ๋จผ์ Monolithic์ด ๋ฌด์์ธ์ง ์์๋ณด์.
Monolithic Architecture ๋?
Monolithic Architecture๋ ์ฌ์ ์ ์ ์๋ก ํ ๋ฉ์ด๋ฆฌ์ ๊ตฌ์กฐ์ด๋ค. ์ฆ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋๋ก ๊ตฌ์ฑ๋๋ค.
Monolithic Architecture์ ์ฅ์
- ๋ฐฐํฌ ๋ฐ ํ ์คํธ๊ฐ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ์ํํ๋ฉด ๋๊ธฐ์ ๊ฐ๋ฐ ๋ฐ ํ๊ฒฝ์ค์ ์ด ๊ฐ๋จํจ.
- ๊ฐ ์ปดํฌ๋ํธ๋ค์ด ํจ์๋ก ํธ์ถ๋๊ธฐ์ ์ฑ๋ฅ์ ๋ํ ์ ์ฝ์ด ์๋์ ์ผ๋ก ์ ๊ณ ์ด์ ๋ฐ ๊ด๋ฆฌ์ ์ฉ์ดํ๋ค.
ํ์ง๋ง ๊ทผ๋์ IT์ ๊ณ์ ๊ฐ์ด ์์คํ ์ด ์ ์ ์ปค์ง๊ณ ์ฌ๋ฌ ์ปดํฌ๋ํธ ๋ฐ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋๋ฉด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
Monolithic Architecture์ ๋จ์
- ๋น๋ ๋ฐ ํ
์คํธ ์๊ฐ์ด ๊ธธ์ด์ง๋ค.
โ ํ๋์ ๋ฉ์ด๋ฆฌ ๊ตฌ์กฐ์ด๊ธฐ์ ์ฌ์ํ ์ด์์ ๋ํ์ฌ ์์ ์์ ์ด ์ผ์ด๋๋ ์ ์ฒด ์์คํ ์ ๋น๋ํด์ผ ํ๊ณ , ๋ํ ํ ์คํธ ์๊ฐ๋ ๊ธธ์ด์ง๋ค. - ์ ํ์ ํ์ฅ์ด ๋ถ๊ฐ๋ฅํ๋ค.
โ ์๋ฅผ ๋ค์ด ํน์ํ ๊ฒฝ์ฐ(์ด๋ฒคํธ(์ง์ง ์ด๋ฒคํธ) ํน์ ์๋น์ค ์ ์๋์ด ํญ์ฃผํ ๊ฒฝ์ฐ) ํ๋ก์ ํธ ์์คํ ์ ์ฒด๋ฅผ ํ์ฅํด์ผ ํ๋ค. - ํ๋์ ์๋น์ค๊ฐ ๋ชจ๋ ์๋น์ค์ ์ํฅ์ ์ค๋ค.
โ ์๊ฐ์ ์ผ๋ก ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๊ฒ ๋ ๋ ํด๋น ์๋ฒ๊ฐ ์ฃฝ๊ฒ๋๋ค๋ฉด ํ๋์ ๋ฉ์ด๋ฆฌ์ด๊ธฐ์ ๋ค๋ฅธ ๋ชจ๋ ์๋น์ค์๋ ์ํฅ์ ์ค๋ค. - Framework์ ์ฌ์ฉ ์ธ์ด์ ์ข ์์ ์ด๋ค
์ด์ ๊ฐ์ Monolithic Architecture์ ๋จ์ ๋๋ฌธ์ ์ต๊ทผ ์์คํ ์ด ์ปค์ง๋ IT์ ๊ณ์์๋ MSA(Micro Service Architecture) ๋ฅผ ๋์ .
MSA(Micro Service Architecture)๋?
MSA๋ Micro Service Architecture์ ์ค์๋ง๋ก ๋จ์ผ ํ๋ก๊ทธ๋จ์ ๊ฐ ์ปดํฌ๋ํธ ๋ณ๋ก ๋๋์ด ์์ ์๋น์ค์ ์กฐํฉ์ผ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ด๋ค.
MSA์ ํน์ง์ ๋งํ๊ธฐ ์ ๋จ์ผ ํ๋ก๊ทธ๋จ์ ์ปดํฌ๋ํธ ๋ณ๋ก ๋๋์์ ๋ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ํด ์์๋ณด์.
MSA์ ์ฅ์
- ๊ฐ๊ฐ์ ์๋น์ค๊ฐ ๋ชจ๋ํ
- ๋ชจ๋๋ผ๋ฆฌ๋ RPC ํน์ message-driven API๋ฑ์ ์ด์ฉํด ํต์ ํ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ๋ณ ์๋น์ค์ ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์๋ฉด์์ ์ด์ ์ ๊ฐ์ง ์ ์๋ค.
- ๊ฐ ๋ชจ๋๋ณ ๊ธฐ์ ์คํ์ ๋ค์ํ
- ๋ชจ๋ ๋จ์๋ก ์ ์ ํ ๊ธฐ์ ์คํ ์ฑํ์ด ๊ฐ๋ฅํ๊ฒ ๋๋ค.
- ์๋น์ค ๋ณ ๋ ๋ฆฝ์ ๋ฐฐํฌ๊ฐ๋ฅ
- ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ Monolithic์ ๋นํด ๊ฐ๋ณ๊ฒ ํ ์ ์๋ค.(Agile)
- ๊ฐ๊ฐ์ ์๋น์ค๋ณ ๋ถํ์ ๋ฐ๋ผ์ ๊ฐ๋ณ์ scale-out์ด ๊ฐ๋ฅํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํน์ CPU๋ฉด์์ ์ด์ ์ ๊ฐ์ง ์ ์๋ค.
์ฌ๊ธฐ์ scale-out์ด๋ ๊ธฐ์กด ์๋ฒ๋ฅผ ์ฌ๋ฌ ์๋ฒ๋ก ๋์ฐ์ด ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ปํ๋ค.
MSA์ ๋จ์
- ๋ณต์ก์ฑ
- MSA๋ Monolithic๊ณผ ๋น๊ตํ์์ ๋ ์๋์ ์ผ๋ก ์์คํ ์ด ๋ณต์กํ๋ค. ์๋น์ค๊ฐ ๋ชจ๋ ๋ถ์ฐ๋์ด์๊ธฐ์ ๋ด๋ถ ์์คํ ์ ๋ชจ๋๊ฐ ํต์ ์ ์ด๋ป๊ฒ ์ฐ๊ฒฐํ ์ง ์ ํด์ผํ๊ณ , ํต์ ์ ์ฅ์ ์ ์๋ฒ์ ๋ถํ์ ์์ด ์ด๋ป๊ฒ transaction์ ์ ์งํ ์ง ๊ฒฐ์ ํ๊ณ ๊ตฌํํด์ผํ๋ค.
- Transaction ์ ์ง์ ์ด๋ ค์
- Monolithic ์์๋ ๋จ์ผ transaction์ ์ ์งํ๋ฉด ๋์ง๋ง, MSA์์๋ ๊ฐ๊ฐ์ ์๋น์ค ๋ณ๋ก DB๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ๋๋ฌธ์ด๋ค.
ํธ๋์ญ์ ์ด๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํํ๋ ์์ ์ ๋จ์๋ฅผ ๋งํ๋ค.
- ํตํฉํ ์คํธ๊ฐ ์ด๋ ต๋ค.
- ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์ค์ ์ด์ํ๊ฒฝ์ ๋์ผํ๊ฒ settingํ๋๊ฒ ์ฝ์ง ์๋ค.
- ์ค์ ์ด์ํ๊ฒฝ์ ๋ํด ๋ฐฐํฌ๊ฐ ์ฝ์ง ์๋ค.
- ์๋ฅผ ๋ค์ด ๋จ์ผ ์๋น์ค ํ๋์ ๋ํ ๋ฐฐํฌ๊ฐ ์ด๋ฃจ์ง๊ธฐ ์ ๋ค๋ฅธ ์๋น์ค๋ค๊ณผ์ ์ฐ๊ณ ๋์์ด ์ ์ํ๋๋์ง ํ์ธ ํ ๋ฐฐํฌ๋์ด์ผ ํ๋ค.
MSA์ ํน์ง
MSA๋ API๋ฅผ ํตํด์ ์ํธ์์ฉํ๋ค. MSA ๋ด๋ถ ๊ฐ ์๋น์ค์ end-point(์ ๊ทผ์ )์ APIํํ๋ก ์ธ๋ถ์ ๋ ธ์ถํ๊ณ , ์ธ๋ถ์ ์ธ ๊ธฐ์ ์ ์ธ ์ฌํญ๋ค์ ๋ชจ๋ ์ถ์ํ๋ฅผ ํ๋ค.
MSA์ ๊ถ๊ทน์ ์ธ ๋ชฉํ
MSA์ ๊ถ๊ทน์ ์ธ ๋ชฉํ๋ ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ ํ๊ฒ ๊ณ ํ์ง์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋๊ณ , ๋ถ๋ฆฌ๋ ์๋น์ค๋ฅผ ํตํด ๊ฐ ์๋น์ค๋ ๋ค๋ฅธ ์์คํ ๋ค์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํ ํ๋ฉด์ ์ ์ํ๊ฒ ๋ฐ๋ณตํ๋ ๊ฒ์ด๋ค.
scaling ๋ฐฉ์
- Scale - UP : ์์งํ์ฅ, ๋ฉ๋ชจ๋ฆฌ ๋๋ฆฌ๊ธฐ, ์ข์ ์ฑ๋ฅ์ CPU๋ก ๋ฐ๊พธ๊ธฐ ๋ฑ, Instacnce๋ฅผ ๋ ์ข์ ๊ฒ์ผ๋ก ๊ต์ฒดํ๋ - ๋ฐฉ์
- Scale - OUT : ์ํํ์ฅ, ๊ณ ๋ง๊ณ ๋งํ ์ฑ๋ฅ์ Computer๋ฅผ ์ฌ๋ฌ๋๋ก ๋๋ฆฌ๋ ๊ฒ
- Scale Out ๋ฐฉ์์ด ํจ์ฌ ๋ ๋ณต์กํ์ง๋ง, Scale UP ๋ฐฉ์์ ์๋ฒ๋ฅผ ์ฌ๊ธฐ๋ํ๋ ๊ณผ์ (์ด์ฉ์์์ด ์๋น์ค ์ค๋จ) ์ด ํ์ํ๋ค
- MSA ํํ์ ์ํคํ ์ณ๋ผ๋ฉด, ์ฌ์ฉ๋์ด ๋ง์ ๋ถ๋ถ๋ง Scale out ํ๋ฉด ๋๋ค
- ์ธํ๋ผ๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ์ฝ๊ฒ ๋ณ๊ฒฝ๋๋ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ํํ์ฅ์ ์ํด ๊ฐ์ฅ ํจ์จ์ ์ธ ์์คํ ์ด๋ผ๊ณ ํ ์ ์๋ค
๋ช๊ฐ์ง ์ฐธ๊ณ ํค์๋ : REST, Kafka, Message Stream
์ฐธ๊ณ )
https://09297.tistory.com/
https://wooaoe.tistory.com/
http://clipsoft.co.kr/
https://medium.com/