ํน์ง
ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ
- ์์คํ ์ ์ํ์ ํ์ ์ ์ ์ฐ
- ํ์ฅ๋ ์๋ฒ๋ก ์์คํ ์ ๋ถํ ๋ถ์ฐ, ๊ฐ์ฉ์ฑ ๋ณด์ฅ
- ์์คํ ๋๋, ์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์ ํจํค์ง(์ปจํ ์ด๋ ๊ธฐ๋ฐ ํจํค์ง)
ํ๋ ฅ์ ์ํคํ ์ฒ
- ์๋น์ค ์์ฑ - ํตํฉ - ๋ฐฐํฌ, ๋น์ฆ๋์ค ํ๊ฒฝ ๋ณํ์ ๋์ ์๊ฐ ๋จ์ถ
- ๋ถํ ๋ ์๋น์ค ๊ตฌ์กฐ
- ๋ฌด์ํ ํต์ ํ๋กํ ์ฝ
์ฅ์ ๊ฒฉ๋ฆฌ
- ํน์ ์๋น์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ์ฃผ์ง ์์
CI/CD
- ์ง์์ ์ธ ํตํฉ CI
- ํตํฉ ์๋ฒ, ์์ค ๊ด๋ฆฌ, ๋น๋ ๋๊ตฌ, ํ ์คํธ ๋๊ตฌ
- ์ง์์ ๋ฐฐํฌ
- Continuous Delivery
- Continuous Deployment
- Pipe line
DEVOPS
๋ฐฐํฌ ์ด์ QA์ ๊ต์งํฉ
์ง์์ ์ผ๋ก ๋์์์ด ์ง์๋ฐฐํฌ์ด์ํด๋๊ฐ๋ ๊ฒ!
์๋น์ค ๋จ์๋ฅผ ์์ ๋จ์๋ก ๋๋์ผ๋ก์จ, ๋ ์์ฃผ ๋ฐฐํฌ ํ ์คํธ ํ ์ ์๊ฒ๋จ
Container ๊ฐ์ํ
๊ธฐ์กด์ ํ๋์จ์ด ๊ฐ์ํ์ ๋นํด์ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋ค
12 Factors
1. CodeBase
์ ํ๋ฆฌ์ผ์ด์ ์ 1๊ฐ์ ์ฝ๋ ๋ฒ ์ด์ค(Git, SVN)๋ฅผ ํตํด ๊ด๋ฆฌ๋์ด์ผ ํ๋ฉฐ, ๋์ผํ ์ฝ๋๋ก ์ด์/๊ฐ๋ฐ์ ๋ฐฐํฌํ์ฌ์ผ ํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ 1๊ฐ์ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ง๋ค
- ์ ํ๋ฆฌ์ผ์ด์ ์ 1๊ฐ์ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ํตํด ์ด์/๊ฐ๋ฐ์ฉ์ผ๋ก ๋ฐฐํฌํ๋ค
- CodeBase ํญ๋ชฉ์ ์ด์ด์ง๋ ํ ํญ๋ชฉ์ ์ค์๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ํด์ผ ํ๋ ํญ๋ชฉ์ด๋ค
- CodeBase ํญ๋ชฉ์ SVN, Git๊ณผ ๊ฐ์ ์ฝ๋ ๊ด๋ฆฌ ์์คํ ์ฌ์ฉ์ผ๋ก ์ค์ํ ์ ์๋ค
2. Dependencies
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ข ์์ฑ์ ๋ช ์์ ์ผ๋ก ์ ์ธํ์ฌ ์ฌ์ฉํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ dependency manifest ํ์ผ์ (Gemfile, POM ๋ฑ) ๋ช ์์ ์ผ๋ก ์ ์ธํ์ฌ ์ฌ์ฉํ๋ค. SaaS๋ ์ํฉ์ ๋ฐ๋ผ ๋ค์ํ ํ๊ฒฝ(window, mac, linux)์ ๋ฐฐํฌ๋ ์ ์๋ค. Gemfile, pom ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ๊ฒฝ์์๋ SaaS๊ฐ ์ ์ ๋์ํ ์ ์์์ ๋ณด์ฅํ ์ ์๋ค. ์๋ฅผ ๋ค์ด curl ๋ฑ์ ์ฌ์ฉํ์ฌ lib๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ os์ ๋ฐ๋ผ ์ค๋์ ํ ์ ์๋ค.
3. Config
๋ชจ๋ ์ค์ ์ ๋ณด๋ ์ฝ๋๋ก๋ถํฐ ๋ถ๋ฆฌ๋ ๊ณต๊ฐ์ ์ ์ฅ๋์ด์ผ ํ๊ณ , ๋ฐํ์์์ ์ฝ๋์ ์ํด ์ฝํ์ผ ํ๋ค. SaaS๋ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ๋ฌ ํ๊ฒฝ(์ด์/๊ฐ๋ฐ)์ ๋ฐฐํฌํ๋ค. ์ด๋ฅผ ์ํด ํ๊ฒฝ๋ง๋ค ๋ฌ๋ฆฌ ์ฌ์ฉ๋์ด์ผ ํ๋ ์ ๋ณด๋ฅผ ๋ถ๋ฆฌํ๋ค.
๋ถ๋ฆฌ๋์ด์ผ ํ ์ ๋ณด
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค๋ฅธ ๋ฐฑ์ ์๋น์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฆฌ์์ค
- ์ธ๋ถ ๋ฆฌ์์ค(S3, Twitter ๋ฑ)์ ์ธ์ฆ ์ ๋ณด
- ๊ฐ ๋ฐฐํฌ๋ง๋ค ๋ฌ๋ผ์ง๋ ๊ฐ(cononical hostname..)
- dev,test,stage,prod์ ๋ฐฐํฌ ๋จ๊ณ๋ง๋ค ๋ค๋ฅผ ์ ์๋ ์ด๋ค ๊ฐ๋ค
์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉด ์๋๋ ๊ณณ
- code
- properties file
- build : one build, many deploy๋๊น
- app server(jndi database ๊ฐ์ ์ ๋ณด)
Config ํญ๋ชฉ ์ค์ ๋ฐฉ๋ฒ
- ๋ฐฐํฌ ํ๊ฒฝ(๊ฐ๋ฐ/์ด์)์ฉ ์ค์ ํ์ผ์ ์์ฑ
- Spring Cloud Config ์ฌ์ฉ
4. Backing services
๋ฐฑ์๋ ์๋น์ค๋ฅผ ์ฐ๊ฒฐ๋ ๋ฆฌ์์ค๋ก ์ทจ๊ธํ๋ค. SaaS์ ๋ฆฌ์์ค๋ ์์ ๋กญ๊ฒ ๋ฐฐํฌ์ ์ฐ๊ฒฐ๋๊ฑฐ๋ ๋ถ๋ฆฌํ ์ ์๊ณ , ์ฝ๋ ์์ ์์ด ์ ํ์ด ๊ฐ๋ฅํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด DB๋ฅผ MySQL์์ Amazon RDS๋ก ์ ํํ ๋ ์ฝ๋ ์์ ์์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
๋ฐฑ์๋ ์๋น์ค
- ๋คํธ์ํฌ์ ํตํด ์ด์ฉํ๋ ๋ชจ๋ ์๋น์ค
- DB, Cache, SMTP, Messaging/Queueing system
์ค์ ๋ฐฉ๋ฒ
- Config์ ๋ฐฑ์๋ ์๋น์ค์ URL์ด๋ Locator๋ฅผ ์ ์ฅํ๊ณ , ์ฝ๋์์๋ ์ค์ ์ ์ฝ์ด์ ์ฌ์ฉ
- Factor3. Config ๊ธฐ๋ฅ ์ฌ์ฉ
5. Build, Release, Run
์ฝ๋ ๋ฒ ์ด์ค๋ build > release > run์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋ฐฐํฌ๋ก ๋ณํ๋๋ฉฐ, ๊ฐ ๋จ๊ณ๋ ์๊ฒฉํ๊ฒ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค.
์ค์ ๋ฐฉ๋ฒ
- ๋น๋ ๋จ๊ณ๋ ๊ฐ๋ฐ์, ๋ฐฐํฌ ๋จ๊ณ๋ ๋ฐฐํฌํด, ์คํ ๋จ๊ณ๋ ํ๋ก์ธ์ค ๋งค๋์ ์ ์ํด ์์
6. Process
์คํ ํ๊ฒฝ์์ ์ฑ์ ํ๋ ์ด์์ ํ๋ก์ธ์ค๋ก ์คํ๋๋ฉฐ, ๊ฐ ํ๋ก์ธ์ค๋ stateless๋ก ์๋ฌด๊ฒ๋ ๊ณต์ ํ์ง ์์์ผ ํ๋ค. SaaS๋ ์ฌ๋ฌ ๊ฐ์ ์ธ์คํฐ์ค๋ก ๋ฐฐํฌ๋ ์ ์๋ค. ๊ฐ ์ธ์คํด์ค๋ ๋ฉ๋ชจ๋ฆฌ ํ์ผ ๋ฑ์ ๊ณต์ ํ ์ ์์ผ๋ฉฐ, ์ธ์คํด์ค๊ฐ ์ฌ์คํ ๋ ๋ local file, session๊ณผ ๊ฐ์ ์ํ ์ ๋ณด๋ ๋ชจ๋ ์ด๊ธฐํ๋๋ค.
์ค์ ๋ฐฉ๋ฒ
- ๋ฉ๋ชจ๋ฆฌ/ํ์ผ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋จ์ผ ํธ๋์ญ์ ๋ด์์ ์ฝ๊ณ , ์ฐ๊ณ ๋ฑ์ ๋ชจ๋ ์์ ์ ์ฒ๋ฆฌ.
- ์ธ์ ์ํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ Memcached ๋๋ Redis์ ๊ฐ์ ๋ฐ์ดํฐ ์ ์ฅ์์ ์ ์ฅ
7. Port Binding
๋ฐฐํฌ๋ SaaS ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ๊ทผํ ์ ์๋๋ก ํฌํธ ๋ฐ์ธ๋ฉ์ ํตํด ์๋น์ค๋ฅผ ๊ณต๊ฐํ๋ค. ์ฑ๋ ๋ฐฑ์๋ ์๋น์ค์ฒ๋ผ URL์ ์ ๊ณตํ๊ณ , ๋ผ์ฐํ ๋ ์ด์ด๊ฐ ์ธ๋ถ์ ๊ณต๊ฐ๋ ํธ์คํธ ๋ช ์๋ก ๋ค์ด์จ ์์ฒญ์ ํฌํธ์ ๋ฐ์ธ๋ฉ ๋ ์น ํ๋ก์ธ์ค์ ์ ๋ฌํ๋ค. Factor4. Backing services์ ํ์ฅ์ผ๋ก, ํฌํธ ๋ฐ์ธ๋ฉ์ ์ํด ๊ณต๊ฐ๋๋ ์๋น์ค๋ HTTP๋ฟ๋ง ์๋๋ผ ejabberd๋ Redis ๊ฐ์ ๋ชจ๋ ์ข ๋ฅ์ ์๋ฒ ์ํํธ์จ์ด๊ฐ ํด๋น๋๋ค.
์ค์ ๋ฐฉ๋ฒ
- ๋ณดํต dependency์ ์น์๋ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ ๊ตฌํ
8. Concurrency
์ฑ์ ์ํ์ผ๋ก ํ์ฅํ ์ ์์ด์ผ ํ๊ณ , Factor6. Processes์ ์ํด ๋์์ฑ์ ๋์ผ ์ ์๋ค.
์ค์ ๋ฐฉ๋ฒ
- ๋ชจ๋ ์ผ์ ์ฒ๋ฆฌํ๋ ํ๋์ ํ๋ก์ธ์ค ๋์ ๊ธฐ๋ฅ๋ณ๋ก ๋ถ๋ฆฌ๋ ํ๋ก์ธ์ค ์คํ(micro service)
- ํ๋ก์ธ์ค๊ฐ ๋ฐ๋ชฌํํ๊ฐ ์๋์ด์ผ ํจ
- OS ํ๋ก์ธ์ค ๊ด๋ฆฌ์/๋ถ์ฐ ํ๋ก์ธ์ค ๋งค๋์ /Foreman ๊ฐ์ ํด์ ์์กดํด์ output stream์ ๊ด๋ฆฌํ๊ณ , ์ถฉ๋์ด ๋ฐ์ํ ํ๋ก์ธ์ค์ ๋์, ์ฌ์์๊ณผ ์ข ๋ฃ๋ฅผ ์ฒ๋ฆฌํด์ผ ํจ
9. Disposability
ํ๋ก์ธ์ค๋ shut down ์ ํธ๋ฅผ ๋ฐ์์ ๋ graceful shut down ํด์ผ ํ๋ค. SaaS๋ ์์ฒญ์ ์ํด Scale up/down์ด ๋น๋ฒํ ๋ฐ์ํ๋ค. Disposability๋ฅผ ์ค์ํจ์ผ๋ก์จ ์ด๋ฌํ ์ฌ์ฉ์ ์์ ์ฑ์ ์ป์ ์ ์๋ค. ์๋ฅผ ๋ค์ด Scale down ์์ ์ graceful shut down ์ด ์๋๋ผ๋ฉด db lock ๋ฑ์ผ๋ก ์ธํด ํ ํ๋ก์ธ์ค์ ์ํฅ์ ์ฃผ๊ฒ ๋๋ค.
10. dev/prod parity
development, staging, production ํ๊ฒฝ์ ์ต๋ํ ๋น์ทํ๊ฒ ์ ์งํ๋ค. SaaS ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ production ํ๊ฒฝ์ ์ฐจ์ด๋ฅผ ์๊ฒ ์ ์งํ์ฌ ์ง์์ ์ธ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ๋์์ธ๋์ด์ผ ํ๋ค.
์ค์ ๋ฐฉ๋ฒ
- ์๊ฐ์ ์ฐจ์ด๋ฅผ ์ต์ํ: ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ ๋ช ์๊ฐ ๋๋ ๋ช ๋ถ ํ์ ๋ฐฐํฌ๋์ด์ผ ํจ
- ๋ด๋น์์ ์ฐจ์ด๋ฅผ ์ต์ํ: ์ฝ๋๋ฅผ ์์ฑํ ๊ฐ๋ฐ์๋ค์ด ๋ฐฐํฌ์ production์์์ ๋ชจ๋ํฐ๋ง์ ๊น๊ฒ ๊ด์ฌํจ
- ํด์ ์ฐจ์ด๋ฅผ ์ต์ํ: ๊ฐ๋ฐ๊ณผ production ํ๊ฒฝ์ ์ต๋ํ ๋น์ทํ๊ฒ ์ ์ง
11. Logs
๋ก๊ทธ๋ฅผ ์ด๋ฒคํธ ์คํธ๋ฆผ์ผ๋ก ์ทจ๊ธํ์ฌ ๋ก๊ทธ๋ฅผ ๋ก์ปฌ์ ์ ์ฅํ์ง ์๋๋ค. SaaS๋ ์ธ์ ๋ ์ง ์ธ์คํด์ค๊ฐ ์์ฑ/์ญ์ ๋ ์ ์๋ค. ์ด๋ ๋ก์ปฌ์ ์ ์ฅ๋ ๋ก๊ทธ๋ ์ด๊ธฐํ๋๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ๋ ์คํธ๋ฆผ์ผ๋ก ์ทจ๊ธํ์ฌ ๋ณ๋์ ์ ์ฅ์์ ๋ณด๊ดํด์ผ ํ๋ค.
์ค์ ๋ฐฉ๋ฒ
- ์คํธ๋ฆผ์ ๋ฒํผ๋ง ์์ด stdout, stderr ๋ก ์ถ๋ ฅํจ
- ๋ณ๋์ ๋ก๊ทธ ์ ์ฅ์๋ฅผ ์ฌ์ฉ
12. Admin Process
admin/maintenance ์์ ์ ์ผํ์ฑ ํ๋ก์ธ์ค๋ก ์คํํด์ผ ํ๋ค.
์ผํ์ฑ ํ๋ก์ธ์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
- ์ผํ์ฑ ์คํฌ๋ฆฝํธ ์คํ
์ค์ ๋ฐฉ๋ฒ
- ๊ด๋ฆฌ/์ ์ง๋ณด์ ์์ ์ release์ ํจ๊ป ์คํ
- release์ ๋์ผํ ํ๊ฒฝ์์ ์คํํ๊ณ , ๊ฐ์ ์ฝ๋ ๋ฒ ์ด์ค์ config๋ฅผ ์ฌ์ฉ
- admin ์ฝ๋๋ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ํจ๊ป ๋ฐฐํฌ
Monolith VS Microservice Architecture
๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ (Monolithic Architecture)
์ฅ์
1. ์ด๋ค ๊ธฐ๋ฅ(์๋น์ค)์ด๋ ์ง ๊ฐ๋ฐ๋์ด์๋ ํ๊ฒฝ์ด ๊ฐ์์ ๋ณต์กํ์ง์๋ค.
2. ์ฝ๊ฒ ๊ณ ๊ฐ์ฉ์ฑ ์๋ฒ ํ๊ฒฝ์ ๋ง๋ค ์ ์๋ค. ( ๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ํ๋๋ ๋ง๋ค๋ฉด ๋จ)
3. End-to-End ํ ์คํธ๊ฐ ์ฉ์ดํ๋ค. (MSA์ ๊ฒฝ์ฐ ํ ์คํธ์ ํ์ํ ์๋น์ค๋ค์ ๋ชจ๋ ๋์์์ผ์ผํจ)
๋จ์
1. ํ ํ๋ก์ ํธ์ ๋ฉ์น๊ฐ ๋๋ฌด ์ปค์ ธ์ ์ดํ๋ฆฌ์ผ์ด์ ๊ตฌ๋์๊ฐ์ด ๋์ด๋๊ณ ๋น๋,๋ฐฐํฌ ์๊ฐ๋ ๊ธธ์ด์ง๋ค.
2. ์กฐ๊ทธ๋งํ ์์ ์ฌํญ์ด ์์ด๋ ์ ์ฒด๋ฅผ ๋ค์ ๋น๋ํ๊ณ ๋ฐฐํฌ๋ฅผ ํด์ผํ๋ค.
3. ๋ง์ ์์ ์ฝ๋๊ฐ ๋ชฐ๋ ค์์ด ๊ฐ๋ฐ์๊ฐ ๋ชจ๋๋ฅผ ์ดํด ํ ์ ์๊ณ ์ ์ง๋ณด์๋ ํ๋ค๋ค.
4. ์ผ๋ถ๋ถ์ ์ค๋ฅ๊ฐ ์ ์ฒด์ ์ํฅ์ ๋ฏธ์น๋ค.
5. ๊ธฐ๋ฅ๋ณ๋ก ์๋ง๋ ๊ธฐ์ , ์ธ์ด, ํ๋ ์์ํฌ๋ฅผ ์ ํํ๊ธฐ๊ฐ ๊น๋ค๋กญ๋ค.
Micro service architecture
์ฅ์
1. ๊ธฐ๋ฅ๋ณ๋ก ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ , ์์ ํ ๋น์ ์๋น์ค ๋จ์๋ก ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ํด๋น ๋ถ๋ถ์ ์จ์ ํ ์ดํดํ ์ ์๋ค.
2. ์๋ก ์ถ๊ฐ๋๊ฑฐ๋ ์์ ์ฌํญ์ด ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ง ๋น ๋ฅด๊ฒ ๋น๋, ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
3. ํด๋น ๊ธฐ๋ฅ์ ๋ง๋ ๊ธฐ์ , ์ธ์ด ๋ฑ์ ์ ํํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
4. ์ผ๋ถ๋ถ์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ํด๋น ๊ธฐ๋ฅ์๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ๊ทธ ๋ถ๋ถ๋ง ๋น ๋ฅด๊ฒ ๊ณ ์ณ์ ์ ์ํ๊ฐ ๊ฐ๋ฅํ๋ค.
๋จ์
1. ๊ด๋ฆฌ๊ฐ ํ๋ค๋ค. ์์ ์ฌ๋ฌ ์๋น์ค๋ค์ด ๋ถ์ฐ๋์ด์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ํฐ๋ง์ด ํ๋ค๋ค.
2. ๊ฐ๋ฐ์ ๊น๋ค๋ก์. ์๋ก๋ฅผ ํธ์ถํ์ฌ ์ ์ฒด ์๋น์ค๊ฐ ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฌด์กฐ๊ฑด ๋ค๋ฅธ ์๋น์ค๋ฅผ ํธ์ถํ๋ ์ฝ๋๊ฐ ์ถ๊ฐ๋๋ค.
3. ํต์ ๊ด๋ จ ์ค๋ฅ๊ฐ ์ฆ์ ์ ์๋ค. ๋ง์ดํฌ๋ก ์๋น์ค๋ค ๋ผ๋ฆฌ ๊ณ์ ์๋ก ํต์ ์ ํ๋ค๋ณด๋ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ณ์ ๋นํด ํต์ ๊ด๋ จ ์ค๋ฅ๊ฐ ์ฆ์๋ค.
4. ํ ์คํธ๊ฐ ๋ถํธํ๋ค. ์๋ก End-to-End ํ ์คํธ๋ฅผ ์ํด UI, Gateway ๋ฑ๋ฑ ์ฌ๋ฌ๊ฐ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ๊ตฌ๋์์ผ์ผ ํ์๋ค.
Everything should be a microservice
SOA์ MSA
- SOA(Service Oriented Architecture)
- SOA๋ ์๋น์ค ๋จ์๋ก ๊ฐ๋ฐ์ ํ๊ณ , ๊ฐ๋ฐ๋ ์๋น์ค๋ค์ ๊ณต์ ํจ์ผ๋ก์จ ์ฌ๊ฐ์ฉ์ฑ์ ๋๋ฆฌ๊ณ ์ ์ฐ์ฑ์ ํ๋ณดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
- MSA(Microservice Architecture)
- MSA ๋ํ ์์ฃผ ์์ ๋จ์์ ์๋น์ค๋ก ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํจ์ผ๋ก์จ ๋ฏผ์ฒฉํ๊ณ ์ ์ฐํ ์ค๊ณ๋ฅผ ํ ์ ์๋๋กํ๋ค.
- ์ฌ๊ฐ์ฉ์ฑ
SOA๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ณ , ์ด๋ฅผ ์ต๋ํ ์ฌ๊ฐ์ฉํ๋ค. ์๋ฅผ ๋ค๋ฉด, A ํ๊ณผ ๊ทธ ์์ B ํ์ด ์์ ๋, A์์ ๊ฐ๋ฐํ ์๋น์ค a๋ฅผ B์์๋ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ด๋ก์จ ๊ฐ๋ฐ๋ ์๋น์ค ๋จ์๋ก ์ฌ๊ฐ์ฉ์ฑ์ ๋๋ฆฌ๊ณ , ํ์์ ๋ฐ๋ผ ์ ์ฐํ๊ฒ ์ฌ์ฉํจ์ผ๋ก์จ ํจ์จ์ฑ์ ์ฆ์ง์ํฌ ์ ์๋ค.
ํ์ง๋ง MSA๋ ์๋น์ค๊ฐ ๊ณต์ ๋๊ธฐ๋ณด๋ค ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ ์งํฅํ๋ค.
์ฆ, ์ฌ๊ฐ์ฉ์ฑ์ด ๋์ด๋๋ฉด ์๋น์ค๊ฐ ๊ฒฐํฉ๋๊ฐ ๋์ด๋๊ธฐ ๋๋ฌธ์ ์์ฃผ ์์ ์๋น์ค ๋จ์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋๋์ด ๊ตฌ์ฑํจ์ผ๋ก์จ ํ๋ ฅ์ ์ด๊ณ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์๋ค. ๊ทธ๋์ MSA๋ ์๋น์ค๋ฅผ ๊ณต์ ํ๊ธฐ๋ณด๋ค ์๋ก ๊ฐ๋ฐํ์ฌ ๊ตฌ์ฑํ๋ค.
(SOA์์ ์ธ๊ธ๋๋ ์๋น์ค๋ณด๋ค ์์ ์์ฃผ ์์ ์๋น์ค์ด๊ธฐ ๋๋ฌธ์)
- ์๋น์ค๊ฐ ํต์ ๋ฐฉ์
์๋น์ค๊ฐ ํต์ ๋ฐฉ์์ด๋ค.
SOA๋ SOAP, WSDL, UDDI, ESB ๋ฑ ์๋น์ค๊ฐ ํตํฉ์ ์ด๊ณ ๊ณตํต์ ์ธ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋๊ณ ํต์ ํ๋ค. ๊ทธ๋์ ์๋น์ค๊ฐ ๊ฒฐํฉ๋๊ฐ ์ฆ๊ฐํ๋ค.
ํ์ง๋ง MSA๋ Restful API ๋ฐฉ์์ผ๋ก ์๋น์ค ์ ๊ณต์๊ฐ ์ธ๋ถ๋ก ๋ํ๋ธ API๋ฅผ ํตํด ํต์ ํ๋ค. ๋ฐ๋ผ์ ์๋น์ค๊ฐ ๊ฒฐํฉ์์ด ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ๊ณผ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
RESTful API
REST์ ํน์ง์ ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ๊ฒ
REST API์ ๊ฐ์ฅ ํฐ ํน์ง์ ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ์ง๋ฅผ ๊ทธ ์์ฒญ์ ๋ชจ์ต ์์ฒด๋ก ์ถ๋ก ์ด ๊ฐ๋ฅํ ๊ฒ.
Service Mesh Capabilities
- MicroService Architecture๋ฅผ ์ ์ฉํ ์์คํ ์ ๋ด๋ถ ํต์ ์ด Mesh ๋คํธ์ํฌ์ ํํ๋ฅผ ๋๋ ๊ฒ์ ๋น๋์ด Service Mesh๋ก ๋ช ๋ช ๋์์ต๋๋ค.
- Service Mesh ๋ ์๋น์ค ๊ฐ ํต์ ์ ์ถ์ํํ์ฌ ์์ ํ๊ณ , ๋น ๋ฅด๊ณ , ์ ๋ขฐํ ์ ์๊ฒ ๋ง๋๋ ์ ์ฉ InfraStructure Layer์
๋๋ค.
์ถ์ํ๋ฅผ ํตํด ๋ณต์กํ ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ์ ์ดํ๊ณ , ์ถ์ ํ๊ณ , ๋ด๋ถ ๋คํธ์ํฌ ๊ด๋ จ ๋ก์ง์ ์ถ๊ฐํจ์ผ๋ก์จ ์์ ์ฑ, ์ ๋ขฐ์ฑ, ํ๋ ฅ์ฑ, ํ์คํ, ๊ฐ์์ฑ, ๋ณด์์ฑ ๋ฑ์ ํ๋ณดํฉ๋๋ค. - Service Mesh ๋ URL ๊ฒฝ๋ก, ํธ์คํธ ํค๋, API ๋ฒ์ ๋๋ ๊ธฐํ ์์ฉ ํ๋ก๊ทธ๋จ ์์ค ๊ท์น์ ๊ธฐ๋ฐ์ผ๋กํ๋ ๊ณ์ธต 7 ๋คํธ์ํฌ Layer ์
๋๋ค.
Service Mesh ์ ๊ตฌํ์ฒด์ธ ๊ฒฝ๋ํ Proxy๋ฅผ ํตํด ๋ค์ํ Routing Rules, circuit breaker ๋ฑ ๊ณตํต๊ธฐ๋ฅ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ์๋น์ค ๊ฐ ํต์ ์ ์ฐ๊ด๋ ๊ธฐ๋ฅ ๋ฟ๋ง ์๋๋ผ, ์๋น์ค์ ๋ฐฐํฌ ์ ๋ต์๋ ๋์์ ์ค๋๋ค.
์ Service Mesh ๋ฅผ ์ ์ฉํ๋๊ฐ?
Service Mesh ๊ฐ ๋ ์ค๋ฅด๋ ์ด์ ๋ ๋ฌด์์ผ๊น์ ?
MicroService Architecture๋ Monolitic Architecture์ ๋จ์ ๊ทน๋ณต๊ณผ Cloud ํ๊ฒฝ์์ ์์คํ ์ ์ด์ํ ๋์ ์ด์ ์ ๊ทน๋ํํ๊ธฐ ์ํด ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ๋ง์ ๋ฌธ์ ๋ค์ด ํด๊ฒฐ๋์์ง๋ง, ๋๋ค๋ฅธ ๋ฌธ์ ์ ๋ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๊ฒ์ ์์คํ ์ ๋ฐํ์ ๋ณต์ก์ฑ ์ ๋๋ค.
https://medium.com/dtevangelist/service-mesh-%EB%9E%80-8dfafb56fc07
Service Mesh ๊ตฌํ
Service Mesh Architecture์ ๊ตฌํ์ ๋ณดํต ์๋น์ค์ ์๋จ์ ๊ฒฝ๋ํ ํ๋ก์๋ฅผ ์ฌ์ด๋์นด ํจํด์ผ๋ก ๋ฐฐ์นํ์ฌ ์๋น์ค ๊ฐ ํต์ ์ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํฉ๋๋ค.
์๋น์ค ๊ฐ ํต์ ์ ์ฌ์ด๋์นด๋ก ๋ฐฐ์น๋ ๊ฒฝ๋ํ Proxy๋ฅผ ํตํด์ ๋์ํฉ๋๋ค. ์ด ๊ฒฝ๋ํ Proxy์ Routing rules, retry, timeout ๋ฑ์ ์ค์ ํ๊ณ ๋ก์ง์ ์์ฑํ์ฌ ๊ณตํต ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๋ถ๋ฆฌ์ํฌ ์ ์์ต๋๋ค.
Spring Cloud
Spring boot + Spring Cloud
์ถ์ฒ : ์ธํ๋ฐ - Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก ์๋น์ค ์ ํ๋ฆฌ์ผ์ด์ (MSA)
'Server๐งค > SpringCloud' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SpringCloud] API Gateway Service (1) | 2023.10.02 |
---|---|
[MSA] - ์น์ 1. Service Discovery (0) | 2023.09.20 |