μ μΈκ³μ μΌλ‘ λΆμ°λ μ ν리μΌμ΄μ μμ λ§μ΄ν¬λ‘μλΉμ€ ν΅μ μ κ΄λ¦¬νκΈ° μν API κ²μ΄νΈμ¨μ΄ μν€ν μ², μ΄μ , ꡬν μ λ΅ λ° λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄λ³΄μΈμ.
API κ²μ΄νΈμ¨μ΄: κΈλ‘λ² νμ₯μ±μ μν λ§μ΄ν¬λ‘μλΉμ€ ν΅μ μ€μ μ§μ€ν
μ€λλ μ 볡μ‘ν μννΈμ¨μ΄ νκ²½μμ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λ νμ₯ κ°λ₯νκ³ νλ ₯μ μ΄λ©° μ μ§ κ΄λ¦¬ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν μΈκΈ° μλ μ κ·Ό λ°©μμΌλ‘ λΆμνμ΅λλ€. κ·Έλ¬λ λ§μ΄ν¬λ‘μλΉμ€μ λΆμ°λ νΉμ±μ νΉν μλΉμ€ κ°μ ν΅μ μ κ΄λ¦¬νλ λ° μμ΄ λ νΉν κ³Όμ λ₯Ό μ κΈ°ν©λλ€. λ°λ‘ μ΄ μ§μ μμ API κ²μ΄νΈμ¨μ΄κ° μ€μν μν μ νλ©°, μ€μ μ§μ μ μν μ νκ³ κΈ°λ³Έ λ§μ΄ν¬λ‘μλΉμ€μ λν λͺ¨λ μμ μμ²μ κ΄λ¦¬ν©λλ€. μ΄ κΈ°μ¬μμλ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ API κ²μ΄νΈμ¨μ΄μ μν , μ΄μ , ꡬν μ λ΅ λ° κΈλ‘λ² νμ₯μ± λ¬μ±μ μν λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄λ΄ λλ€.
λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ² μ΄ν΄
API κ²μ΄νΈμ¨μ΄λ₯Ό μμΈν μμ보기 μ μ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μ ν΅μ¬ μμΉμ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. λ§μ΄ν¬λ‘μλΉμ€λ μ ν리μΌμ΄μ μ΄ μκ³ λ 립μ μ΄λ©° λμ¨νκ² κ²°ν©λ μλΉμ€μ λͺ¨μμΌλ‘ ꡬμ±λλ μ€κ³ μ κ·Ό λ°©μμ λλ€. κ° μλΉμ€λ νΉμ λΉμ¦λμ€ κΈ°λ₯μ λ΄λΉνλ©° λ 립μ μΌλ‘ κ°λ°, λ°°ν¬ λ° νμ₯λ μ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ μ¬λ¬ κ°μ§ μ΄μ μ μ 곡ν©λλ€:
- ν₯μλ νμ₯μ±: κ°λ³ μλΉμ€λ νΉμ μꡬ μ¬νμ λ°λΌ λ 립μ μΌλ‘ νμ₯λ μ μμ΅λλ€.
- μ¦κ°λ 볡μλ ₯: ν μλΉμ€μ μ₯μ κ° λ€λ₯Έ μλΉμ€μ κ°μ©μ±μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€.
- λ λΉ λ₯Έ κ°λ° μ£ΌκΈ°: λ μμ μ½λλ² μ΄μ€μ λ 립μ μΈ λ°°ν¬λ₯Ό ν΅ν΄ λ λΉ λ₯Έ κ°λ° λ° λ¦΄λ¦¬μ€ μ£ΌκΈ°κ° κ°λ₯ν©λλ€.
- κΈ°μ λ€μμ±: λ€μν μλΉμ€λ₯Ό μλ‘ λ€λ₯Έ κΈ°μ μ μ¬μ©νμ¬ κ΅¬μΆν μ μμΌλ―λ‘ νμ μμ μ κ°μ₯ μ ν©ν λꡬλ₯Ό μ νν μ μμ΅λλ€.
- λ μ¬μ΄ μ μ§λ³΄μ: μκ³ μ§μ€λ μλΉμ€λ μ΄ν΄, λλ²κΉ λ° μ μ§ κ΄λ¦¬κ° λ μ½μ΅λλ€.
κ·Έλ¬λ λ§μ΄ν¬λ‘μλΉμ€λ 볡μ‘μ±λ μΌκΈ°ν©λλ€. νλμ μ ν리μΌμ΄μ μ΄ λ€λ₯Έ μ ν리μΌμ΄μ κ³Ό ν΅μ νλ λμ , μ΄μ λ§μ λ§μ΄ν¬λ‘μλΉμ€κ° μλ‘ ν΅μ ν΄μΌ νλ©°(μλΉμ€ κ° ν΅μ ), μΈλΆ ν΄λΌμ΄μΈνΈλ μ΄λ¬ν μλΉμ€μ ν΅μ ν΄μΌ ν©λλ€. λͺ¨λ λ§μ΄ν¬λ‘μλΉμ€λ₯Ό μΈλΆ ν΄λΌμ΄μΈνΈμ μ§μ λ ΈμΆνλ©΄ λ€μκ³Ό κ°μ λ¬Έμ κ° λ°μν μ μμ΅λλ€:
- μ¦κ°λ 볡μ‘μ±: ν΄λΌμ΄μΈνΈλ κ° λ§μ΄ν¬λ‘μλΉμ€μ μμΉλ₯Ό μμμΌ νλ©° μλΉμ€ κ²μ, λ‘λ λ°Έλ°μ± λ° μ₯μ 볡ꡬλ₯Ό μ²λ¦¬ν΄μΌ ν©λλ€.
- 보μ μν: λͺ¨λ λ§μ΄ν¬λ‘μλΉμ€λ₯Ό λ ΈμΆνλ©΄ 곡격 νλ©΄μ΄ μ¦κ°νκ³ λ³΄μ μ μ± μ μννκΈ°κ° λ μ΄λ €μμ§λλ€.
- κ°ν κ²°ν©λ: ν΄λΌμ΄μΈνΈκ° κΈ°λ³Έ λ§μ΄ν¬λ‘μλΉμ€μ κ°νκ² κ²°ν©λμ΄ μμ€ν μ λ°μ μν€κΈ° μ΄λ ΅κ² λ§λλλ€.
μ΄ μ§μ μμ API κ²μ΄νΈμ¨μ΄λ ν΄λΌμ΄μΈνΈμ λ§μ΄ν¬λ‘μλΉμ€ κ°μ μ€κ°μ μν μ νλ©° λΉμ λ°ν©λλ€.
API κ²μ΄νΈμ¨μ΄μ μν
API κ²μ΄νΈμ¨μ΄λ λͺ¨λ ν΄λΌμ΄μΈνΈ μμ²μ λν λ¨μΌ μ§μ μ μν μ νλ©° κΈ°λ³Έ λ§μ΄ν¬λ‘μλΉμ€μ λν ν΅ν© μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€. λ€μκ³Ό κ°μ λ€μν μμ μ μ²λ¦¬ν©λλ€:
- μμ² λΌμ°ν : μμ² κ²½λ‘, ν€λ λλ κΈ°ν κΈ°μ€μ λ°λΌ λ€μ΄μ€λ μμ²μ μ μ ν λ§μ΄ν¬λ‘μλΉμ€λ‘ λΌμ°ν ν©λλ€.
- μΈμ¦ λ° μΈκ°: ν΄λΌμ΄μΈνΈλ₯Ό μΈμ¦νκ³ νΉμ 리μμ€μ λν μ‘μΈμ€λ₯Ό μΈκ°ν©λλ€.
- μλ μ ν: νΉμ κΈ°κ° λ΄μ ν΄λΌμ΄μΈνΈλ‘λΆν°μ μμ² μλ₯Ό μ ννμ¬ λ¨μ©μ λ°©μ§ν©λλ€.
- μμ² λ³ν: λ€μ΄μ€λ μμ²μ λ§μ΄ν¬λ‘μλΉμ€κ° μ΄ν΄ν μ μλ νμμΌλ‘ λ³νν©λλ€.
- μλ΅ μ§κ³: μ¬λ¬ λ§μ΄ν¬λ‘μλΉμ€μ μλ΅μ ν΄λΌμ΄μΈνΈλ₯Ό μν λ¨μΌ μλ΅μΌλ‘ μ§κ³ν©λλ€.
- λͺ¨λν°λ§ λ° λ‘κΉ : μμ€ν μ μ±λ₯κ³Ό μνλ₯Ό λͺ¨λν°λ§νκΈ° μν λ©νΈλ¦κ³Ό λ‘κ·Έλ₯Ό μμ§ν©λλ€.
- μΊμ±: μ±λ₯μ κ°μ νκ³ λ§μ΄ν¬λ‘μλΉμ€μ λΆνλ₯Ό μ€μ΄κΈ° μν΄ μλ΅μ μΊμν©λλ€.
μ΄λ¬ν κΈ°λ₯μ μ€μ μ§μ€νν¨μΌλ‘μ¨ API κ²μ΄νΈμ¨μ΄λ ν΄λΌμ΄μΈνΈ μνΈ μμ©μ λ¨μννκ³ λ§μ΄ν¬λ‘μλΉμ€κ° ν΅μ¬ λΉμ¦λμ€ λ‘μ§μ μ§μ€ν μ μλλ‘ ν©λλ€.
API κ²μ΄νΈμ¨μ΄ μ¬μ©μ μ΄μ
λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μ API κ²μ΄νΈμ¨μ΄λ₯Ό ꡬννλ©΄ λ€μκ³Ό κ°μ μλ§μ μ΄μ μ΄ μμ΅λλ€:
- λ¨μνλ ν΄λΌμ΄μΈνΈ μνΈ μμ©: ν΄λΌμ΄μΈνΈλ λ¨μΌ μλν¬μΈνΈμ μνΈ μμ©νμ¬ ν΅ν© νλ‘μΈμ€λ₯Ό λ¨μννκ³ λ³΅μ‘μ±μ μ€μ λλ€.
- ν₯μλ 보μ: μ€μ μ§μ€μ μΈμ¦ λ° μΈκ° μ μ± μ 보μμ κ°ννκ³ κ³΅κ²© νλ©΄μ μ€μ λλ€.
- ν₯μλ μ±λ₯: μΊμ±, λ‘λ λ°Έλ°μ± λ° μμ² λ³νμ μ±λ₯μ μ΅μ ννκ³ μ§μ° μκ°μ μ€μ λλ€.
- μ¦κ°λ νμ₯μ±: API κ²μ΄νΈμ¨μ΄λ μ¦κ°νλ νΈλν½μ μ²λ¦¬νκΈ° μν΄ λ 립μ μΌλ‘ νμ₯λ μ μμ΅λλ€.
- λμ¨ν κ²°ν©λ: ν΄λΌμ΄μΈνΈλ κΈ°λ³Έ λ§μ΄ν¬λ‘μλΉμ€μ λΆλ¦¬λμ΄ λ 립μ μΈ λ°μ λ° λ°°ν¬κ° κ°λ₯ν©λλ€.
- μ€μ μ§μ€μ λͺ¨λν°λ§ λ° λ‘κΉ : λͺ¨λ API νΈλν½μ λͺ¨λν°λ§νκ³ λ‘κΉ νλ λ¨μΌ μ§μ μ μ 곡νμ¬ λ¬Έμ ν΄κ²° λ° μ±λ₯ λΆμμ λ¨μνν©λλ€.
- API λ²μ κ΄λ¦¬: μ¬λ¬ λ²μ μ APIλ₯Ό μ§μνμ¬ μνν μ νκ³Ό μ΄μ λ²μ κ³Όμ νΈνμ±μ νμ©ν©λλ€.
API κ²μ΄νΈμ¨μ΄ ꡬν μ λ΅
API κ²μ΄νΈμ¨μ΄λ₯Ό ꡬννλ λ°μλ μ¬λ¬ κ°μ§ μ κ·Ό λ°©μμ μ¬μ©ν μ μμ΅λλ€:
1. λ§μΆ€ν API κ²μ΄νΈμ¨μ΄
λ§μΆ€ν API κ²μ΄νΈμ¨μ΄λ₯Ό ꡬμΆνλ©΄ κΈ°λ₯μ λν μ΅λνμ μ μ°μ±κ³Ό μ μ΄λ ₯μ μ»μ μ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ νΉμ μꡬ μ¬νμ΄λ 볡μ‘ν μ¬μ© μ¬λ‘κ° μλ μ‘°μ§μ μ ν©ν©λλ€. κ·Έλ¬λ μλΉν κ°λ° λ Έλ ₯κ³Ό μ§μμ μΈ μ μ§ κ΄λ¦¬κ° νμν©λλ€.
μμ: κ³ μ ν 보μ λ° μ±λ₯ μꡬ μ¬νμ΄ μλ λκ·λͺ¨ μ μμκ±°λ νμ¬λ Spring Cloud Gateway λλ Netflix Zuulκ³Ό κ°μ νλ μμν¬λ₯Ό μ¬μ©νμ¬ λ§μΆ€ν API κ²μ΄νΈμ¨μ΄λ₯Ό ꡬμΆν μ μμ΅λλ€.
2. μ€νμμ€ API κ²μ΄νΈμ¨μ΄
μ€νμμ€ API κ²μ΄νΈμ¨μ΄λ μ μ°μ±κ³Ό μ¬μ© νΈμμ± μ¬μ΄μ κ· νμ μ 곡ν©λλ€. μ΄λ¬ν κ²μ΄νΈμ¨μ΄λ λ€μν κΈ°λ₯μ μ 곡νλ©° νΉμ μꡬμ λ§κ² μ¬μ©μ μ μν μ μμ΅λλ€. μΈκΈ° μλ μ€νμμ€ API κ²μ΄νΈμ¨μ΄λ λ€μκ³Ό κ°μ΅λλ€:
- Kong: Nginx μμ ꡬμΆλ νμ₯μ±μ΄ λ°μ΄λκ³ νμ₯ κ°λ₯ν API κ²μ΄νΈμ¨μ΄μ λλ€.
- Tyk: μ±λ₯κ³Ό 보μμ μ€μ μ λ μ€νμμ€ API κ²μ΄νΈμ¨μ΄μ λλ€.
- Ocelot (.NET): .NET μ ν리μΌμ΄μ μ μν κ²½λ API κ²μ΄νΈμ¨μ΄μ λλ€.
- Traefik: λ§μ΄ν¬λ‘μλΉμ€λ₯Ό μν΄ μ€κ³λ νλμ μΈ HTTP 리λ²μ€ νλ‘μ λ° λ‘λ λ°Έλ°μμ λλ€.
μμ: μλ‘μ΄ λ§μ΄ν¬λ‘μλΉμ€ μ ν리μΌμ΄μ μ ꡬμΆνλ μ€ννΈμ μ μ¬μ© νΈμμ±κ³Ό νλΆν κΈ°λ₯ μΈνΈ λλ¬Έμ Kong λλ Tykλ₯Ό μ νν μ μμ΅λλ€.
3. ν΄λΌμ°λ κΈ°λ° API κ²μ΄νΈμ¨μ΄
ν΄λΌμ°λ μ 곡μ 체λ λ°°ν¬ λ° κ΄λ¦¬λ₯Ό λ¨μννλ κ΄λ¦¬ν API κ²μ΄νΈμ¨μ΄ μλΉμ€λ₯Ό μ 곡ν©λλ€. μ΄λ¬ν μλΉμ€λ μλ νμ₯, 보μ λ° λͺ¨λν°λ§κ³Ό κ°μ κΈ°λ₯μ μ 곡ν©λλ€. μΈκΈ° μλ ν΄λΌμ°λ κΈ°λ° API κ²μ΄νΈμ¨μ΄λ λ€μκ³Ό κ°μ΅λλ€:
- Amazon API Gateway: λͺ¨λ κ·λͺ¨μμ APIλ₯Ό μ½κ² μμ±, κ²μ, μ μ§ κ΄λ¦¬, λͺ¨λν°λ§ λ° λ³΄νΈν μ μλ μμ κ΄λ¦¬ν μλΉμ€μ λλ€.
- Azure API Management: APIλ₯Ό μν νμ΄λΈλ¦¬λ, λ©ν° ν΄λΌμ°λ κ΄λ¦¬ νλ«νΌμ λλ€.
- Google Cloud Apigee: API κ°λ° λ° κ΄λ¦¬λ₯Ό μν ν¬κ΄μ μΈ νλ«νΌμ λλ€.
μμ: μ ν리μΌμ΄μ μ ν΄λΌμ°λλ‘ λ§μ΄κ·Έλ μ΄μ νλ λκΈ°μ μ λ€λ₯Έ ν΄λΌμ°λ μλΉμ€μμ μνν ν΅ν©κ³Ό κ°μνλ κ΄λ¦¬λ₯Ό μν΄ Amazon API Gateway λλ Azure API Managementλ₯Ό μ νν μ μμ΅λλ€.
API κ²μ΄νΈμ¨μ΄ μ ν μ μ£Όμ κ³ λ € μ¬ν
API κ²μ΄νΈμ¨μ΄λ₯Ό μ νν λ λ€μ μμλ₯Ό κ³ λ €νμμμ€:
- νμ₯μ±: κ²μ΄νΈμ¨μ΄λ μ±λ₯ μ ν μμ΄ μ¦κ°νλ νΈλν½μ μ²λ¦¬ν μ μμ΄μΌ ν©λλ€.
- μ±λ₯: κ²μ΄νΈμ¨μ΄λ μ΅μνμ μ§μ° μκ°μ λ°μμν€κ³ μ±λ₯μ μ΅μ νν΄μΌ ν©λλ€.
- 보μ: κ²μ΄νΈμ¨μ΄λ μΈμ¦, μΈκ° λ° μλ μ νμ ν¬ν¨ν κ°λ ₯ν 보μ κΈ°λ₯μ μ 곡ν΄μΌ ν©λλ€.
- μ μ°μ±: κ²μ΄νΈμ¨μ΄λ νΉμ μꡬ μ¬νμ μΆ©μ‘±νλλ‘ μ¬μ©μ μ μν μ μμ΄μΌ ν©λλ€.
- μ¬μ© νΈμμ±: κ²μ΄νΈμ¨μ΄λ λ°°ν¬, κ΅¬μ± λ° κ΄λ¦¬κ° μ¬μμΌ ν©λλ€.
- λͺ¨λν°λ§ λ° λ‘κΉ : κ²μ΄νΈμ¨μ΄λ ν¬κ΄μ μΈ λͺ¨λν°λ§ λ° λ‘κΉ κΈ°λ₯μ μ 곡ν΄μΌ ν©λλ€.
- ν΅ν©: κ²μ΄νΈμ¨μ΄λ λ€λ₯Έ μμ€ν λ° μλΉμ€μ μννκ² ν΅ν©λμ΄μΌ ν©λλ€.
- λΉμ©: κ°λ°, λ°°ν¬ λ° μ μ§ κ΄λ¦¬λ₯Ό ν¬ν¨ν μ΄ μμ λΉμ©μ κ³ λ €ν΄μΌ ν©λλ€.
API κ²μ΄νΈμ¨μ΄ ν¨ν΄
μ ν리μΌμ΄μ μ νΉμ μꡬμ λ°λΌ μ¬λ¬ API κ²μ΄νΈμ¨μ΄ ν¨ν΄μ μ μ©ν μ μμ΅λλ€:
1. νλ‘ νΈμλλ₯Ό μν λ°±μλ (BFF)
BFF ν¨ν΄μ κ° ν΄λΌμ΄μΈνΈ μ ν리μΌμ΄μ (μ: μΉ, λͺ¨λ°μΌ, νλΈλ¦Ώ)μ λν΄ λ³λμ API κ²μ΄νΈμ¨μ΄λ₯Ό μμ±νλ κ²μ ν¬ν¨ν©λλ€. κ° BFFλ ν΄λΌμ΄μΈνΈμ νΉμ μꡬμ λ§μΆ°μ Έ μ±λ₯κ³Ό μ¬μ©μ κ²½νμ μ΅μ νν©λλ€. μ΄λ μλ‘ λ€λ₯Έ ν΄λΌμ΄μΈνΈ μ νμ΄ λ§€μ° λ€λ₯Έ λ°μ΄ν°λ μ§κ³λ₯Ό μꡬν λ νΉν μ μ©ν©λλ€. μλ₯Ό λ€μ΄, λͺ¨λ°μΌ μ ν리μΌμ΄μ μ λ€νΈμν¬ μμ²μ μ΅μννκ³ λ°°ν°λ¦¬ μλͺ μ μ΅μ ννλ λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό μ§κ³νλ BFFμ μ΄μ μ λ릴 μ μμ΅λλ€.
2. μ§κ³
API κ²μ΄νΈμ¨μ΄λ μ¬λ¬ λ§μ΄ν¬λ‘μλΉμ€μ μλ΅μ ν΄λΌμ΄μΈνΈλ₯Ό μν λ¨μΌ μλ΅μΌλ‘ μ§κ³ν©λλ€. μ΄λ ν΄λΌμ΄μΈνΈκ° ν΄μΌ ν μμ² μλ₯Ό μ€μ΄κ³ ν΅ν© νλ‘μΈμ€λ₯Ό λ¨μνν©λλ€. μ μμκ±°λ μ ν리μΌμ΄μ μ μ ν μμΈ νμ΄μ§λ₯Ό μκ°ν΄λ³΄μμμ€. μ ν μΈλΆ μ 보, 리뷰, μ¬κ³ λ° κ΄λ ¨ μ νμ λ³λμ λ§μ΄ν¬λ‘μλΉμ€μμ κ΄λ¦¬λ μ μμ΅λλ€. API κ²μ΄νΈμ¨μ΄λ μ΄λ¬ν μλΉμ€μ μλ΅μ μ ν μμΈ νμ΄μ§λ₯Ό μν λ¨μΌ μλ΅μΌλ‘ μ§κ³ν μ μμ΅λλ€.
3. μ‘°ν©
API κ²μ΄νΈμ¨μ΄λ λ¨μΌ μμ²μ μ²λ¦¬νκΈ° μν΄ μ¬λ¬ λ§μ΄ν¬λ‘μλΉμ€ κ°μ μνΈ μμ©μ μ‘°μ ν©λλ€. μ΄λ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈκ° μ¬λ¬ μλΉμ€μ μ§μ μνΈ μμ©ν νμ μμ΄ λ³΅μ‘ν λΉμ¦λμ€ λ‘μ§μ ꡬνν μ μμ΅λλ€. κ²°μ μ²λ¦¬ μν¬νλ‘μ°λ₯Ό μμν΄λ³΄μμμ€. API κ²μ΄νΈμ¨μ΄λ κ²°μ νλ‘μΈμ€λ₯Ό μλ£νκΈ° μν΄ κ²°μ μλΉμ€, μ£Όλ¬Έ μλΉμ€ λ° μλ¦Ό μλΉμ€ κ°μ μνΈ μμ©μ μ‘°μ ν μ μμ΅λλ€.
4. νλ‘μ
API κ²μ΄νΈμ¨μ΄λ κ°λ¨ν 리λ²μ€ νλ‘μ μν μ νμ¬ μ€μν λ³νμ΄λ μ§κ³λ₯Ό μννμ§ μκ³ μμ²μ μ μ ν λ§μ΄ν¬λ‘μλΉμ€λ‘ μ λ¬ν©λλ€. μ΄ ν¨ν΄μ μ΅μνμ μ²λ¦¬κ° νμν κ°λ¨ν μ¬μ© μ¬λ‘μ μ ν©ν©λλ€. μ΄λ λͺ¨λ리μ μ ν리μΌμ΄μ μ λ§μ΄ν¬λ‘μλΉμ€λ‘ μ²μ λ§μ΄κ·Έλ μ΄μ ν λ μμ£Ό μ¬μ©λ©λλ€. API κ²μ΄νΈμ¨μ΄λ λͺ¨λ리μμ΄ μ²μ²ν λΆν΄λλ λμ λ¨μΌ μ§μ μ μν μ ν©λλ€.
API κ²μ΄νΈμ¨μ΄ ꡬνμ μν λͺ¨λ² μ¬λ‘
μ±κ³΅μ μΈ API κ²μ΄νΈμ¨μ΄ ꡬνμ 보μ₯νλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄μμμ€:
- μ¬λ°λ₯Έ λꡬ μ ν: νΉμ μꡬ μ¬νκ³Ό μμ°μ λ§λ API κ²μ΄νΈμ¨μ΄λ₯Ό μ ννμμμ€.
- νμ₯μ±μ κ³ λ €ν μ€κ³: μ¦κ°νλ νΈλν½κ³Ό λ―Έλμ μ±μ₯μ μ²λ¦¬ν μ μλλ‘ API κ²μ΄νΈμ¨μ΄λ₯Ό μ€κ³νμμμ€.
- κ°λ ₯ν 보μ ꡬν: κ°λ ₯ν μΈμ¦, μΈκ° λ° μλ μ ν μ μ± μ ꡬννμμμ€.
- μ±λ₯ λͺ¨λν°λ§: API κ²μ΄νΈμ¨μ΄μ μ±λ₯μ μ§μμ μΌλ‘ λͺ¨λν°λ§νκ³ μ΅μ νν μμμ μλ³νμμμ€.
- λ°°ν¬ μλν: API κ²μ΄νΈμ¨μ΄μ λ°°ν¬ λ° κ΅¬μ±μ μλννμμμ€.
- API λ²μ κ΄λ¦¬ μ¬μ©: μνν μ νκ³Ό μ΄μ λ²μ κ³Όμ νΈνμ±μ νμ©νκΈ° μν΄ API λ²μ κ΄λ¦¬λ₯Ό ꡬννμμμ€.
- κ΅¬μ± μ€μ μ§μ€ν: κ΄λ¦¬λ₯Ό λ¨μννκ³ μΌκ΄μ±μ 보μ₯νκΈ° μν΄ API κ²μ΄νΈμ¨μ΄μ ꡬμ±μ μ€μ μ§μ€ννμμμ€.
- λͺ νν API κ³μ½ μ μ: ν΄λΌμ΄μΈνΈμ λ§μ΄ν¬λ‘μλΉμ€ κ°μ μνΈ μ΄μ©μ±μ 보μ₯νκΈ° μν΄ λͺ νν API κ³μ½μ μ립νμμμ€.
- μν· λΈλ μ΄μ»€ ꡬν: μ°μμ μΈ μ₯μ λ₯Ό λ°©μ§νκ³ λ³΅μλ ₯μ ν₯μμν€κΈ° μν΄ μν· λΈλ μ΄μ»€λ₯Ό μ¬μ©νμμμ€.
- λΆμ° μΆμ μ¬μ©: μ¬λ¬ λ§μ΄ν¬λ‘μλΉμ€μ κ±Έμ³ μμ²μ μΆμ νκ³ μ±λ₯ λ³λͺ© νμμ μλ³νκΈ° μν΄ λΆμ° μΆμ μ ꡬννμμμ€. Jaeger λλ Zipkinκ³Ό κ°μ λκ΅¬κ° μ¬κΈ°μ μ μ©ν©λλ€.
API κ²μ΄νΈμ¨μ΄ 보μ
API κ²μ΄νΈμ¨μ΄λ₯Ό 보νΈνλ κ²μ κ°μ₯ μ€μν©λλ€. λ€μμ λͺ κ°μ§ νμμ μΈ λ³΄μ κ³ λ € μ¬νμ λλ€:
- μΈμ¦: API ν€, JWT(JSON μΉ ν ν°) λλ OAuth 2.0κ³Ό κ°μ λ©μ»€λμ¦μ μ¬μ©νμ¬ ν΄λΌμ΄μΈνΈμ μ μμ νμΈν©λλ€.
- μΈκ°: μ¬μ©μ μν λλ κΆνμ λ°λΌ νΉμ 리μμ€μ λν μ‘μΈμ€λ₯Ό μ μ΄ν©λλ€.
- μλ μ ν: νΉμ κΈ°κ° λ΄μ ν΄λΌμ΄μΈνΈλ‘λΆν°μ μμ² μλ₯Ό μ ννμ¬ λ¨μ©μ λ°©μ§ν©λλ€.
- μ λ ₯ μ ν¨μ± κ²μ¬: μ£Όμ 곡격μ λ°©μ§νκΈ° μν΄ λͺ¨λ λ€μ΄μ€λ μμ²μ μ ν¨μ±μ κ²μ¬ν©λλ€.
- μνΈν: HTTPSλ₯Ό μ¬μ©νμ¬ ν΄λΌμ΄μΈνΈμ API κ²μ΄νΈμ¨μ΄ κ°μ λͺ¨λ ν΅μ μ μνΈνν©λλ€.
- μΉ μ ν리μΌμ΄μ λ°©νλ²½(WAF): μΌλ°μ μΈ μΉ κ³΅κ²©μΌλ‘λΆν° 보νΈνκΈ° μν΄ WAFλ₯Ό λ°°ν¬ν©λλ€.
- μ κΈ°μ μΈ λ³΄μ κ°μ¬: μ·¨μ½μ μ μλ³νκ³ ν΄κ²°νκΈ° μν΄ μ κΈ°μ μΈ λ³΄μ κ°μ¬λ₯Ό μνν©λλ€.
API κ²μ΄νΈμ¨μ΄μ λν κΈλ‘λ² κ³ λ € μ¬ν
κΈλ‘λ² μ ν리μΌμ΄μ μ μν API κ²μ΄νΈμ¨μ΄λ₯Ό μ€κ³ν λ λͺ κ°μ§ μμκ° μ€μν΄μ§λλ€:
- μ§μμ λΆμ°: μ μΈκ³ μ¬μ©μμ μ§μ° μκ°μ μ΅μννκΈ° μν΄ μ¬λ¬ μ§μμ API κ²μ΄νΈμ¨μ΄λ₯Ό λ°°ν¬ν©λλ€. μ½ν μΈ μ μ‘ λ€νΈμν¬(CDN)λ₯Ό νμ©νμ¬ μλ΅μ μΊμνκ³ μ§μ° μκ°μ λμ± μ€μ λλ€. μ§μλ³ λ°μ΄ν° μμ£Ό μꡬ μ¬νμ κ³ λ €νμμμ€.
- νμ§ν: μ¬λ¬ μΈμ΄μ λ¬Έμ μ§ν©μ μ§μν©λλ€. μ€λ₯ λ©μμ§ λ° κΈ°ν μλ΅μ΄ νμ§νλμλμ§ νμΈν©λλ€.
- μκ°λ: μκ°λ λ³νμ μ¬λ°λ₯΄κ² μ²λ¦¬ν©λλ€. λͺ¨λ λ μ§μ μκ°μ UTCλ‘ μ μ₯νκ³ νμμ λ°λΌ μ¬μ©μμ νμ§ μκ°λλ‘ λ³νν©λλ€.
- ν΅ν: μ¬λ¬ ν΅νλ₯Ό μ§μν©λλ€. ν΅ν λ³ν μλΉμ€λ₯Ό μ 곡ν©λλ€.
- κ·μ μ€μ: GDPR, CCPA λ±κ³Ό κ°μ κ΄λ ¨ λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ κ·μ μ μ€μν©λλ€. λ°°ν¬ μ§μμ μ νν λ λ°μ΄ν° μ£ΌκΆ μꡬ μ¬νμ κ³ λ €νμμμ€.
- λͺ¨λν°λ§: λ€λ₯Έ μ§μμμ API κ²μ΄νΈμ¨μ΄μ μ±λ₯κ³Ό κ°μ©μ±μ μΆμ νκΈ° μν΄ κΈλ‘λ² λͺ¨λν°λ§μ ꡬνν©λλ€. λ¬Έμ κ° λ°μνλ©΄ μλ¦Όμ λ°λλ‘ κ²½κ³ λ₯Ό μ€μ ν©λλ€.
λͺ¨λν°λ§ λ° λ‘κΉ
ν¨κ³Όμ μΈ λͺ¨λν°λ§ λ° λ‘κΉ μ API κ²μ΄νΈμ¨μ΄μ κΈ°λ³Έ λ§μ΄ν¬λ‘μλΉμ€μ μ±λ₯ λ° μνλ₯Ό μ΄ν΄νλ λ° λ§€μ° μ€μν©λλ€. λͺ¨λν°λ§ν΄μΌ ν μ£Όμ λ©νΈλ¦μ λ€μκ³Ό κ°μ΅λλ€:
- μμ² μ§μ° μκ°: μμ²μ μ²λ¦¬νλ λ° κ±Έλ¦¬λ μκ°.
- μ€λ₯μ¨: μ€λ₯κ° λ°μνλ μμ²μ λΉμ¨.
- μ²λ¦¬λ: μ΄λΉ μ²λ¦¬λλ μμ² μ.
- 리μμ€ μ¬μ©λ₯ : API κ²μ΄νΈμ¨μ΄μ CPU, λ©λͺ¨λ¦¬ λ° λ€νΈμν¬ μ¬μ©λ.
- API ν€ μ¬μ©λ: κ° API ν€μ μ¬μ© ν¨ν΄μ μΆμ νμ¬ μ μ¬μ μΈ λ¨μ©μ΄λ μλͺ»λ ꡬμ±μ μλ³ν©λλ€.
λ‘κ·Έμλ μμ², μλ΅, μ€λ₯ λ° λ³΄μ μ΄λ²€νΈμ λν μ λ³΄κ° ν¬ν¨λμ΄μΌ ν©λλ€. μμ€ν μ λͺ¨λ κ΅¬μ± μμμμ λ‘κ·Έλ₯Ό μμ§νκ³ λΆμνκΈ° μν΄ μ€μ μ§μ€μ λ‘κΉ μμ€ν μ μ¬μ©νλ κ²μ κ³ λ €νμμμ€. Elasticsearch, Kibana, Grafanaμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ λͺ¨λν°λ§ λ°μ΄ν°λ₯Ό μκ°ννκ³ λΆμν μ μμ΅λλ€.
API κ²μ΄νΈμ¨μ΄μ μλ²λ¦¬μ€ μν€ν μ²
API κ²μ΄νΈμ¨μ΄λ μλ²λ¦¬μ€ μν€ν μ²μμλ λ§€μ° μ μ©ν©λλ€. λ§μ ν΄λΌμ°λ μ 곡μ 체λ AWS Lambda, Azure Functions, Google Cloud Functionsμ κ°μ μλ²λ¦¬μ€ μ»΄ν¨ν μ΅μ μ μ 곡ν©λλ€. μ΄λ¬ν ν¨μλ μ’ μ’ API κ²μ΄νΈμ¨μ΄λ₯Ό ν΅ν΄ λ ΈμΆλμ΄ λΉμ© ν¨μ¨μ μ΄κ³ νμ₯ κ°λ₯ν λ°©μμΌλ‘ APIλ₯Ό ꡬμΆν μ μμ΅λλ€. μ΄ μλ리μ€μμ API κ²μ΄νΈμ¨μ΄λ μΈμ¦, μΈκ°, μμ² λΌμ°ν λ° κΈ°ν μΌλ°μ μΈ μμ μ μ²λ¦¬νκ³ μλ²λ¦¬μ€ ν¨μλ λΉμ¦λμ€ λ‘μ§μ ꡬνν©λλ€.
μΌλ°μ μΈ API κ²μ΄νΈμ¨μ΄ κ³Όμ
μ΄μ μλ λΆκ΅¬νκ³ API κ²μ΄νΈμ¨μ΄λ λ€μκ³Ό κ°μ κ³Όμ λ₯Ό μ μν μλ μμ΅λλ€:
- 볡μ‘μ±: API κ²μ΄νΈμ¨μ΄λ₯Ό ꡬννκ³ κ΄λ¦¬νλ κ²μ νΉν ν¬κ³ 볡μ‘ν λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μ κ²½μ° λ³΅μ‘ν μ μμ΅λλ€.
- μ±λ₯ λ³λͺ© νμ: API κ²μ΄νΈμ¨μ΄κ° μ λλ‘ μ€κ³λκ³ νμ₯λμ§ μμΌλ©΄ μ±λ₯ λ³λͺ© νμμ΄ λ°μν μ μμ΅λλ€.
- λ¨μΌ μ€ν¨ μ§μ : API κ²μ΄νΈμ¨μ΄λ κ³ κ°μ©μ±μ μΌλμ λκ³ κ΅¬ννμ§ μμΌλ©΄ λ¨μΌ μ€ν¨ μ§μ μ΄ λ μ μμ΅λλ€.
- κ΅¬μ± κ΄λ¦¬: νΉν λμ μΈ νκ²½μμ API κ²μ΄νΈμ¨μ΄μ ꡬμ±μ κ΄λ¦¬νλ κ²μ μ΄λ €μΈ μ μμ΅λλ€.
- 보μ μν: 보μμ΄ μ·¨μ½ν API κ²μ΄νΈμ¨μ΄λ μ 체 μμ€ν μ 보μ μνμ λ ΈμΆμν¬ μ μμ΅λλ€.
μ΄λ¬ν κ³Όμ λ₯Ό μννκΈ° μν΄μλ μ μ€ν κ³ν, μ€κ³ λ° κ΅¬νμ΄ νμμ μ λλ€.
API κ²μ΄νΈμ¨μ΄ κΈ°μ μ λ―Έλ λν₯
API κ²μ΄νΈμ¨μ΄ νκ²½μ λμμμ΄ μ§ννκ³ μμ΅λλ€. λͺ κ°μ§ μλ‘μ΄ λν₯μ λ€μκ³Ό κ°μ΅λλ€:
- μλΉμ€ λ©μ ν΅ν©: Istio λ° Linkerdμ κ°μ μλΉμ€ λ©μμμ κΈ΄λ°ν ν΅ν©. μλΉμ€ λ©μλ λ§μ΄ν¬λ‘μλΉμ€ ν΅μ μ κ΄λ¦¬νκΈ° μν μΈνλΌ κ³μΈ΅μ μ 곡νλ©°, API κ²μ΄νΈμ¨μ΄λ μ΄λ¬ν κΈ°λ₯μ νμ©ν μ μμ΅λλ€.
- GraphQL μ§μ: ν΄λΌμ΄μΈνΈκ° νμν λ°μ΄ν°λ§ μμ²ν μ μλλ‘ νλ APIμ© μΏΌλ¦¬ μΈμ΄μΈ GraphQLμ λν μ§μ μ¦κ°.
- AI κΈ°λ° API κ΄λ¦¬: API κ²μ, 보μ λΆμ λ° μ±λ₯ μ΅μ νμ κ°μ μμ μ μλννκΈ° μν΄ AI λ° λ¨Έμ λ¬λ μ¬μ©.
- μ£μ§ μ»΄ν¨ν : μ£μ§ λλ°μ΄μ€μ μ§μ° μκ°μ μ€μ΄κ³ μ±λ₯μ ν₯μμν€κΈ° μν΄ λ€νΈμν¬μ μ£μ§μ λ κ°κΉμ΄ κ³³μ API κ²μ΄νΈμ¨μ΄ λ°°ν¬.
κ²°λ‘
API κ²μ΄νΈμ¨μ΄λ νλ λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²μμ μ€μν κ΅¬μ± μμλ‘, μ€μ μ§μ€μ μ§μ μ μ μ 곡νκ³ ν΄λΌμ΄μΈνΈμ λ§μ΄ν¬λ‘μλΉμ€ κ°μ ν΅μ μ κ΄λ¦¬ν©λλ€. API κ²μ΄νΈμ¨μ΄λ₯Ό ꡬνν¨μΌλ‘μ¨ μ‘°μ§μ ν΄λΌμ΄μΈνΈ μνΈ μμ©μ λ¨μννκ³ , 보μμ κ°μ νλ©°, μ±λ₯μ ν₯μμν€κ³ , νμ₯μ±μ λμΌ μ μμ΅λλ€. μ¬λ°λ₯Έ API κ²μ΄νΈμ¨μ΄ μ루μ μ μ ννκ³ , λͺ¨λ² μ¬λ‘λ₯Ό ꡬννλ©°, μ±λ₯μ μ§μμ μΌλ‘ λͺ¨λν°λ§νλ κ²μ΄ μ±κ³΅μ μΈ API κ²μ΄νΈμ¨μ΄ ꡬνμ νμμ μ λλ€. API κ²μ΄νΈμ¨μ΄ νκ²½μ΄ κ³μ μ§νν¨μ λ°λΌ μλ‘μ΄ λν₯κ³Ό κΈ°μ μ λν μ 보λ₯Ό μ μ§νλ κ²μ΄ κΈλ‘λ² κ³ κ°μκ² μλΉμ€λ₯Ό μ 곡ν μ μλ κ²¬κ³ νκ³ νμ₯ κ°λ₯ν λ§μ΄ν¬λ‘μλΉμ€ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° μ€μν κ²μ λλ€.
μ΄ κ°μ΄λμ μ€λͺ λ κ°λ κ³Ό λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄ν¨μΌλ‘μ¨, μ μΈκ³μ μΌλ‘ νμ₯ κ°λ₯ν λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²λ₯Ό ꡬμΆνκ³ κ΄λ¦¬νκΈ° μν΄ API κ²μ΄νΈμ¨μ΄λ₯Ό ν¨κ³Όμ μΌλ‘ νμ©ν μ μμ΅λλ€.