νλ‘ νΈμλ μλΉμ€ λ©μμ κ°λ , νλ‘ νΈμλ μν€ν μ²μμ λ§μ΄ν¬λ‘μλΉμ€ ν΅μ λ° κ²μμ μν μ΄μ , ꡬν μ λ΅, μ€μ μ¬μ© μ¬λ‘λ₯Ό μ΄ν΄λ΄ λλ€.
νλ‘ νΈμλ μλΉμ€ λ©μ: λ§μ΄ν¬λ‘μλΉμ€ ν΅μ λ° μλΉμ€ κ²μ
λμμμ΄ μ§ννλ μΉ κ°λ° νκ²½μμ λ§μ΄ν¬λ‘μλΉμ€λ νμ₯ κ°λ₯νκ³ μ μ§λ³΄μ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν κ°λ ₯ν μν€ν μ² ν¨ν΄μΌλ‘ λΆμνμ΅λλ€. λ°±μλ μΈκ³μμλ μλΉμ€ κ° ν΅μ μ κ΄λ¦¬νκΈ° μν΄ μλΉμ€ λ©μλ₯Ό μ½κ² μ±ννμ§λ§, νλ‘ νΈμλλ μ’ μ’ λ€μ²μ Έ μμμ΅λλ€. μ΄ κΈμμλ νλ‘ νΈμλ μλΉμ€ λ©μμ κ°λ μ νꡬνκ³ , κ·Έ μ΄μ , ꡬν μ λ΅, κ·Έλ¦¬κ³ νλ‘ νΈμλ μ ν리μΌμ΄μ μ΄ λ°±μλ λ§μ΄ν¬λ‘μλΉμ€μ μνΈ μμ©νλ λ°©μμ μ΄λ»κ² νμ ν μ μλμ§ μ΄ν΄λ΄ λλ€.
μλΉμ€ λ©μλ 무μμΈκ°?
νλ‘ νΈμλμ λν΄ μμ보기 μ μ, μ ν΅μ μΈ λ°±μλ 컨ν μ€νΈμμ μλΉμ€ λ©μκ° λ¬΄μμΈμ§ μ μν΄ λ³΄κ² μ΅λλ€. μλΉμ€ λ©μλ μλΉμ€ κ°(service-to-service) ν΅μ μ κ΄λ¦¬νλ μ μ© μΈνλΌ κ³μΈ΅μ λλ€. μ΄λ μλΉμ€ κ²μ, λ‘λ λ°Έλ°μ±, νΈλν½ κ΄λ¦¬, 보μ λ° κ΄μ°° κ°λ₯μ±κ³Ό κ°μ λ¬Έμ λ₯Ό μ²λ¦¬νμ¬ μ ν리μΌμ΄μ κ°λ°μκ° μλΉμ€ λ΄μμ μ΄λ¬ν 볡μ‘ν κΈ°λ₯μ ꡬννλ λΆλ΄μ λμ΄μ€λλ€.
λ°±μλ μλΉμ€ λ©μμ μ£Όμ κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€:
- μλΉμ€ κ²μ: μ¬μ© κ°λ₯ν μλΉμ€ μΈμ€ν΄μ€λ₯Ό μλμΌλ‘ μ°Ύμ΅λλ€.
- λ‘λ λ°Έλ°μ±: μλΉμ€μ μ¬λ¬ μΈμ€ν΄μ€μ κ±Έμ³ νΈλν½μ λΆμ°ν©λλ€.
- νΈλν½ κ΄λ¦¬: λ€μν κΈ°μ€(μ: λ²μ , ν€λ)μ λ°λΌ μμ²μ λΌμ°ν ν©λλ€.
- 보μ: μΈμ¦, μΈκ° λ° μνΈνλ₯Ό ꡬνν©λλ€.
- κ΄μ°° κ°λ₯μ±: λͺ¨λν°λ§ λ° λλ²κΉ μ μν λ©νΈλ¦, λ‘κ·Έ λ° μΆμ μ 보λ₯Ό μ 곡ν©λλ€.
- 볡μμ±: μν· λΈλ μ΄νΉ λ° μ¬μλμ κ°μ λ΄κ²°ν¨μ± λ©μ»€λμ¦μ ꡬνν©λλ€.
μΈκΈ° μλ λ°±μλ μλΉμ€ λ©μ ꡬν체λ‘λ Istio, Linkerd, Consul Connectκ° μμ΅λλ€.
νλ‘ νΈμλ μλΉμ€ λ©μμ νμμ±
νλμ νλ‘ νΈμλ μ ν리μΌμ΄μ , νΉν μ±κΈ νμ΄μ§ μ ν리μΌμ΄μ (SPA)μ μ’ μ’ μ¬λ¬ λ°±μλ λ§μ΄ν¬λ‘μλΉμ€μ μνΈ μμ©ν©λλ€. μ΄λ‘ μΈν΄ λ€μκ³Ό κ°μ μ¬λ¬ κ°μ§ λ¬Έμ κ° λ°μν μ μμ΅λλ€:
- 볡μ‘ν API ν΅ν©: μλ§μ API μλν¬μΈνΈμ λ°μ΄ν° νμμ κ΄λ¦¬νλ κ²μ΄ λ²κ±°λ‘μμ§ μ μμ΅λλ€.
- κ΅μ°¨ μΆμ² 리μμ€ κ³΅μ (CORS) λ¬Έμ : SPAλ μ’ μ’ λ€λ₯Έ λλ©μΈμΌλ‘ μμ²μ 보λ΄μΌ νλ―λ‘ CORS κ΄λ ¨ 볡μ‘μ±μ΄ λ°μν©λλ€.
- 볡μμ± λ° λ΄κ²°ν¨μ±: νλ‘ νΈμλ μ ν리μΌμ΄μ μ λ°±μλ μλΉμ€ μ₯μ λ₯Ό μ°μνκ² μ²λ¦¬ν΄μΌ ν©λλ€.
- κ΄μ°° κ°λ₯μ± λ° λͺ¨λν°λ§: νλ‘ νΈμλμ λ°±μλ κ° ν΅μ μ μ±λ₯κ³Ό μνλ₯Ό μΆμ νλ κ²μ΄ μ€μν©λλ€.
- 보μ λ¬Έμ : νλ‘ νΈμλμ λ°±μλ κ°μ μ μ‘λλ λ―Όκ°ν λ°μ΄ν°λ₯Ό 보νΈνλ κ²μ΄ κ°μ₯ μ€μν©λλ€.
- νλ‘ νΈμλμ λ°±μλ νμ λΆλ¦¬: νλ‘ νΈμλμ λ°±μλ νμ΄ λ 립μ μΈ κ°λ° λ° λ°°ν¬ μ£ΌκΈ°λ₯Ό κ°μ§ μ μλλ‘ ν©λλ€.
νλ‘ νΈμλ μλΉμ€ λ©μλ νλ‘ νΈμλμ λ°±μλ κ°μ ν΅μ μ μν ν΅ν©λκ³ κ΄λ¦¬ κ°λ₯ν κ³μΈ΅μ μ 곡ν¨μΌλ‘μ¨ μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€. μ΄λ μ¬λ¬ λ§μ΄ν¬λ‘μλΉμ€μ μνΈ μμ©νλ 볡μ‘μ±μ μΆμννμ¬ νλ‘ νΈμλ κ°λ°μκ° μ¬μ©μ μΈν°νμ΄μ€ ꡬμΆκ³Ό μ¬μ©μ κ²½ν ν₯μμ μ§μ€ν μ μλλ‘ ν©λλ€. μλ₯Ό λ€μ΄, μ ν μΉ΄νλ‘κ·Έ, μ¬μ©μ κ³μ , μ₯λ°κ΅¬λ, κ²°μ λ₯Ό μν λ³λμ λ§μ΄ν¬λ‘μλΉμ€κ° μλ λκ·λͺ¨ μ μμκ±°λ νλ«νΌμ μκ°ν΄ 보μμμ€. νλ‘ νΈμλ μλΉμ€ λ©μκ° μλ€λ©΄, νλ‘ νΈμλ μ ν리μΌμ΄μ μ μ΄λ¬ν κ° λ§μ΄ν¬λ‘μλΉμ€μμ ν΅μ μ μ§μ κ΄λ¦¬ν΄μΌ νλ―λ‘ λ³΅μ‘μ±μ΄ μ¦κ°νκ³ μ μ¬μ μΈ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
νλ‘ νΈμλ μλΉμ€ λ©μλ 무μμΈκ°?
νλ‘ νΈμλ μλΉμ€ λ©μλ νλ‘ νΈμλ μ ν리μΌμ΄μ κ³Ό λ°±μλ λ§μ΄ν¬λ‘μλΉμ€ κ°μ ν΅μ μ κ΄λ¦¬νλ μν€ν μ² ν¨ν΄μ΄μ μΈνλΌ κ³μΈ΅μ λλ€. μ΄λ λ°±μλ μλΉμ€ λ©μμ μ μ¬ν μ΄μ μ μ 곡νλ κ²μ λͺ©νλ‘ νμ§λ§, νλ‘ νΈμλ κ°λ°μ νΉμ μꡬμ λ§μΆ°μ Έ μμ΅λλ€.
νλ‘ νΈμλ μλΉμ€ λ©μμ μ£Όμ κ΅¬μ± μμ λ° κΈ°λ₯μ λ€μκ³Ό κ°μ΅λλ€:
- API κ²μ΄νΈμ¨μ΄ λλ BFF(Backend for Frontend): λͺ¨λ νλ‘ νΈμλ μμ²μ λν μ€μ μ§μ μ μ λλ€. μ¬λ¬ λ°±μλ μλΉμ€μ λ°μ΄ν°λ₯Ό μ§κ³νκ³ , λ°μ΄ν° νμμ λ³ννλ©°, μΈμ¦ λ° μΈκ°λ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
- μ£μ§ νλ‘μ: νλ‘ νΈμλ μμ²μ κ°λ‘μ±κ³ λΌμ°ν νλ κ²½λ νλ‘μμ λλ€. λ‘λ λ°Έλ°μ±, νΈλν½ κ΄λ¦¬, μν· λΈλ μ΄νΉκ³Ό κ°μ κΈ°λ₯μ ꡬνν μ μμ΅λλ€.
- μλΉμ€ κ²μ: μ¬μ© κ°λ₯ν λ°±μλ μλΉμ€ μΈμ€ν΄μ€λ₯Ό λμ μΌλ‘ κ²μν©λλ€. μ΄λ DNS, μλΉμ€ λ μ§μ€νΈλ¦¬ λλ κ΅¬μ± νμΌκ³Ό κ°μ λ€μν λ©μ»€λμ¦μ ν΅ν΄ λ¬μ±ν μ μμ΅λλ€.
- κ΄μ°° κ°λ₯μ± λꡬ: νλ‘ νΈμλ-λ°±μλ ν΅μ μ μ±λ₯κ³Ό μνλ₯Ό λͺ¨λν°λ§νκΈ° μν΄ λ©νΈλ¦, λ‘κ·Έ λ° μΆμ μ 보λ₯Ό μμ§νκ³ λΆμν©λλ€.
- 보μ μ μ± : λ―Όκ°ν λ°μ΄ν°λ₯Ό 보νΈνκΈ° μν΄ μΈμ¦, μΈκ°, μνΈνμ κ°μ 보μ μ μ± μ μνν©λλ€.
νλ‘ νΈμλ μλΉμ€ λ©μμ μ΄μ
νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό ꡬννλ©΄ λ€μκ³Ό κ°μ μλ§μ μ΄μ μ μ»μ μ μμ΅λλ€:
- λ¨μνλ API ν΅ν©: API κ²μ΄νΈμ¨μ΄ λλ BFF ν¨ν΄μ νλ‘ νΈμλ μμ²μ λν λ¨μΌ μ§μ μ μ μ 곡νμ¬ API ν΅ν©μ λ¨μνν©λλ€. μ΄λ μ¬λ¬ API μλν¬μΈνΈμ λ°μ΄ν° νμμ κ΄λ¦¬νλ 볡μ‘μ±μ μ€μ¬μ€λλ€.
- ν₯μλ 볡μμ±: μν· λΈλ μ΄νΉ λ° μ¬μλμ κ°μ κΈ°λ₯μ λ°±μλ μλΉμ€ μ₯μ λ₯Ό μ°μνκ² μ²λ¦¬νμ¬ νλ‘ νΈμλ μ ν리μΌμ΄μ μ 볡μμ±μ ν₯μμν΅λλ€. μλ₯Ό λ€μ΄, μ ν μΉ΄νλ‘κ·Έ μλΉμ€κ° μΌμμ μΌλ‘ μ¬μ©ν μ μλ κ²½μ°, νλ‘ νΈμλ μλΉμ€ λ©μλ μλμΌλ‘ μμ²μ μ¬μλνκ±°λ νΈλν½μ λ°±μ μλΉμ€λ‘ 리λλ μ ν μ μμ΅λλ€.
- κ°νλ κ΄μ°° κ°λ₯μ±: κ΄μ°° κ°λ₯μ± λꡬλ νλ‘ νΈμλ-λ°±μλ ν΅μ μ μ±λ₯κ³Ό μνμ λν κ·μ€ν ν΅μ°°λ ₯μ μ 곡ν©λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ λ¬Έμ λ₯Ό μ μνκ² μλ³νκ³ ν΄κ²°ν μ μμ΅λλ€. λμ보λλ μμ² μ§μ° μκ°, μ€λ₯μ¨, 리μμ€ μ¬μ©λ₯ κ³Ό κ°μ μ£Όμ λ©νΈλ¦μ νμν μ μμ΅λλ€.
- κ°νλ 보μ: 보μ μ μ± μ μΈμ¦, μΈκ° λ° μνΈνλ₯Ό μννμ¬ νλ‘ νΈμλμ λ°±μλ κ°μ μ μ‘λλ λ―Όκ°ν λ°μ΄ν°λ₯Ό 보νΈν©λλ€. API κ²μ΄νΈμ¨μ΄λ μΈμ¦ λ° μΈκ°λ₯Ό μ²λ¦¬νμ¬ μΉμΈλ μ¬μ©μλ§ νΉμ 리μμ€μ μ‘μΈμ€ν μ μλλ‘ λ³΄μ₯ν©λλ€.
- λΆλ¦¬λ νλ‘ νΈμλ λ° λ°±μλ κ°λ°: νλ‘ νΈμλμ λ°±μλ νμ API κ²μ΄νΈμ¨μ΄ λλ BFFλ₯Ό λ μ¬μ΄μ κ³μ½μΌλ‘ μΌμ λ 립μ μΌλ‘ μμ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ° μ£ΌκΈ°λ₯Ό λ¨μΆνκ³ λ―Όμ²©μ±μ λμΌ μ μμ΅λλ€. λ°±μλ μλΉμ€μ λ³κ²½μ΄ λ°λμ νλ‘ νΈμλ μ ν리μΌμ΄μ μ λ³κ²½μ μꡬνμ§ μμΌλ©°, κ·Έ λ°λλ λ§μ°¬κ°μ§μ λλ€.
- μ΅μ νλ μ±λ₯: API κ²μ΄νΈμ¨μ΄λ μ¬λ¬ λ°±μλ μλΉμ€μ λ°μ΄ν°λ₯Ό μ§κ³νμ¬ νλ‘ νΈμλ μ ν리μΌμ΄μ μ΄ λ³΄λ΄μΌ νλ μμ² μλ₯Ό μ€μΌ μ μμ΅λλ€. μ΄λ νΉν λͺ¨λ°μΌ μ₯μΉμμ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. μ§μ° μκ°μ λμ± μ€μ΄κΈ° μν΄ API κ²μ΄νΈμ¨μ΄μ μΊμ± λ©μ»€λμ¦μ ꡬνν μλ μμ΅λλ€.
- λ¨μνλ κ΅μ°¨ μΆμ² μμ²(CORS): νλ‘ νΈμλ μλΉμ€ λ©μλ CORS ꡬμ±μ μ²λ¦¬ν μ μμΌλ―λ‘ κ°λ°μκ° κ° λ°±μλ μλΉμ€μμ μλμΌλ‘ CORS ν€λλ₯Ό ꡬμ±ν νμκ° μμ΅λλ€. μ΄λ κ°λ° νλ‘μΈμ€λ₯Ό λ¨μννκ³ CORS κ΄λ ¨ μ€λ₯μ μνμ μ€μ λλ€.
ꡬν μ λ΅
νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό ꡬννλ λ°©λ²μλ μ¬λ¬ κ°μ§κ° μμΌλ©°, κ° λ°©λ²μλ κ³ μ ν μ₯λ¨μ μ΄ μμ΅λλ€.
1. API κ²μ΄νΈμ¨μ΄
API κ²μ΄νΈμ¨μ΄ ν¨ν΄μ νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό ꡬννλ μΌλ°μ μΈ μ κ·Ό λ°©μμ λλ€. API κ²μ΄νΈμ¨μ΄λ λͺ¨λ νλ‘ νΈμλ μμ²μ λν μ€μ μ§μ μ μν μ νλ©°, μ΄λ₯Ό μ μ ν λ°±μλ μλΉμ€λ‘ λΌμ°ν ν©λλ€. λν μμ² μ§κ³, λ³ν λ° μΈμ¦μ μνν μ μμ΅λλ€.
μ₯μ :
- API μλν¬μΈνΈμ μ€μ μ§μ€μ κ΄λ¦¬.
- νλ‘ νΈμλ κ°λ°μλ₯Ό μν λ¨μνλ API ν΅ν©.
- ν₯μλ 보μ λ° μΈμ¦.
- μμ² μ§κ³ λ° λ³ν.
λ¨μ :
- μ μ νκ² νμ₯λμ§ μμΌλ©΄ λ³λͺ© νμμ΄ λ°μν μ μμ.
- 볡μ‘μ±μ μ λ°νμ§ μλλ‘ μ μ€ν μ€κ³ λ° κ΅¬νμ΄ νμν¨.
- μ΅μ νλμ§ μμΌλ©΄ μ§μ° μκ°μ΄ μ¦κ°ν μ μμ.
μμ: Kong, Tyk, Apigee
2. BFF(Backend for Frontend)
BFF(Backend for Frontend) ν¨ν΄μ κ° νλ‘ νΈμλ ν΄λΌμ΄μΈνΈλ₯Ό μν λ³λμ λ°±μλ μλΉμ€λ₯Ό μμ±νλ κ²μ ν¬ν¨ν©λλ€. μ΄λ₯Ό ν΅ν΄ λ°±μλ μλΉμ€λ₯Ό νλ‘ νΈμλμ νΉμ μꡬμ λ§κ² μ‘°μ νμ¬ λ°μ΄ν° κ°μ Έμ€κΈ°λ₯Ό μ΅μ ννκ³ λ€νΈμν¬λ₯Ό ν΅ν΄ μ μ‘λλ λ°μ΄ν° μμ μ€μΌ μ μμ΅λλ€.
μ₯μ :
- νΉμ νλ‘ νΈμλ ν΄λΌμ΄μΈνΈμ μ΅μ νλ λ°μ΄ν° κ°μ Έμ€κΈ°.
- λ€νΈμν¬λ₯Ό ν΅ν λ°μ΄ν° μ μ‘λ κ°μ.
- νλ‘ νΈμλ κ°λ°μλ₯Ό μν λ¨μνλ API ν΅ν©.
- λ°±μλ κ°λ°μ μ μ°μ± μ¦κ°.
λ¨μ :
- μ¬λ¬ λ°±μλ μλΉμ€λ‘ μΈν 볡μ‘μ± μ¦κ°.
- μ’ μμ± λ° λ²μ μ μ μ€ν κ΄λ¦¬κ° νμν¨.
- BFF κ°μ μ μ¬μ μΈ μ½λ μ€λ³΅.
μμ: λͺ¨λ°μΌ μ±μ μ±μ νΉμ λ·°μ νμν λ°μ΄ν°λ§ λ°ννλ μ μ© BFFλ₯Ό κ°μ§ μ μμ΅λλ€.
3. μ£μ§ νλ‘μ
μ£μ§ νλ‘μλ νλ‘ νΈμλ μμ²μ κ°λ‘μ±κ³ λΌμ°ν νλ κ²½λ νλ‘μμ λλ€. νλ‘ νΈμλ μ ν리μΌμ΄μ μ μλΉν μ½λ λ³κ²½ μμ΄ λ‘λ λ°Έλ°μ±, νΈλν½ κ΄λ¦¬, μν· λΈλ μ΄νΉκ³Ό κ°μ κΈ°λ₯μ ꡬνν μ μμ΅λλ€.
μ₯μ :
- νλ‘ νΈμλ μ ν리μΌμ΄μ μ½λμ λ―ΈμΉλ μν₯ μ΅μν.
- ꡬν λ° λ°°ν¬ μ©μ΄.
- ν₯μλ 볡μμ± λ° λ΄κ²°ν¨μ±.
- λ‘λ λ°Έλ°μ± λ° νΈλν½ κ΄λ¦¬.
λ¨μ :
- API κ²μ΄νΈμ¨μ΄ λλ BFFμ λΉν΄ μ νλ κΈ°λ₯.
- μ μ€ν κ΅¬μ± λ° λͺ¨λν°λ§ νμ.
- 볡μ‘ν API λ³νμλ μ ν©νμ§ μμ μ μμ.
μμ: Envoy, HAProxy, Nginx
4. μλΉμ€ λ©μ μ¬μ΄λμΉ΄ νλ‘μ (μ€νμ )
μ΄ μ κ·Ό λ°©μμ νλ‘ νΈμλ μ ν리μΌμ΄μ κ³Ό ν¨κ» μ¬μ΄λμΉ΄ νλ‘μλ₯Ό λ°°ν¬νλ κ²μ ν¬ν¨ν©λλ€. μ¬μ΄λμΉ΄ νλ‘μλ λͺ¨λ νλ‘ νΈμλ μμ²μ κ°λ‘μ±κ³ μλΉμ€ λ©μ μ μ± μ μ μ©ν©λλ€. μμ νλ‘ νΈμλ μ ν리μΌμ΄μ μλ λ μΌλ°μ μ΄μ§λ§, νμ΄λΈλ¦¬λ μλ리μ€(μ: μλ² μΈ‘ λ λλ§ νλ‘ νΈμλ)λ λ ν° λ©μ μν€ν μ² λ΄μ νλ‘ νΈμλ κ΅¬μ± μμλ₯Ό ν΅ν©ν λ μ λ§ν μ κ·Ό λ°©μμ λλ€.
μ₯μ :
- νλ‘ νΈμλμ λ°±μλ μ λ°μ κ±ΈμΉ μΌκ΄λ μλΉμ€ λ©μ μ μ± .
- νΈλν½ κ΄λ¦¬ λ° λ³΄μμ λν μΈλΆνλ μ μ΄.
- κΈ°μ‘΄ μλΉμ€ λ©μ μΈνλΌμμ ν΅ν©.
λ¨μ :
- λ°°ν¬ λ° κ΅¬μ±μ 볡μ‘μ± μ¦κ°.
- μ¬μ΄λμΉ΄ νλ‘μλ‘ μΈν μ μ¬μ μ±λ₯ μ€λ²ν€λ.
- μμ νλ‘ νΈμλ μ ν리μΌμ΄μ μλ λ리 μ±νλμ§ μμ.
μμ: νλ‘ νΈμλ κ΄λ ¨ λ‘μ§μ μν WebAssembly(WASM) νμ₯μ κ°μΆ Istio.
μ¬λ°λ₯Έ μ κ·Ό λ°©μ μ ννκΈ°
νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό ꡬννλ μ΅μμ μ κ·Ό λ°©μμ μ ν리μΌμ΄μ κ³Ό μ‘°μ§μ νΉμ μꡬμ λ°λΌ λ€λ¦ λλ€. λ€μ μμλ₯Ό κ³ λ €νμμμ€:
- API ν΅ν©μ 볡μ‘μ±: νλ‘ νΈμλ μ ν리μΌμ΄μ μ΄ μλ§μ λ°±μλ μλΉμ€μ μνΈ μμ©ν΄μΌ νλ κ²½μ° API κ²μ΄νΈμ¨μ΄ λλ BFF ν¨ν΄μ΄ μ΅μμ μ νμΌ μ μμ΅λλ€.
- μ±λ₯ μꡬμ¬ν: μ±λ₯μ΄ μ€μν κ²½μ°, λ°μ΄ν° κ°μ Έμ€κΈ°λ₯Ό μ΅μ ννκΈ° μν΄ BFF ν¨ν΄μ μ¬μ©νκ±°λ λ‘λ λ°Έλ°μ±μ μν΄ μ£μ§ νλ‘μλ₯Ό μ¬μ©νλ κ²μ κ³ λ €νμμμ€.
- 보μ μꡬμ¬ν: 보μμ΄ κ°μ₯ μ€μν κ²½μ°, API κ²μ΄νΈμ¨μ΄λ μ€μ μ§μ€μ μΈμ¦ λ° μΈκ°λ₯Ό μ 곡ν μ μμ΅λλ€.
- ν ꡬ쑰: νλ‘ νΈμλμ λ°±μλ νμ΄ λ§€μ° λ 립μ μΈ κ²½μ°, BFF ν¨ν΄μ λ 립μ μΈ κ°λ° μ£ΌκΈ°λ₯Ό μ΄μ§ν μ μμ΅λλ€.
- κΈ°μ‘΄ μΈνλΌ: κ°λ₯νλ€λ©΄ κΈ°μ‘΄ μλΉμ€ λ©μ μΈνλΌλ₯Ό νμ©νλ κ²μ κ³ λ €νμμμ€.
μ€μ μ¬μ© μ¬λ‘
λ€μμ νλ‘ νΈμλ μλΉμ€ λ©μκ° μ μ©ν μ μλ λͺ κ°μ§ μ€μ μ¬μ© μ¬λ‘μ λλ€:
- μ μμκ±°λ νλ«νΌ: νλ‘ νΈμλ μ ν리μΌμ΄μ κ³Ό μ ν μΉ΄νλ‘κ·Έ, μ¬μ©μ κ³μ , μ₯λ°κ΅¬λ, κ²°μ μ© λ§μ΄ν¬λ‘μλΉμ€ κ°μ ν΅μ μ κ΄λ¦¬ν©λλ€. API κ²μ΄νΈμ¨μ΄λ μ΄λ¬ν λ§μ΄ν¬λ‘μλΉμ€μ λ°μ΄ν°λ₯Ό μ§κ³νμ¬ ν΅ν©λ μ ν λ·°λ₯Ό μ 곡ν μ μμ΅λλ€.
- μμ λ―Έλμ΄ μ ν리μΌμ΄μ : νλ‘ νΈμλ μ ν리μΌμ΄μ κ³Ό μ¬μ©μ νλ‘ν, κ²μλ¬Ό, μλ¦Όμ© λ§μ΄ν¬λ‘μλΉμ€ κ°μ ν΅μ μ μ²λ¦¬ν©λλ€. BFF ν¨ν΄μ λ€μν νλ‘ νΈμλ ν΄λΌμ΄μΈνΈ(μ: μΉ, λͺ¨λ°μΌ)μ λν λ°μ΄ν° κ°μ Έμ€κΈ°λ₯Ό μ΅μ ννλ λ° μ¬μ©λ μ μμ΅λλ€.
- κΈμ΅ μλΉμ€ μ ν리μΌμ΄μ : νλ‘ νΈμλ μ ν리μΌμ΄μ κ³Ό κ³μ κ΄λ¦¬, κ±°λ, λ³΄κ³ μ© λ§μ΄ν¬λ‘μλΉμ€ κ°μ ν΅μ μ 보νΈν©λλ€. API κ²μ΄νΈμ¨μ΄λ μ격ν μΈμ¦ λ° μΈκ° μ μ± μ μνν μ μμ΅λλ€.
- μ½ν μΈ κ΄λ¦¬ μμ€ν (CMS): νλ‘ νΈμλ νλ μ ν μ΄μ κ³μΈ΅μ λ°±μλ μ½ν μΈ μ μ₯ λ° μ λ¬ μλΉμ€λ‘λΆν° λΆλ¦¬ν©λλ€. νλ‘ νΈμλ μλΉμ€ λ©μλ CMSκ° λ€μν μ½ν μΈ μμ€μ μ λ¬ μ±λμ μ μν μ μλλ‘ ν©λλ€.
- νκ³΅μ¬ μμ½ μμ€ν : μ¬λ¬ μ 곡μ 체μ νκ³΅νΈ κ°μ©μ±, κ°κ²© λ° μμ½ μλΉμ€λ₯Ό μ§κ³ν©λλ€. 볡μλ ₯ μλ νλ‘ νΈμλ μλΉμ€ λ©μλ κ°λ³ μ 곡μ 체 APIμ μ₯μ λ₯Ό μ²λ¦¬ν μ μμ΅λλ€.
κΈ°μ μ κ³ λ €μ¬ν
νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό ꡬνν λ λ€μμ κΈ°μ μ μΈ‘λ©΄μ κ³ λ €νμμμ€:
- κΈ°μ μ€ν: κΈ°μ‘΄ μΈνλΌμ νμ κΈ°μ μ μ λ§λ κΈ°μ μ μ ννμμμ€. μλ₯Ό λ€μ΄, μ΄λ―Έ μΏ λ²λ€ν°μ€λ₯Ό μ¬μ©νκ³ μλ€λ©΄ Istioλ Linkerd μ¬μ©μ κ³ λ €ν΄ λ³΄μμμ€.
- μ±λ₯ μ΅μ ν: μΊμ± λ©μ»€λμ¦, μμΆ λ° κΈ°ν κΈ°μ μ ꡬννμ¬ μ±λ₯μ μ΅μ ννμμμ€. μ±λ₯ λ©νΈλ¦μ λͺ¨λν°λ§νκ³ λ³λͺ© νμμ μλ³νμμμ€.
- νμ₯μ±: μ¦κ°νλ νΈλν½κ³Ό λ°μ΄ν° λ³Όλ₯¨μ μ²λ¦¬ν μ μλλ‘ νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό μ€κ³νμμμ€. λ‘λ λ°Έλ°μ±κ³Ό μλ νμ₯μ μ¬μ©νμ¬ κ³ κ°μ©μ±μ 보μ₯νμμμ€.
- 보μ: μΈμ¦, μΈκ°, μνΈνμ κ°μ κ°λ ₯ν 보μ μ‘°μΉλ₯Ό ꡬννμμμ€. μ κΈ°μ μΌλ‘ 보μ μ μ± μ κ²ν νκ³ μ λ°μ΄νΈνμμμ€.
- λͺ¨λν°λ§ λ° κ΄μ°° κ°λ₯μ±: ν¬κ΄μ μΈ λͺ¨λν°λ§ λ° κ΄μ°° κ°λ₯μ± λꡬλ₯Ό μ¬μ©νμ¬ νλ‘ νΈμλ μλΉμ€ λ©μμ μ±λ₯κ³Ό μνλ₯Ό μΆμ νμμμ€. μ μ¬μ μΈ λ¬Έμ λ₯Ό μ리λ κ²½κ³ λ₯Ό μ€μ νμμμ€.
- λ€μν λ°μ΄ν° νμ μ²λ¦¬: νλ νλ‘ νΈμλλ GraphQLμ΄λ gRPCμ κ°μ κΈ°μ μ μ μ λ λ§μ΄ νμ©ν©λλ€. νλ‘ νΈμλ μλΉμ€ λ©μλ μ΄λ¬ν νμκ³Ό λ§μ΄ν¬λ‘μλΉμ€μ μ μ¬μ μΈ REST API κ°μ ν¨κ³Όμ μΌλ‘ λ³νν΄μΌ ν©λλ€.
νλ‘ νΈμλ μλΉμ€ λ©μμ λ―Έλ
νλ‘ νΈμλ μλΉμ€ λ©μμ κ°λ μ μμ§ λΉκ΅μ μλ‘μ§λ§ λΉ λ₯΄κ² μ£Όλͺ©λ°κ³ μμ΅λλ€. νλ‘ νΈμλ μ ν리μΌμ΄μ μ΄ λμ± λ³΅μ‘ν΄μ§κ³ λ λ§μ λ°±μλ λ§μ΄ν¬λ‘μλΉμ€μ μμ‘΄νκ² λ¨μ λ°λΌ ν΅μ μ κ΄λ¦¬νκΈ° μν μ μ© μΈνλΌ κ³μΈ΅μ νμμ±μ λμ± μ»€μ§ κ²μ λλ€. μμΌλ‘λ νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό λ μ½κ² ꡬννκ³ κ΄λ¦¬ν μ μλ λ μ κ΅ν λꡬμ κΈ°μ μ΄ λ±μ₯ν κ²μΌλ‘ μμλ©λλ€.
μ μ¬μ μΈ λ―Έλ λ°μ μ¬νμ λ€μκ³Ό κ°μ΅λλ€:
- WebAssembly(WASM)μ κ΄λ²μν μ±ν: WASMμ μ¬μ©νμ¬ μλΉμ€ λ©μ λ΄μμ νλ‘ νΈμλ λ‘μ§μ μ€ννμ¬ λ μ μ°νκ³ κ°λ ₯ν λ³νμ κ°λ₯νκ² ν μ μμ΅λλ€.
- μλ²λ¦¬μ€ νλ«νΌκ³Όμ ν΅ν©: νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό μλ²λ¦¬μ€ νλ«νΌκ³Ό ν΅ν©νμ¬ νλ‘ νΈμλ λ° λ°±μλ μ ν리μΌμ΄μ μ μν ν΅ν©λκ³ νμ₯ κ°λ₯ν μΈνλΌλ₯Ό μ 곡ν μ μμ΅λλ€.
- AI κΈ°λ° μλΉμ€ λ©μ κ΄λ¦¬: AIλ₯Ό μ¬μ©νμ¬ νΈλν½ λΌμ°ν , λ‘λ λ°Έλ°μ±, 보μ μ μ± μ μλμΌλ‘ μ΅μ νν μ μμ΅λλ€.
- API λ° νλ‘ν μ½μ νμ€ν: νμ€ν λ Έλ ₯μ νλ‘ νΈμλ μλΉμ€ λ©μμ λ€μν κ΅¬μ± μμ ν΅ν©μ λ¨μνν κ²μ λλ€.
κ²°λ‘
νλ‘ νΈμλ μλΉμ€ λ©μλ νλ‘ νΈμλ μ ν리μΌμ΄μ κ³Ό λ°±μλ λ§μ΄ν¬λ‘μλΉμ€ κ°μ ν΅μ μ κ΄λ¦¬νκΈ° μν κ°μΉ μλ μν€ν μ² ν¨ν΄μ λλ€. μ΄λ API ν΅ν©μ λ¨μννκ³ , 볡μμ±μ ν₯μμν€λ©°, κ΄μ°° κ°λ₯μ±μ λμ΄κ³ , λΆλ¦¬λ κ°λ°μ κ°λ₯νκ² ν©λλ€. μ΄ κΈμμ μ€λͺ ν ꡬν μ λ΅κ³Ό κΈ°μ μ κ³ λ €μ¬νμ μ μ€νκ² κ³ λ €ν¨μΌλ‘μ¨ νλ‘ νΈμλ μλΉμ€ λ©μλ₯Ό μ±κ³΅μ μΌλ‘ ꡬννκ³ κ·Έ μλ§μ μ΄μ μ λ릴 μ μμ΅λλ€. νλ‘ νΈμλ μν€ν μ²κ° κ³μ μ§νν¨μ λ°λΌ, νλ‘ νΈμλ μλΉμ€ λ©μλ νμ₯ κ°λ₯νκ³ μ μ§λ³΄μ κ°λ₯νλ©° κ³ μ±λ₯μ μΉ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° μμ΄ μμ¬ν μ¬μ§ μμ΄ μ μ λ μ€μν μν μ ν κ²μ λλ€.