API ์ค๊ณ: ํด๋ผ์ด์ธํธ๊ฐ ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ฐํํ๊ธฐ
API๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ํตํ๋ ์ธํฐํ์ด์ค๋ก, ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฐํํ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ์ด๋ป๊ฒ ๋ฐํํ ๊ฒ์ธ๊ฐ: API ์ค๊ณ ๋ฐฉ๋ฒ๋ก
- REST, GraphQL ๋ฑ ๋ค์ํ API ์ค๊ณ ๋ฐฉ์์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๋ฐฉ์์ด ๋ฐ์ดํฐ ์์ฒญ๊ณผ ๋ฐํ์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ค.
- ์ ๋ฐํํ๊ธฐ: ์๋์ ๊ฐ์ฉ์ฑ ์ต์ ํ
- ์๋: ๋น ๋ฅธ ์๋ต์ ์ํด ์บ์ ๋์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ต์ ํ, ์ฟผ๋ฆฌ ์ฑ๋ฅ ๊ฐ์ ๋ฑ์ ๊ณ ๋ คํ๋ค.
- ๊ฐ์ฉ์ฑ: MSA(๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ)์ ELB(๋ก๋๋ฐธ๋ฐ์ฑ) ๋ฑ์ ๊ธฐ์ ์ ํตํด ์์คํ ์ ์์ ์ฑ๊ณผ ํ์ฅ์ฑ์ ๋ณด์ฅํ๋ค.
๋ฐ์ดํฐ ๊ด๋ฆฌ: ๋ฐฑ์๋์ ํต์ฌ ์ญํ
๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ฃผ์ ๋ชฉํ ์ค ํ๋๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ํน์ ์ฃผ๋ฌธ์ ๋ฐฐ์ก์ง๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด, ์๋ฒ๋ ์ด๋ค ์ฃผ๋ฌธ์ ์์ ํ ์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์์ ํ ์ง ์์์ผ ํ๋ค.
- ๋ฐ์ดํฐ ์๋ณ: URL๊ณผ Path Variable, Query Parameter๋ฅผ ์ฌ์ฉํด ์ด๋ค ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ง ๊ฒฐ์ ํ๋ค.
- ๋ฐ์ดํฐ ์์ : HTTP ๋ฉ์๋(GET, POST, PUT, DELETE ๋ฑ)๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ณ , ์์ฑํ๊ณ , ์์ ํ๊ณ , ์ญ์ ํ๋ค.
์ง๋ ฌํ์ ์ญ์ง๋ ฌํ: ์ธ๋ถ์ ๋ด๋ถ ๋ฐ์ดํฐ ๋ณํ
- ์ง๋ ฌํ(Serialization): ๋ด๋ถ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์ ์ ๋ฌํ๊ธฐ ์ํด JSON๊ณผ ๊ฐ์ ํ์์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ด๋ค.
- ์ญ์ง๋ ฌํ(Deserialization): ์ธ๋ถ์์ ๋ฐ์ JSON ๋ฐ์ดํฐ๋ฅผ ๋ด๋ถ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ด๋ค.
์ด ๊ณผ์ ์ ๋ฐ์ดํฐ๊ฐ ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ํจ์จ์ ์ผ๋ก ์ ๋ฌ๋๊ณ , ์ฒ๋ฆฌ๋ ์ ์๋๋ก ๋๋๋ค
์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ: ๋ฐฑ์๋ ๊ฐ๋ฐ์ ํ ๋
์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋ ๋๊ตฌ์ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค. ๋ํ์ ์ธ ํ๋ ์์ํฌ๋ก๋ Java์ Spring, Python์ Django, Ruby์ Ruby-on-Rails ๋ฑ์ด ์๋ค.
์ด๋ค ํ๋ ์์ํฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค:
- ์์ฒญ ๋งคํ(Request Mapping): ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ ์ ํ ์๋ฒ ๋ฉ์๋์ ๋งคํ
- ์ค๋ ๋ ๊ด๋ฆฌ: ์๋ฒ ๋ด์์์ ๋์์ฑ ์ฒ๋ฆฌ
- ์ง๋ ฌํ/์ญ์ง๋ ฌํ: ๋ฐ์ดํฐ๋ฅผ JSON์ผ๋ก ๋ณํํ๊ฑฐ๋ JSON์ ๊ฐ์ฒด๋ก ๋ณํ
- ๋ณด์(Security): ์ธ์ฆ ๋ฐ ๊ถํ ๊ด๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ์ ์ฐจ์ด
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํน์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ๋๊ตฌ๋ก, ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
- ํ๋ ์์ํฌ๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๋ฉฐ, ๊ฐ๋ฐ์์๊ฒ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๊ณ ์ ์ด๊ถ์ ์ผ๋ถ ๊ฐ์ ธ๊ฐ๋ค. ์ด๋ฅผ **์ ์ด์ ์ญ์ (Inversion of Control, IoC)**์ด๋ผ๊ณ ํ๋ค.
ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์ ํธ์์ฑ์ด ๋์์ง์ง๋ง, ๊ทธ๋งํผ ํ์ตํด์ผ ํ ๋ด์ฉ๋ ๋ง์์ง๋ค.
์๋ฒ ์ธํ๋ผ ๊ตฌ์ฑ: ๋ฌผ๋ฆฌ ์๋ฒ vs ํด๋ผ์ฐ๋ ์๋ฒ
์๋ฒ ์ธํ๋ผ๋ ๋ฌผ๋ฆฌ์ ์๋ฒ์ ๊ฐ์ ์๋ฒ(ํด๋ผ์ฐ๋ ์๋ฒ)๋ก ๊ตฌ๋ถ๋๋ค.
- ๋ฌผ๋ฆฌ ์๋ฒ(On-Premise): ์ง์ ์๋ฒ๋ฅผ ๊ตฌ๋งคํ๊ณ ์ ์ง๋ณด์ํ๋ ๋ฐฉ์์ผ๋ก, ๊ณ ์ ๋น์ฉ์ด ๋ฐ์ํ์ง๋ง, ์๋ฒ๋ฅผ ์์ ํ ์ ์ดํ ์ ์๋ค.
- ๊ฐ์ ์๋ฒ(ํด๋ผ์ฐ๋ ์๋ฒ): AWS, Azure ๋ฑ์ ํด๋ผ์ฐ๋ ์๋น์ค์์ ์๋ฒ๋ฅผ ์๋ํ๋ ๋ฐฉ์์ผ๋ก, ์ ์ฐํ ๋น์ฉ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์๋ฒ ๊ด๋ฆฌ ๋ถ๋ด์ ๋์ด์ค๋ค.
์๋ฒ๋ฆฌ์ค(Serverless)์ ๋ก๋๋ฐธ๋ฐ์ฑ
- ์๋ฒ๋ฆฌ์ค(Serverless): ์๋ฒ ๊ด๋ฆฌ ์์ด ํจ์๋ง ์ ๊ณตํด ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก, ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ์์ฒญ ํ์์ ๋ฐ๋ผ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
- ๋ก๋๋ฐธ๋ฐ์ฑ: ๋๋ ํธ๋ํฝ์ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ์์ผ ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๊ณ , ์์คํ ์์ ์ฑ์ ๋์ด๋ ๊ธฐ์ ์ด๋ค. ์ด๋ฅผ ํตํด ํน์ ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ์ง ์๋๋ก ๊ด๋ฆฌํ๋ค.
๋ฐฐํฌ ์ ๋ต: Rolling, Canary, Blue-Green
์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก์ด ๋ฒ์ ์ ๋ฐฐํฌํ ๋, ์ฌ๋ฌ ๊ฐ์ง ์ ๋ต์ ์ฌ์ฉํ ์ ์๋ค:
- Rolling ๋ฐฐํฌ: ๊ตฌ๋ฒ์ ์ ํ๋์ฉ ์ข ๋ฃํ๊ณ , ์ ๋ฒ์ ์ ํ๋์ฉ ์์ํ๋ ๋ฐฉ์. ํธ๋ํฝ์ด ์ค๋จ ์์ด ์ ํ๋๋ค.
- Canary ๋ฐฐํฌ: ์ผ๋ถ ์ฌ์ฉ์์๊ฒ๋ง ์ ๋ฒ์ ์ ๋ฐฐํฌํด ํ ์คํธํ ํ, ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์ ์ฒด๋ก ํ์ฅํ๋ ๋ฐฉ์.
- Blue-Green ๋ฐฐํฌ: ๋ ๊ฐ์ ์๋ฒ ๊ทธ๋ฃน(Blue์ Green)์ ์ ์งํ๋ฉฐ, ์ ๋ฒ์ ์ผ๋ก ์ ํ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ฆ์ ๋กค๋ฐฑํ ์ ์๋ ๋ฐฉ์์ด๋ค.
โน๏ธ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
'๐ปDEV-STUDY > HTTP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP Cache ๊ฐ๋ ๋ฐ Cache-control ํค๋ (0) | 2024.08.20 |
---|---|
๋ก๋๋ฐธ๋ฐ์ฑ ๊ฐ๋ ๋ฐ ๋ฐฐํฌ ๋ฐฉ์ (0) | 2024.08.19 |
ํ๋ก ํธ ์น ๊ฐ๋ฐ์ ํ์ ๊ฐ๋ : ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ถํฐ SSR๊น์ง (0) | 2024.08.19 |
ํ๋ก ํธ์๋ ์น ๊ฐ๋ฐ (0) | 2024.08.19 |
์น ์๋ฒ(WS)์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ(WAS) (0) | 2024.08.18 |