์น์ด ๋์ํ๋ ๋ณธ์ง์ ์ธ ๋ฐฉ์์ ํด๋ผ์ด์ธํธ(Client)๊ฐ ์์ฒญ(Request)์ ๋ณด๋ด๊ณ , ์๋ฒ(Server)๊ฐ ๊ทธ์ ๋ํ ์๋ต(Response)์ ๋ฐํํ๋ Request-Response ์ฌ์ดํด์ด๋ค.
์ด ๊ธ์์๋ ์น์ ๊ธฐ๋ณธ์ ์ธ ๋์ ์๋ฆฌ๋ถํฐ ์์ํด ๋ค์ํ ์ํคํ ์ฒ์ ์ฅ๋จ์ , ๊ทธ๋ฆฌ๊ณ ๋ง์ดํฌ๋ก์๋น์ค(Microservice) ํ๊ฒฝ์์ API ๊ฒ์ดํธ์จ์ด(API Gateway)์ ๋ํด ์๊ธฐํด๋ณด๊ณ ์ ํ๋ค.
1. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ Request-Response
- ์น ๋ธ๋ผ์ฐ์ ↔ ์น์๋ฒ: ์ฌ์ฉ์๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์น ํ์ด์ง๋ฅผ ์์ฒญํ๋ฉด, ์น์๋ฒ๊ฐ ๊ทธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ.
- ์น์๋ฒ ↔ ์น์๋ฒ: ๋ง์ดํฌ๋ก์๋น์ค๋ OpenAPI๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ, ์๋ก ๋ค๋ฅธ ์๋ฒ ๊ฐ์ ํต์ ์ด ์ด๋ฃจ์ด์ง. ์ด๋ ์๋ฒ ๊ฐ์๋ ๋์ผํ Request-Response ์ฌ์ดํด์ด ์ ์ฉ๋๋ค.
2. ์น ์ํคํ ์ฒ์ ์ ํ
2.1. ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ (Monolithic Architecture)
๋จ์ผ์๋ฒ๋ก ์๋ฒ๊ฐ ํ ๋๋ก ๊ตฌ์ฑ๋์ด ์์. ์๋ฒ์ ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๊ฑฐ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ ์ฒด ์๋น์ค๊ฐ ์ค๋จ๋๋ค.
- ์ฅ์ : ๋จ์ํ ๊ตฌ์กฐ๋ก ์ธํด ๋ฐฐํฌ๊ณผ ์๋ฆฌ๊ฐ ๋น๊ต์ ์ฝ๋ค.
- ๋จ์ : ๋จ์ผ ์๋ฒ๋ก ๊ตฌ์ฑ๋ ์์คํ ์ด๊ธฐ ๋๋ฌธ์, ์์ ๋งํ๋ฏ, ์ ์ฒด ์๋น์ค๊ฐ ์ค๋จ๋จ → ์ด๋ฅผ SPOF(Single Point of Failure) ๋ผ๊ณ ํ๋ค.
2.2. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ (Microservice Architecture)
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ ๋ชจ๋๋ฆฌ์ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋ฐฉ์์ผ๋ก, ๊ฐ๊ฐ์ ์๋น์ค๊ฐ ๋ ๋ฆฝ๋ ์๋ฒ์์ ๋์ํ๋ค.
- ์ฅ์
- ํ๋์ ์๋ฒ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค. ์ฆ SPOF ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
- ํ์ฅ์ฑ → ๊ฐ ์๋น์ค๋ ํ์์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ ์๋น์ค๋ง๋ค ์๋ฒ๊ฐ ๋ง์์ง๋ฉด ์๋ฐฑ๊ฐ๋ ๊ฐ๋ฅํ๋ค.
- ๋จ์
- ์๋ง์ ์๋ฒ ์ ์ด๋ค API๋ฅผ ์ฌ์ฉํด์ผํ ์ง ์ ๋ฆฌ์ ๋, ๋ฒ์ ๊ด๋ฆฌ ๋ฑ์ด ๋ฒ๊ฑฐ์ด ๋ฌธ์ ๊ฐ ๋ฐ์.
3. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๋ฌธ์ ํด๊ฒฐ: API ๊ฒ์ดํธ์จ์ด (API Gateway)
์์๋งํ๋ฏ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๋ณต์ก์ฑ(API ์ ๋ฆฌ์ ๋, ๋ฒ์ ๊ด๋ฆฌ)์ ํด๊ฒฐํ๊ธฐ ์ํด API ๊ฒ์ดํธ์จ์ด๊ฐ ๋ฑ์ฅ.
API Gateway๋ ๋ชจ๋ ์๋ฒ์ ๋ํ ๋ชจ๋ API ํธ์ถ์ ์ค์ํํ์ฌ ๊ด๋ฆฌํจ. ์ด๋ฅผ ํตํด API ์ ๋ฆฌ์ ๋๊ณผ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ฉ์ดํด์ง๋ค. ๋ฒ์ ๊ด๋ฆฌ๋ Swagger๋ฅผ ํตํด ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- Consumer - Producer ๊ด๋ฆฌ: API Gateway๋ API์์ฒญ์ ์๋น์(Consumer)์ ์์ฐ์(Producer) ๊ฐ์ ์ค๊ฐ์๋ก์ ์ญํ ์ ํ๋ค.
Consumer-Producer ๋ชจ๋ธ์ ์์
๋ชจ๋ฐ์ผ ์ฑ(Consumer)์ด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์กฐํํ๋ ค๊ณ ํ ๋, API Gateway์ ์์ฒญ์ ๋ณด๋ธ๋ค. ์ด ์์ฒญ์ API Gateway์ ์ํด ์ฌ์ฉ์ ์ ๋ณด ์๋น์ค(Producer)๋ก ๋ผ์ฐํ ๋๋ค. ์ฌ์ฉ์ ์ ๋ณด ์๋น์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ ํ, ๊ฒฐ๊ณผ๋ฅผ API Gateway์ ๋ฐํํ๊ณ , API Gateway๋ ์ด ์๋ต์ ๋ชจ๋ฐ์ผ ์ฑ์ผ๋ก ์ ๋ฌํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ ์๋น์ค ๊ฐ์ ๋ณต์กํ ์ฐ๊ฒฐ์ ๋จ์ํํ๊ณ , API ๊ด๋ฆฌ์ ๋ถ๋ด์ ์ค์ผ ์ ์๋ค.
API Gateway์ ์ฃผ์ ๊ธฐ๋ฅ
- Consumer ์ ๊ทผ ๊ด๋ฆฌ
- API Gateway๋ ๊ฐ API๋ง๋ค ์ ๊ทผ ๊ฐ๋ฅํ ์๋น์(Consumer) ๋ชฉ๋ก(Consumer List)์ ๊ด๋ฆฌ.
- ์ด๋ฅผ ํตํด ํน์ API์ ์ ๊ทผํ ์ ์๋ ์๋น์๋ฅผ ๋ช ํํ ์ง์ .
- ์์
- ์ฌํ ์๋น์ค ๊ฐ๋ฐ์๊ฐ ๋ฐฐ์ก ์๋น์ค API๋ฅผ ํธ์ถํ ์ ์๋ ๊ถํ์ ์ป๊ณ ์ ํ ๋, ๋ฐฐ์ก ์๋น์ค API๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋ฐ์์๊ฒ ์ ๊ทผ ๊ถํ์ ์์ฒญ.
API Gateway ์ฌ์ฉ ์์
- Producer - Consumer List
- ์์ฐ์(Producer): API๋ฅผ ์ ๊ณตํ๋ ์ฃผ์ฒด
- ์๋น์(Consumer): API๋ฅผ ์ฌ์ฉํ๋ ์ฃผ์ฒด
- API Gateway๋ ์ด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ด๋ฆฌ.
- API Spec
- ์์ฒญ(Request): API ํธ์ถ ์ ํ์ํ ๋ฐ์ดํฐ์ ํ์
- ์๋ต(Response): API ํธ์ถ์ ๋ํ ๊ฒฐ๊ณผ์ ๋ฐ์ดํฐ ํ์
- API Gateway๋ ์ด๋ฌํ ๋ช ์ธ๋ฅผ ์ค์์์ ๊ด๋ฆฌํ์ฌ ์ผ๊ด์ฑ์ ์ ์ง.
๋ง์น๋ฉฐ
ํ์๋ ์์ผ๋ก๋ ๋ฐ์ดํฐ์ฌ์ฉ๋์ด ๋ง์์ง์๋ฐ๋ผ ๋ง์ดํฌ๋ก์๋น์ค์ API ๊ฒ์ดํธ์จ์ด๋ ๊ณ์ ๋ฐ์ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ธฐ์ ์ ๋ฐ์ ์ ๋ฐ๋ผ ์ด๋ฌํ ์ํคํ ์ฒ์ ๊ตฌ์กฐ๋ค์ ์ ์ ํ ์ด์ฉํ๊ณ ํ์ฉํ๋ ๊ฒ์ด ์ ์ ๋ ์ค์ํด์ง ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
โน๏ธ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
'๐ปDEV-STUDY > HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น ์๋ฒ(WS)์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS) (0) | 2024.08.18 |
---|---|
์น ๊ฒ์ ์์ง(๊ตฌ๊ธ๊ณผ SEO) ๋ฐ ์น ์ฑ๋ฅ ์งํ (0) | 2024.08.18 |
์น ์๋ฒ ์ฃผ์ ๋ณํ: DNS (Domain Name System) (0) | 2024.08.18 |
์น ๋ธ๋ผ์ฐ์ - Render ์ ์ฐจ (0) | 2024.08.18 |
๋ฐํ ๋ฐฉ๋ฒ: REST API / GraphQL (0) | 2024.08.18 |