MSA

Spring Cloud Config & Spring Cloud Bus 간단정리

λ”°κ°“ 2022. 10. 20. 20:43

πŸ“š Spring Cloud Config

 

  • λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈμ˜ ꡬ성에 ν•„μš”ν•œ μ„€μ • 정보( application.yml λ“± )λ₯Ό μ™ΈλΆ€ μ‹œμŠ€ν…œμ—μ„œ 관리 ν•΄μ€€λ‹€.
  • ν•˜λ‚˜μ˜ 쀑앙화 된 μ €μž₯μ†Œμ—μ„œ κ΅¬μ„±μš”μ†Œ 관리λ₯Ό ν•  수 μžˆλ‹€.
    • 즉, ν™˜κ²½μ„€μ •μ— λŒ€ν•΄μ„œλŠ” μΌκ΄„μ μœΌλ‘œ κ΄€λ¦¬ν•˜κ³  각각의 λΆ„λ¦¬λ˜μ–΄μžˆλŠ” ν™˜κ²½μ—μ„œ μ‹€ν–‰ν•  수 μžˆλ„λ‘ μ§€μ›ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œμ΄λ‹€.
  • 각 μ„œλΉ„μŠ€λ₯Ό λ‹€μ‹œ λΉŒλ“œν•˜μ§€ μ•Šκ³ , λ°”λ‘œ 적용 κ°€λŠ₯ν•˜λ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 νŒŒμ΄ν”„λΌμΈμ„ 톡해 DEV-UAT-PROD 각각의 ν™˜κ²½μ— μ•Œλ§žλŠ” ꡬ성 정보λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
  • κΉƒ 리포지토리 λ˜λŠ” μ•”ν˜Έν™”λœ 데이터, 둜컬 파일 μ‹œμŠ€ν…œμ— μžˆλŠ” νŠΉμ • λ””λ ‰ν† λ¦¬μ˜ νŒŒμΌλ“±μ„ μ΄μš©ν•΄ ꡬ성 μš”μ†Œλ₯Ό μ €μž₯ν•  수 있음.

 

βœ”οΈ configuration 값을 λ³€κ²½ν•œ ν›„ refresh ν•˜κΈ°

  1. μ„œλ²„ μž¬κΈ°λ™
    • 맀번 μž¬κΈ°λ™ ν•˜λŠ” 방식은 λ„ˆλ¬΄ λΆˆνŽΈν•˜λ‹€. λ³„λ‘œ 쒋은 방식은 μ•„λ‹ˆλ‹€.
  2. Actuator refresh
    • Spring Boot Actuator
      • Application μƒνƒœ, λͺ¨λ‹ˆν„°λ§ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.
      • λ³„λ„λ‘œ application을 κΈ°λ™ν•˜μ§€ μ•Šμ•„λ„ Metric μˆ˜μ§‘μ„ μœ„ν•œ Http End Pointλ₯Ό μ œκ³΅ν•œλ‹€.
    • actuator/refresh λ₯Ό ν˜ΈμΆœν•΄ 마이크둜 μ„œλΉ„μŠ€λ“€μ„ μž¬λΆ€νŒ…ν•˜μ§€ μ•Šκ³ λ„ λ³€κ²½λœ ꡬ성 정보λ₯Ό λ°˜μ˜μ‹œν‚¬ 수 μžˆλ‹€.
    • 마이크둜 μ„œλΉ„μŠ€κ°€ μˆ˜μ‹­, μˆ˜λ°±κ°œκ°€ λœλ‹€λ©΄ 각각의 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ λ§ˆλ‹€ actuator/refresh λ₯Ό μˆ˜λ™μœΌλ‘œ ν˜ΈμΆœν•΄μ•Όν•˜λ―€λ‘œ κ²°κ΅­ 번거둜운 λ°©μ‹μ΄λΌλŠ” 점은 λ§ˆμ°¬κ°€μ§€ 이닀.
  3.  Spring Cloud Bus
    • λΆ„μ‚° μ‹œμŠ€ν…œμ˜ λ…Έλ“œ( MS )λ“€ 끼리 연결될 수 μžˆλŠ” λ©”μ‹œμ§€ 브둜컀( RabbitMQ λ“± )와 μ—°κ²°
    • μƒνƒœ 및 ꡬ성에 λŒ€ν•œ λ³€κ²½ 사항을 μ—°κ²°λœ λ…Έλ“œμ—κ²Œ 전달( Brodcast )ν•΄μ€€λ‹€.
    • λ©”μ‹œμ§€ 큐 ( Message Queue ) 
      • μš”μ²­μ‚¬ν•­μ„ κ°€μ§€κ³  μžˆλŠ” ν•˜λ‚˜μ˜ 미듀웨어λ₯Ό 쀑간에 놓고 λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ λ©”μ‹œμ§€λ₯Ό 보내면 미듀웨어( 브둜컀 )κ°€ μˆ˜μ‹ μžμ—κ²Œ λ©”μ‹œμ§€λ₯Ό μ „μ†‘ν•΄μ£ΌλŠ” 방식.
      • λ©”μ‹œμ§€λŠ” λ¬Έμžμ—΄, 객체, λ¦¬μ†ŒμŠ€ λ“± λ‹€μ–‘ν•œ ν˜•νƒœκ°€ 될 수 μžˆλ‹€.
      • 비동기 방식 : P2P 방식과 λ‹€λ₯΄κ²Œ, 데이터λ₯Ό μˆ˜μ‹ μžμ—κ²Œ λ°”λ‘œ 보내지 μ•Šκ³  큐에 λ„£κ³  κ΄€λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— λ‚˜μ€‘μ— 처리 κ°€λŠ₯ν•˜λ‹€. μ’€ 더 μ•ˆμ •μ μ΄κ³  솑/μˆ˜μ‹ μžμ˜ ν”„λ‘œμ„ΈμŠ€ μƒνƒœλ₯Ό μ‹ κ²½ μ“Έ ν•„μš”κ°€ μ—†λ‹€.

 

