Home Transaction
Post
Cancel

Transaction

πŸ’¨ Monoliths ↔ MSA μ „ν™˜

Application Logic layerλΆ€ν„° 순차적으둜 λΆ„ν•΄

  1. Router ꡬ좕
  2. Monolithsκ°€ routerλ₯Ό 톡해 μš”μ²­ λ°›κ²Œ ν•˜κΈ°
  3. API둜 톡신 κ°€λŠ₯ν•œ μž‘μ€ 규λͺ¨μ˜ μ„œλΉ„μŠ€λ₯Ό λΆ„λ¦¬ν•˜μ—¬ microservice 1개 ꡬ좕
  4. κ΅¬μΆ•λœ μ„œλΉ„μŠ€λ§Œ proxy μ „ν™˜
  5. DB λ˜λŠ” schema 뢄리
  6. λΆ„λ¦¬λœ μ„œλΉ„μŠ€λ₯Ό μœ„ν•œ Data Migration
  7. 검증 및 ν™•μž₯


πŸƒ 데이터 이관 μ „λž΅

  • Downtime κ°–κ³  ν•œ λ²ˆμ— ETL (Extract, Transform, Load)
  • ꡬDB와 μƒˆ DB λ‘˜ λ‹€ μ‚¬μš©ν•˜μ§€λ§Œ, Monolithsμ—μ„œλŠ” ReadOnly
  • CDCλ₯Ό μ΄μš©ν•˜μ—¬ λ³€κ²½λ˜λŠ” λ°μ΄ν„°λ§Œ μƒˆ DB에 반영

μ˜€λŠ˜λ‚ μ—λŠ” AWS Snowball λ“± ν΄λΌμš°λ“œ μ„œλΉ„μŠ€λ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ κ°„νŽΈν™”

🧐 Change Data Capture

DB의 둜그 νŒŒμΌμ„ 뢄석해 λ³€κ²½λœ 데이터λ₯Ό μΆ”μΆœν•˜λŠ” 기술


πŸ— MSAμ—μ„œμ˜ DB 섀계

πŸ™‚ 이상

  • λΆ„λ¦¬λœ μ„œλΉ„μŠ€ λ‹Ή λ…λ¦½λœ λ°μ΄ν„°λ² μ΄μŠ€ μ†Œμœ 
  • λ‹€λ₯Έ μ„œλΉ„μŠ€μ—μ„œ κ΄€λ¦¬ν•˜λŠ” λ°μ΄ν„°λŠ” APIλ₯Ό ν†΅ν•΄μ„œλ§Œ μ°Έμ‘°

πŸ™ƒ ν˜„μ‹€

  • μ„œλ‘œ λ‹€λ₯Έ μ„œλΉ„μŠ€κ°€ 같은 데이터λ₯Ό λ™μ‹œμ— CUD ν•˜μ§€ μ•Šλ„λ‘ 섀계
  • λ°˜λ“œμ‹œ 물리적으둜 λ°μ΄ν„°λ² μ΄μŠ€ 뢄리 λΆˆν•„μš”


πŸŒ‰ λΆ„μ‚° DB 섀계

  • μ„œλΉ„μŠ€ λ‹Ή 1개 DB
  • μ„œλΉ„μŠ€ λ‹Ή 1개 DB + ν•„μš”ν•œ DB Link View
  • ν•˜λ‚˜μ˜ DBλ₯Ό ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€λ§Œ CUD κΆŒν•œμ„ κ°€μ§€κ³ , λ‚˜λ¨Έμ§€λŠ” ReadOnly
  • 1개 DB λ‚΄μ—μ„œ TableSpace만 ꡬ뢄
  • 1개 DB λ‚΄μ—μ„œ Schema만 ꡬ뢄
  • 곡톡 μ„œλΉ„μŠ€μ— λŒ€ν•œ Shared Data ꡬ좕


❓ Transaction

λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€κ²½μ‹œν‚€κΈ° μœ„ν•΄ μˆ˜ν–‰ν•˜λŠ” μž‘μ—… λ‹¨μœ„

  • Create, Delete, Update, Insert λͺ¨μŒ
  • λ™μ‹œμ„± μ œμ–΄μ™€ Recovery κΈ°λ³Έ λ‹¨μœ„


❓ SAGA

λΆ„μ‚° νŠΈλžœμž­μ…˜ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ 마이크둜 μ„œλΉ„μŠ€μ—μ„œ 데이터 일관성을 κ΄€λ¦¬ν•˜λŠ” 방법

Orchestration SAGA

  • 쀑앙 집쀑식 μ»¨νŠΈλ‘€λŸ¬κ°€ 각 μ„œλΉ„μŠ€μ—κ²Œ μ‹€ν–‰ν•  νŠΈλžœμž­μ…˜ μ•Œλ €μ£ΌλŠ” 방법

🧐 ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€μ—μ„œλΌλ„ νŠΈλžœμž­μ…˜μ΄ μ‹€νŒ¨ν•œλ‹€λ©΄?

μ„±κ³΅ν•œ νŠΈλžœμž­μ…˜ rollback λ‘œμ§μ„ μˆ˜ν–‰ν•˜μ—¬ 일관성 μœ μ§€

Choreography

  • 쀑앙 집쀑식 μ œμ–΄ 없이 Message Queueλ₯Ό μ΄μš©ν•˜μ—¬ λΉ„λ™κΈ°λ‘œ νŠΈλžœμž­μ…˜ 둜직 μš”μ²­
  • μ„œλΉ„μŠ€ κ°„ event Publishν•˜κ³  Subscribe
  • μ‹œμŠ€ν…œ λ³΅μž‘λ„ 증가

🧐 ν•˜λ‚˜μ˜ μ„œλΉ„μŠ€μ—μ„œ νŠΈλžœμž­μ…˜μ΄ μ‹€νŒ¨ν•œλ‹€λ©΄?

μ•½μ†λœ Fallback을 μˆ˜ν–‰ν•˜κ±°λ‚˜, Retry


CQRS

Command and Query Responsibility Segregation

Command와 Query의 μ±…μž„μ„ λΆ„λ¦¬ν•˜λŠ” νŒ¨ν„΄

μˆ˜μ€€ 1. μ„œλΉ„μŠ€ μˆ˜μ€€μ—μ„œ CUD와 R μ—­ν•  ꡬ뢄

μˆ˜μ€€ 2. read-replica μ‚¬μš©

μˆ˜μ€€ 3. CUD DB와 R DBλ₯Ό λΆ„λ¦¬ν•˜κ³  동기화

  • 보톡 RDB와 NoSQL 기반의 DBλ₯Ό μ‚¬μš©ν•˜λŠ” 경우
  • Event Brokerλ₯Ό 톡해 변경사항을 동기화

μˆ˜μ€€ 4. EventSourcing

image https://docs.microsoft.com/ko-kr/azure/architecture/patterns/event-sourcing

  • λͺ¨λ“  νŠΈλžœμž­μ…˜μ„ Event둜 streaming
  • Event Broker 없이 EventStream μ €μž₯용 Data Storage 관리
  • λ°μ΄ν„°μ˜ μƒνƒœ λ³€κ²½ 이λ ₯ 관리 κ°€λŠ₯



좜처

This post is licensed under CC BY 4.0 by the author.

Netflixed

-