ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MSA] 클루터 MSA λ„μž… 회고
    STOVE DEVCAMP 3κΈ°/MSA 2023. 3. 10. 02:46

    πŸ“Œ MSA λ„μž… λ°°κ²½

    ν”„λ‘œμ νŠΈ μ‹œμž‘ μ „ λ°±μ—”λ“œ νŒ€μ›λ“€κ³Ό μ€‘μ μ μœΌλ‘œ κ³ λ €ν•œ 3가지 사항

    1. λ°±μ—”λ“œ νŒ€μ›λ“€ κ°„μ˜ 효율적인 μž‘μ—… μˆ˜ν–‰
    2. κ΅¬ν˜„ κΈ°λŠ₯별 μ˜μ‘΄μ„±μ„ 쀄여 자유둜운 기술 선택
    3. μ„œλΉ„μŠ€ 규λͺ¨κ°€ 컀짐에 따라 κΈ°λŠ₯ 및 μ„œλ²„ ν™•μž₯이 μ‰¬μš΄ μ•„ν‚€ν…μ²˜ ꡬ성

     

    이λ₯Ό λ°”νƒ•μœΌλ‘œ μ„œλΉ„μŠ€λ³„ λ…λ¦½λœ ꡬ성을 μ œκ³΅ν•˜λŠ” MSA 기반 μ•„ν‚€ν…μ²˜ λ„μž…ν•˜κΈ°λ‘œ 함

     

    πŸ“Œ MSA λ„μž…μ„ ν†΅ν•œ κΈ°λŒ€νš¨κ³Ό

    μž‘μ—… νš¨μœ¨μ„±

    • 각 μ„œλΉ„μŠ€λŠ” λ…λ¦½λœ 배포 λ‹¨μœ„λ₯Ό κ°€μ§€λ―€λ‘œ, 병렬적인 μž‘μ—…κ³Ό ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯함

    기술 μ„ νƒμ˜ μžμœ¨μ„±

    • μ œκ³΅ν•˜κ³ μž ν•˜λŠ” μ„œλΉ„μŠ€(νšŒμ›/νŠΈμœ—/μ•Œλ¦Ό)κ°€ λ‹€μ–‘ν•˜κ³  κ°œλ³„ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ‘œ κ΅¬μ„±λ˜μ–΄ 자유둜운 κΈ°μˆ μŠ€νƒ 선정이 κ°€λŠ₯함

    μ„œλ²„ ν™•μž₯μ„±

    • μ†Œμ…œ λ„€νŠΈμ›Œν¬ μ„œλΉ„μŠ€μΈ '클루터'μ—μ„œ κ°€μž₯ νŠΈλž˜ν”½μ΄ λ§Žμ„ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λŠ” κΈ°λŠ₯은 νŠΈμœ— μž‘μ„± 및 ν”Όλ“œ μ‘°νšŒμ΄λ―€λ‘œ, ν•΄λ‹Ή κΈ°λŠ₯을 ν¬ν•¨ν•˜κ³  μžˆλŠ” νŠΉμ • μ„œλ²„μ˜ ν™•μž₯(scale-out)이 μš©μ΄ν•¨

    μ„œλ²„ κ°€μš©μ„±

    • 각 μ„œλΉ„μŠ€λŠ” λ…λ¦½μ μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ λ°°ν¬λ˜λ―€λ‘œ, νŠΉμ • μ„œλ²„μ—μ„œμ˜ μž₯μ•  μ „νŒŒ 방지 κ°€λŠ₯함

     

    πŸ“Œ MSA λ„μž… 이후 κΈ°λŒ€νš¨κ³Ό 검증 - μ°Έκ³ ) ν΄λ£¨ν„° MSA λ„μž… κ³Όμ •

    1) μž‘μ—… νš¨μœ¨μ„±μ΄ μ¦λŒ€ν•¨

    • 클루터가 μ œκ³΅ν•˜λŠ” 핡심 κΈ°λŠ₯을 μ€‘μ‹¬μœΌλ‘œ μœ μ € / μ•Œλ¦Ό / νŠΈμœ— 각각을 κ°œλ³„ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ‘œ κ΅¬μ„±ν•˜μ˜€μŒ
    • λ”°λΌμ„œ ν•˜λ‚˜μ˜ μ„œλ²„λŠ” ν•˜λ‚˜μ˜ 도메인에 λŒ€ν•œ κΈ°λŠ₯만 ν¬ν•¨ν•˜κ³  μžˆμ–΄, 각 μ„œλΉ„μŠ€λŠ” λ…λ¦½λœ 배포 λ‹¨μœ„λ₯Ό 가짐
    • κ°œλ³„ μ„œλΉ„μŠ€μ˜ κΈ°λŠ₯ κ΅¬ν˜„μ„ λ™μ‹œμ— μ§„ν–‰ν•˜μ—¬ λΉ λ₯Έ κ΅¬ν˜„μ΄ κ°€λŠ₯ν–ˆκ³ , κ΅¬ν˜„ μ΄ν›„μ—λŠ” 각 μ„œλΉ„μŠ€λ³„ κΈ°λŠ₯에 λŒ€ν•΄ λͺ¨λ°”일과 ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν–ˆμŒ
    • κ°œλ³„ κΉƒ λ ˆν¬μ§€ν† λ¦¬λ₯Ό κ°€μ§€λ―€λ‘œ, 버그 λ°œμƒ μ‹œ μˆ˜μ •μ΄ ν•„μš”ν•œ 뢀뢄은 λΉ λ₯΄κ²Œ κ³ μΉ  수 μžˆμ—ˆμŒ

     

    2) 기술 μ„ νƒμ˜ μžμœ¨μ„±μ„ μ œκ³΅ν•¨

    • 각 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ“€μ€ λ³„λ„μ˜ μ„œλ²„λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμ–΄ κ΅¬ν˜„ν•˜λŠ” κΈ°λŠ₯에 따라 μ ν•©ν•œ κΈ°μˆ μŠ€νƒ 선정이 κ°€λŠ₯ν–ˆμŒ
    • ꡬ체적으둜 ν˜„μž¬ κ΅¬μ„±λœ μ„œλ²„λ“€μ„ μ˜ˆμ‹œλ‘œ μ‚΄νŽ΄λ³΄λ©΄, μ•„λž˜μ™€ 같이 ν•„μš”ν•œ κΈ°λŠ₯에 μ ν•©ν•œ 기술 선택이 κ°€λŠ₯ν–ˆμŒ
      • λ°μ΄ν„°λ² μ΄μŠ€ 
        • μœ μ € μ„œλΉ„μŠ€ & νŠΈμœ— μ„œλΉ„μŠ€μ˜ 경우 μ‚¬μš©μž 관계 μ €μž₯ 및 μ‘°νšŒμ— 더 μ ν•©ν•œ κ·Έλž˜ν”„ λ°μ΄ν„°λ² μ΄μŠ€μΈ Neo4j μ‚¬μš©ν•¨
        • μ•Œλ¦Ό μ„œλΉ„μŠ€μ˜ 경우 μ•Œλ¦Ό λ°μ΄ν„°μ˜ νŠΉμ§•μ— 더 μ ν•©ν•œ λ¬Έμ„œ λ°μ΄ν„°λ² μ΄μŠ€μΈ MongoDB μ‚¬μš©ν•¨
      • μ›Ή ν”„λ ˆμž„μ›Œν¬
        • API κ²Œμ΄νŠΈμ›¨μ΄μ˜ 경우 spring-webflux 기반의 Spring Cloud Gatewayλ₯Ό μ‚¬μš©ν•¨
        • μ΄μ™Έμ˜ μ„œλΉ„μŠ€λ“€μ€ spring-mvc 기반의 Spring Bootλ₯Ό μ‚¬μš©ν•¨
    • 더 λ‚˜μ•„κ°€ μ•„λž˜μ™€ 같은 κ²½μš°μ—λ„ μœ μš©ν•¨
      • λ§Œμ•½ ν΄λ£¨ν„°μ˜ κΈ°λŠ₯ ν™•μž₯으둜 μ‹€μ‹œκ°„ νŠΈλ Œλ“œ, μ±„νŒ… κΈ°λŠ₯이 μΆ”κ°€λœλ‹€λ©΄?
        • ν•΄λ‹Ή κΈ°λŠ₯듀도 λ³„λ„μ˜ λ„λ©”μΈμœΌλ‘œ λΆ„λ₯˜λ˜μ–΄ κ°œλ³„ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ‘œ κ΅¬μ„±λ˜λ―€λ‘œ, 각 κΈ°λŠ₯에 μ ν•©ν•œ μ–Έμ–΄ 및 ν”„λ ˆμž„μ›Œν¬ 등을 자유둭게 선택해 κ΅¬ν˜„ν•  수 있음
      • κΈ°μ‘΄ μ„œλΉ„μŠ€μ— λ‹€λ₯Έ 기술이 더 적합해 κΈ°μˆ μŠ€νƒμ„ λ°”κΏ”μ•Ό ν•˜λŠ” 상황이 μ˜¨λ‹€λ©΄?
        • λ‹€λ₯Έ μ„œλΉ„μŠ€μ— 영ν–₯없이 ν•΄λ‹Ή λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ§Œ λ‹€λ₯Έ μ–Έμ–΄ 및 ν”„λ ˆμž„μ›Œν¬λ‘œ 변경이 κ°€λŠ₯함

     

    3) μ„œλ²„μ˜ ν™•μž₯μ„± μ œκ³΅ν•¨

    • ν˜„μž¬ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ“€μ΄ 사내 인프라 ν™˜κ²½μΈ μΏ λ²„λ„€ν‹°μŠ€ ν΄λŸ¬μŠ€ν„°μ˜ Pod에 배포된 μƒνƒœμž„
    • μΏ λ²„λ„€ν‹°μŠ€λŠ” CPU μ‚¬μš©λŸ‰μ΄λ‚˜ 기타 λ©”νŠΈλ¦­μ„ μ²΄ν¬ν•˜μ—¬ Pod의 개수λ₯Ό μŠ€μΌ€μΌν•˜λŠ” κΈ°λŠ₯인 HPA(Horizontal Pod Autoscaling)λ₯Ό μ œκ³΅ν•¨
    • λ”°λΌμ„œ νŠΈλž˜ν”½μ΄ λ§Žμ„ 경우, ν•΄λ‹Ή κΈ°λŠ₯을 ν¬ν•¨ν•œ μ„œλ²„μ˜ ν™•μž₯(scale-out)이 쉬움
    • 예λ₯Ό λ“€μ–΄, SNS인 ν΄λ£¨ν„°μ—μ„œ κ°€μž₯ νŠΈλž˜ν”½μ΄ λ§Žμ„ κ²ƒμœΌλ‘œ μ˜ˆμƒλ˜λŠ” κΈ°λŠ₯은 νŠΈμœ— μž‘μ„± 및 ν”Όλ“œ μ‘°νšŒμ΄λ―€λ‘œ, ν•΄λ‹Ή κΈ°λŠ₯을 ν¬ν•¨ν•˜κ³  μžˆλŠ” νŠΈμœ— μ„œλ²„μ˜ ν™•μž₯(scale-out)이 쉬움

     

    4) μ„œλ²„μ˜ κ°€μš©μ„± μ œκ³΅ν•¨

    • 각 μ„œλΉ„μŠ€λŠ” λ…λ¦½μ μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ λ°°ν¬λ˜λ―€λ‘œ, νŠΉμ • μ„œλ²„μ—μ„œ μž₯μ•  λ°œμƒ μ‹œ λ‹€λ₯Έ μ„œλ²„μ— 영ν–₯을 주지 μ•ŠμŒ
      • μ΄λ•Œ μž₯μ•  λ°œμƒ μ„œλ²„κ°€ λ‹€λ₯Έ μ„œλ²„μ— μ˜ν•΄ 호좜된 κ²½μš°μ—λŠ” ν˜ΈμΆœν•œ μ„œλ²„ μͺ½μ— timeout μ„€μ •μ΄λ‚˜ circuit breaker λ“±μ˜ 적용이 λ³„λ„λ‘œ ν•„μš”ν•¨

     

    μ°Έκ³ 

    https://kubernetes.io/ko/docs/tasks/run-application/horizontal-pod-autoscale/

    λŒ“κΈ€

Designed by Tistory.