βœ”οΈ Actuator bus-refresh Endpoint

  • λ³€κ²½λœ 데이터λ₯Ό κ°–κ³  였면 /busrefreshλ₯Ό ν˜ΈμΆœν•œλ‹€.
  • λ³€κ²½λœ 사항을 ν΄λΌμš°λ“œ λ²„μŠ€μ—κ²Œ μ•Œλ €μ£Όκ³  ν΄λΌμš°λ“œ λ²„μŠ€κ°€ λ³€κ²½λœ 사항이 μžˆμŒμ„ κ°μ§€ν•˜λ©΄ λ²„μŠ€μ™€ μ—°κ²°λœ 또 λ‹€λ₯Έν΄λΌμ΄μ–ΈνŠΈλ“€μ—κ²Œ λ³€κ²½λœ 사항을 μ—…λ°μ΄νŠΈ μ‹œμΌœμ£ΌλŠ” 방식.

 

AMQP ( Advanced Message Queuing Protocol ) : λ©”μ‹œμ§€ μ§€ν–₯ 미듀웨어λ₯Ό μœ„ν•œ κ°œλ°©ν˜• ν‘œμ€€ μ‘μš© 계측 ν”„λ‘œν† μ½œ

  • λ©”μ‹œμ§€ μ§€ν–₯, νμž‰, λΌμš°νŒ…, μ‹ λ’°μ„±, λ³΄μ•ˆ
  •  Erlang, RabbitMQμ—μ„œ μ‚¬μš©

Kafka ν”„λ‘œμ νŠΈ 

  • Apache Software Foundation이 Scalar μ–Έμ–΄λ‘œ κ°œλ°œν•œ μ˜€ν”ˆ μ†ŒμŠ€ λ©”μ‹œμ§€ 브둜컀 ν”„λ‘œμ νŠΈ
  • λΆ„μ‚°ν˜• 슀트리밍 ν”Œλž«νΌμ„ μ§€μ›ν•œλ‹€.
  • λŒ€μš©λŸ‰μ˜ 데이터λ₯Ό 처리 κ°€λŠ₯ν•œ λ©”μ‹œμ§• μ‹œμŠ€ν…œ

 

πŸ“— RabbitMQ vs Kafka

1. RabbitMQ

  • λ©”μ‹œμ§€ 브둜컀 역할을 ν•œλ‹€.
  • μ΄ˆλ‹Ή 20개 μ΄μƒμ˜ λ©”μ‹œμ§€λ₯Ό μ†ŒλΉ„μžμ—κ²Œ 전달할 수 μžˆλ‹€.
  • λ©”μ‹œμ§€ 전달을 보μž₯ν•΄μ£Όλ©°, μ‹œμŠ€ν…œ κ°„ λ©”μ‹œμ§€λ₯Ό 전달해쀀닀.
  • 브둜컀 쀑심, μ†ŒλΉ„μž 쀑심이닀.

2. Kafka

  • μ΄ˆλ‹Ή 100k μ΄μƒμ˜ 이벀트λ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€.
  • pub/sub, Topic에 λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•œλ‹€.
  • subscriberκ°€ 데이터λ₯Ό λ°›μ•˜λŠ”μ§€ λ°›μ§€ μ•Šμ•˜λŠ”μ§€λ₯Ό μ‹ κ²½μ“°μ§€ μ•Šκ³  publisherλŠ” 데이터λ₯Ό λ³΄λ‚΄κΈ°λ§Œ ν•œλ‹€. 
  • μƒμ‚°μž 쀑심이닀.

3. μš”μ•½ 

  • RabbitMQ : 적은 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „λ‹¬ν•˜λŠ” 것을 보μž₯μ‹œν‚€κ³ μž ν•  λ•Œ
  • Kafka : λŒ€μš©λŸ‰μ˜ 데이터λ₯Ό λΉ λ₯Έ μ‹œκ°„ 내에 μ²˜λ¦¬ν•˜κ³ μž ν•  λ•Œ 

!! μœ„ λ‚΄μš©μ€ Dowon Lee λ‹˜μ˜ "Spring Cloud둜 κ°œλ°œν•˜λŠ” λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(MSA)" κ°•μ˜λ₯Ό μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€

 

Spring Cloud둜 κ°œλ°œν•˜λŠ” λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(MSA) - μΈν”„λŸ° | κ°•μ˜

Spring framework의 Spring Cloud μ œν’ˆκ΅°μ„ μ΄μš©ν•˜μ—¬ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•΄ λ³΄λŠ” κ³Όμ •μž…λ‹ˆλ‹€. Cloud Native Application으둜써의 Spring Cloudλ₯Ό μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€, ꡬ성을 μ–΄λ–»κ²Œ ν•˜λŠ”μ§€μ— λŒ€ν•΄

'MSA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

API Gateway 간단 정리  (0) 2022.10.19
Spring Cloud Netflix Eureka 간단 정리  (0) 2022.10.14
Spring Cloud 간단정리  (0) 2022.10.14
Anti-Fragile, Cloud Native Architecture 간단 정리  (0) 2022.10.14