π± μ±λ΄ μν€ν μ²μ λν΄ μμ보μ ~
π€ Intro
μ΄μ μ±λ΄ κ°λ°μ΄ κ±°μ λ§λ¬΄λ¦¬ λ¨κ³μ μ μ΄λ€μμΌλ―λ‘β¦.λ΄κ° μ§ μν€ν μ²μ λν΄μ μμλ³΄κ³ μ νλ€. κ²Έμ¬κ²Έμ¬ λ‘μ§ μ΄μν λΆλΆ μμΌλ©΄ μ’ κ³ μΉκΈ°λ νκ³ ,
μΌλ¨μ λΆνΈ μλ² λ°±μλ λ‘μ§μ μ΄ν΄λ³΄κΈ° μ μ, λ΄κ° μ§ μ°λ¦¬ν μλ² μν€ν μ²μ λν΄ μμ보λλ‘ νμ!
π©Ά Start
μλ² μν€ν μ² μκ°νκΈ°~
μ΄λ² νλ‘μ νΈλ₯Ό μ§ννλ©΄μ κ°μΈμ μΌλ‘ κ°μ₯ λ§μ΄ μ κ²½μΌλ λΆλΆμ΄κΈ°λ νλ€.
μλ²κ°μ μ± μ μμμ λͺ νν νκ³ , μλ²λ₯Ό statelessνκ² μ μ§νλλ‘ νκΈ° μν΄ μ¨κ° λ Έλ ₯μ λ€ λ€μλκ²λ κ²°κ΅ ν΄λ¦°~ν μν€ν μ²λ₯Ό μ μ§νλλ‘ νκΈ° μν¨μ΄ μ»Έλ€.
μ°μ νμ¬ μ°λ¦¬ νλ‘μ νΈμ μλ² μν€ν μ²λ₯Ό μ΄ν΄λ³΄μ.
μ΄μ€ λ΄κ° λ§‘μλ λΆλΆμ Recodashμ [μ±λ΄] ννΈμ΄λ€.
μ°μ μλ²κ° λ κ°λ‘ λλ μ ΈμκΈ°μ..μ΄λ€ λλ©μΈμ΄ μ΄λ€ μλ² ννΈμμ λ¬΄μ¨ μΌμ μννλμ§λ₯Ό λͺ νν ν΄μΌλ§ νλ€. λ¨μν κΈ°μ λμ΄μ μν€ν μ²λ μμ§ν μν€ν μ²μ μΌλ‘ μλ―Έκ° μλ€κ³ μκ°νκΈ°μβ¦
λ©μΈ λλ©μΈ (μ°λ¦¬ ν λ¨μμ΄κΈ°λ νλ€.)μΈ Shorts & Recodash (DATA) & Payλ‘ λλ μ ꡬμ±νμμΌλ©°, Data Serverμ κ²½μ° Recodash νλ§μ΄ μ¬μ©νκΈ°μ λ€μκ³Ό κ°μ΄ λΆλ¦¬ν΄μ ꡬμ±νμλ€.
Redisμμ, Recodash νμ λλ§ μ¬μ©νλ―λ‘ νμ΄νλ₯Ό λͺ ννκ² μ°κ²°ν΄λμμΌλ©°, DBμ Serverλ₯Ό λͺ νν ꡬλΆν΄λμλ€.
λν, EC2κ° μλ κ°μ¬λ μλ²μ μ°λ¦¬ νλ‘μ νΈλ₯Ό λμμΌ νκΈ°μ Dockerλ‘ μ»¨ν μ΄λλ§μ ν΄λμλ€. (μ¬μ€ μ΄ λΆλΆμ μ°¨ν λ°λ μλ μμ κ² κ°λ€..)
λ§μ§λ§μΌλ‘ Authμ κ²½μ°λ μΈμ¦ / μΈκ° μΉμ μ λΆλ¦¬ν΄λμκ³ , Authμ κ²½μ° λͺ¨λ λλ©μΈμ΄ 곡μ©μΌλ‘ μ¬μ©νλ λΆλΆμ΄κΈ°μ λ³λμ λλ©μΈμΌλ‘ λΆλ¦¬ν΄λμλ€.
μ΄λ₯Ό ν΅ν΄ λΉμ¦λμ€ λ‘μ§λ€κ³Ό κΈ°μ λ‘μ§μ λͺ νν λΆλ¦¬ν΄λμλ€.
μ¬κΈ°μ λ λ°μ ν μλ μμκΉ?
λ΄κ° μμ¬μμ λκΌλ λΆλΆμ μ΄κ²μ΄λ€.
μ§κΈ μ°λ¦¬ νμ κ²½μ°λ λ‘λλ°Έλ°μ± & CI/CD μλ λ°°ν¬ λ±μ νμ§ μμ κ³νμ΄λΌκ³ ν΄μβ¦μ΄ λΆλΆμ λν ννΈκ° λΉ μ Έμλκ² μλΉν ν° μμ¬μμΌλ‘ λ¨μλ€.
κ·Έλμ μ΄ ννΈλ€μ μΆκ°ν μμ μν€ν μ²λ‘ μ°λ¦¬ μν€ν μ²λ₯Ό ν λ¨κ³ λ°μ ? μμΌλ³΄κ³ μ νλ€.
λ‘λλ°Έλ°μ±μ΄ λλ°?
κ·Έμ μ μΆκ°ν μμλ€μ λν κ°λ΅ν κ°λ μ μμ보μ.
λ¨Όμ λ‘λλ°Έλ°μ±λΆν°β¦
λ‘λλ°Έλ°μ±μ΄λ? λ€μ΄μ€λ λ€νΈμν¬ νΈλν½μ μ¬λ¬ μλ²μ λΆμ°μμΌ λ¨μΌ μλ²μ λΆνλ₯Ό μ€μ΄κ³ , μμ€ν μ 체μ μ±λ₯κ³Ό κ°μ©μ±μ ν₯μμν€λ κΈ°μ μ μλ―Ένλ€.
ν΅μ¬ λͺ©νλ λ€μκ³Ό κ°λ€.
1. λΆν λΆμ°
ν μλ²μ λͺ¨λ μμ²μ΄ λͺ°λ¦¬λ κ²μ λ°©μ§νλ€.
κ° μλ²κ° μ μ ν μμ μμ μ μ²λ¦¬νλλ‘ λΆλ°°νλ€.
2. κ³ κ°μ©μ±
ν μλ²κ° λ€μ΄ λμ΄λ μλΉμ€ μ€λ¨μ΄ μλλ‘ νλ€.
24/7 μλΉμ€ μ΄μμ΄ κ°λ₯νλ€. μ¦, μ°μ€λ¬΄ν΄λ‘ μλΉμ€κ° μ€λ¨λμ§ μλλ€.
3. νμ₯μ±
νΈλν½ μ¦κ°μ μλ‘μ΄ μλ²λ§ μΆκ°νλ©΄ λλ€. λ‘λλ°Έλ°μκ° μΆκ°λ μλ²λ‘ μμμ νΈλν½ λΆμ°μ ν΄μ£ΌκΈ° λλ¬Έμ΄λ€.
μνμ νμ₯μ΄ μ©μ΄νλ€. μ¦, μλ² κ°μλ§ μΆκ°νλ©΄ λλ κ²μ΄λ€.
MSAμμμ λμ μ리
1
2
3
API Gateway β Load Balancer β Auth Service (3λ)
β Load Balancer β User Service (2λ)
β Load Balancer β Payment Service (4λ)
μ΄λ°μμΌλ‘, κ° μλΉμ€ λ§λ€ λ 립μ μΈ λ‘λ λ°Έλ°μ ꡬμ±μΌλ‘ μλΉμ€ νμ₯μ΄ μ©μ΄ν΄μ§κ³ , μ₯μ κ²©λ¦¬κ° κ°λ₯ν΄μ§κ³ , κ²°κ³Όμ μΌλ‘ μ±λ₯ μ΅μ νλ₯Ό ν μ μλ κ²μ΄λ€.
κ·ΈλΌ μ°λ¦¬ μλΉμ€μμ λ‘λλ°Έλ°μ±μ λμ ν΄μ μ»λ μ΄μ μ λμ§?
1. λμ μ¬μ©μ μ²λ¦¬ λ₯λ ₯μ΄ ν₯μλλ€.
νμ¬ κ΅¬μ‘°μμλ, μ¬μ©μ 100λͺ μ΄ λμ μ±ν μ μ§νν κ²½μ° μλ΅ μλκ° μ νλμ§λ§, λ‘λλ°Έλ°μ±μΌλ‘ μλ²λ₯Ό λΆμ°νλ€λ©΄, κ° μλ²μ μμ²μ΄ λΆμ°λμ΄ λΉ λ₯Έ μλ΅μ΄ κ°λ₯ν΄μ§λ€.
2. LLM API νΈμΆ λΆν λΆμ°
νμ¬λ FAST API μλ² 1λκ° λͺ¨λ LLM μμ²μ μ²λ¦¬νλ€. μ¦, LLM API μλ΅ λκΈ° μκ°λμ λ€λ₯Έ μ¬μ©μκ° λκΈ°νκ² λλλ°, μ΄λ₯Ό μ¬λ¬λλ‘ λΆμ°νλ©΄ μ 체μ μΈ μ±λ΄ μλ΅ μλλ₯Ό κ°μ ν μ μλ€.
3. Redis μ°κ²° λΆν λΆμ°
νμ¬λ Spring Boot μλ² 1λκ° λͺ¨λ Redis μΊμ±μ λ΄λΉνλ ꡬ쑰μΈλ°, λ‘λλ°Έλ°μ±μ νκ² λλ©΄ μ¬λ¬λμ μλ²κ° Redis λΆνλ₯Ό λΆμ°νκΈ° λλ¬Έμ μ± νλ‘μ° κ΄λ¦¬κ° λ μμ μ μ΄κ² λλ€.
μ΄ μΈμλ, νΉν κΈμ΅ μλΉμ€μ κ²½μ°λ μ₯μ κ²©λ¦¬κ° λ§€μ° μ€μνλ° λ‘λλ°Έλ°μ±μ μ΄μ©νλ©΄ λ¨μΌ μλ² ν΄νΉμμλ λ€λ₯Έ μλ²λ€μ΄ μ μ μ΄μλμ΄ νΈλν½ λΆμ°μΌλ‘ ν΄νΉ 곡격 μν ν¨κ³Όλ μλ€κ³ νλ€.
κ·ΈλΌ CI/CD μλ λ°°ν¬λ λλ°?
CI (Continuous Integration) : μ§μμ ν΅ν©
- κ°λ°μλ€μ΄ μμ±ν μ½λλ₯Ό μλμΌλ‘ ν΅ν©νκ³ ν μ€νΈνλ κ³Όμ
CD (Continuous Deployment/Delivery) : μ§μμ λ°°ν¬
- ν μ€νΈλ₯Ό ν΅κ³Όν μ½λλ₯Ό μλμΌλ‘ μ΄μ μλ²μ λ°°ν¬νλ κ³Όμ
μ¦, μμΌλ‘ μ§μ λ°°ν¬λ₯Ό ν νμκ° μμ΄, μ½λλ₯Ό μμ±νκ³ λ°μνλ κ² λ§μΌλ‘ μλμΌλ‘ μλΉμ€ μ¬μμμ΄ λλ κ²μ μλ―Ένλ€. μ¦, μλ λΉλ & μλ λ°°ν¬λ₯Ό λ§νλ€.
λ΄κ° github λΈλ‘κ·Έμ κΈμ μμ ν΄μ μ¬λ¦¬λ©΄ μλμΌλ‘ μλ²μ λ°°ν¬λλ κ² μμ github actionμ΄ CI/CDλ₯Ό ν΄μ£Όκ³ μκΈ° λλ¬Έμ΄λ€.
μν€ν μ² λ¦¬ν©ν°λ§
λ§νλ μμλ₯Ό μΆκ°ν΄μ λ€μκ³Ό κ°μ΄ μν€ν μ²λ₯Ό 리ν©ν°λ§ νμλ€! (μ°Έκ³ λ‘ λ΄κ° κ°λ° λ§‘μ건 μμΉ λ ν΄μ€)
CI/CD κ°μ κ²½μ°λ Repo λ¨μλ‘ μ°κ²°λκΈ°μ, λ€μκ³Ό κ°μ΄ μ°κ²°ν΄μ£Όμλ€.
μμ ν λ 립λ λλ©μΈμΌλ‘ ꡬμ±λ κ΅¬μ‘°κ° μλλΌμ μ’ μμ½κΈ΄ νλ€β¦.λ€μμλ μ΄λ² νλ‘μ νΈμμ λ°°μ΄ μ§μμ λ°νμΌλ‘ κΌ MSAμ λμ ν΄λ³΄κ² λ€!!!!!