λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μž‘λ‹΄

[Slash 23] MSA μ „ν™˜κΈ°λ₯Ό 보고 λ‚˜μ„œ

by oliviarla 2024. 9. 14.

https://youtu.be/amTJyIE1wO0?si=0n8WlzfYEt5wAto9

 

ν˜„μž¬ κ΅¬μ„±λœ λŒ€λΆ€λΆ„μ˜ 은행 μ‹œμŠ€ν…œμ€ μ•„λž˜μ™€ 같은 μˆœμ„œλ‘œ κ°œμ„ λ˜μ–΄ μ™”λ‹€. 금육ꢌ 취업을 μœ„ν•΄μ„œλŠ” Oracle, Java, C 곡뢀가 ν•„μš”ν•˜λ‹€λŠ” 사싀은 읡히 μ•Œκ³  있던 사싀이닀. μ΄λŸ¬ν•œ μ‹œμŠ€ν…œμ΄ κ³„μ†λ˜μ–΄ 온 μ΄μœ λŠ” 였랜 κΈ°κ°„ μœ μ§€λ˜μ—ˆκΈ° λ•Œλ¬Έμ— μ•ˆμ •μ„±μ΄ λ†’κ³  κ°œλ°œμžλ“€μ΄ λΉ λ₯΄κ²Œ 적응 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. ν† μŠ€μ—μ„œλŠ” μ΄λŸ¬ν•œ μ°¨μ„ΈλŒ€ μ‹œμŠ€ν…œμ—μ„œ ν•œλ°œμ§ λ‚˜μ•„κ°€ 일뢀 μ‹œμŠ€ν…œμ„ MSA둜 뢄리해낸 이야기λ₯Ό λ“€λ €μ€€λ‹€.

 

μ€ν–‰κΆŒ κ°œλ°œμ—μ„œλŠ” 채널계, 계정계 λ“± κ΄€λ ¨ 직업 μ’…μ‚¬μžκ°€ μ•„λ‹Œ 일반인이 λ“€μœΌλ©΄ μ‰½κ²Œ μ΄ν•΄ν•˜κΈ° μ–΄λ €μš΄ λΆ„λ₯˜ μš©μ–΄κ°€ 쓰인닀.

 

κ³„μ •κ³„λŠ” μ‹€μ œλ‘œ μ‚¬μš©μžμ˜ λˆμ„ 닀루며 원본 데이터가 μ €μž₯λ˜λŠ” μ˜μ—­μ΄λ‹€. μ„œλ²„μ™€ DBκ°€ ν•˜λ‚˜μ΄λ―€λ‘œ λ„€νŠΈμ›Œν¬ ꡬ쑰가 λ‹¨μˆœν•˜κ³  DBκ°€ ν•˜λ‚˜μ΄λ―€λ‘œ νŠΈλžœμž­μ…˜ μ²˜λ¦¬μ— μœ λ¦¬ν•˜λ‹€. 였λ₯˜ 없이 λ™μž‘ν•˜λŠ” 것이 맀우 μ€‘μš”ν•˜λ―€λ‘œ μ„±λŠ₯을 ν¬μƒν•˜λ”λΌλ„ μ΄λŸ¬ν•œ ꡬ쑰λ₯Ό μœ μ§€ν•˜κ³  μžˆλ‹€.

 

μ±„λ„κ³„λŠ” μœ μ €μ˜ μš”μ²­μ„ 직접 λ°›μ•„ μ²˜λ¦¬ν•˜λŠ” μ˜μ—­μ΄λ©°, ν•„μš”ν•œ κ²½μš°μ—λŠ” κ³„μ •κ³„λ‚˜ μ™ΈλΆ€ APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μ²˜λ¦¬ν•˜κ²Œ λœλ‹€. 이 λ•Œ μ±„λ„κ³„λŠ” DBκ°€ λΆ„λ¦¬λ˜μ–΄ 있기 λ•Œλ¬Έμ— νŠΈλžœμž­μ…˜ μ²˜λ¦¬κ°€ μ–΄λ ΅κ³  λ„€νŠΈμ›Œν¬ ꡬ쑰가 λ³΅μž‘ν•˜λ‹€. ν•˜μ§€λ§Œ νŠΉμ • μ„œλ²„λ‚˜ DB에 λΆ€ν•˜κ°€ λͺ°λ¦΄ λ•Œ μŠ€μΌ€μΌ μ•„μ›ƒν•˜κΈ°μ— μš©μ΄ν•˜λ‹€.

https://youtu.be/v9rcKpUZw4o?si=9Lg64G9RRPLRPMLp

 

λ§Œμ•½ 계정계, 즉 μ½”μ–΄λ±…ν‚Ή μ„œλ²„μ— νŠΉμ • μš”μ²­λ“€λ‘œ 인해 λΆ€ν•˜κ°€ λͺ°λ¦¬κ²Œ λœλ‹€λ©΄ 전체 μ„œλΉ„μŠ€μ— 영ν–₯이 갈 수 μžˆλ‹€. 이 μ˜μƒμ—μ„œλ„ λ§ν•˜λ“―, 이자 지급 λ²„νŠΌμ„ μ‚¬λžŒλ“€μ΄ 많이 λˆŒλ €μ„ λ•Œ 이λ₯Ό μ²˜λ¦¬ν•˜λŠλΌ λ‹€λ₯Έ 업무가 느렀질 수 μžˆλŠ” 것이닀. κ²°κ΅­ μ½”μ–΄λ±…ν‚Ή μ„œλ²„λŠ” SPOF(Single Point of Failure)κ°€ 될 μœ„ν—˜μ΄ μ•„μ£Ό λ†’λ‹€.

ν•˜λ‚˜μ˜ DB, μ„œλ²„μ—μ„œ μˆ˜μ‹ , μ—¬μ‹ , μΉ΄λ“œ λ“± λ‹€μ–‘ν•œ 업무λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλŠ” λͺ¨μŠ΅μ΄λ‹€.

 

κ²°κ΅­ ν† μŠ€λŠ” 이 μ½”μ–΄λ±…ν‚Ή μ„œλ²„λ₯Ό 독립적인 마이크둜 μ„œλ²„λ‘œ ν•˜λ‚˜μ”© λΆ„λ¦¬ν•˜κΈ° μ‹œμž‘ν–ˆλ‹€.

 

이 μ˜μƒμ—μ„œ μ§‘μ€‘μ μœΌλ‘œ 닀룬 마이크둜 μ„œλ²„ μ‚¬λ‘€λŠ” 이자 지급 μ„œλ²„μ΄λ‹€. κΈ°μ‘΄μ—λŠ” 고객의 정보λ₯Ό κ°€μ Έμ˜€κ³  μƒν’ˆ μ•½κ΄€ 정보λ₯Ό κ°€μ Έμ˜€κ³  이자 계산, μ„ΈκΈˆ 계산, μ‹€μ œ κ³„μ’Œλ‘œ μ†‘κΈˆν•˜λŠ” 절차λ₯Ό ν•œ νŠΈλžœμž­μ…˜ λ‚΄μ—μ„œ μ²˜λ¦¬ν–ˆλ‹€. ν•˜μ§€λ§Œ μ΄μ œλŠ” 마이크둜 μ„œλ²„ μ•„ν‚€ν…μ²˜λ₯Ό λ„μž…ν•˜κΈ° λ•Œλ¬Έμ— μ΅œλŒ€ν•œ 뢄리할 수 μžˆλŠ” μš”μ²­μ€ λΆ„λ¦¬ν•˜μ—¬ μ•„λž˜μ™€ 같은 ν˜•νƒœκ°€ λ˜μ—ˆλ‹€.

 

ν•˜λ‚˜μ˜ μ½”μ–΄λ±…ν‚Ή μ„œλ²„μ—μ„œ κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•˜λ˜ νŠΈλžœμž­μ…˜μ„ 마이크둜 μ„œλ²„λ‘œ λ‚˜λˆ„λ‹€λ³΄λ‹ˆ λ™μ‹œμ„± μ œμ–΄λ₯Ό 신경써주어야 ν•˜κ²Œ λ˜μ—ˆλ‹€.

λ§Œμ•½ νŠΈλžœμž­μ…˜ 1κ³Ό νŠΈλžœμž­μ…˜ 2κ°€ λ™μ‹œμ— μž”μ•‘μ„ μ‘°νšŒν•˜μ˜€κ³  각각 μƒˆλ‘œμš΄ κΈˆμ•‘μ„ 계산해 κ°±μ‹ ν•œλ‹€λ©΄ λŒ€μ°Έμ‚¬κ°€ λ°œμƒν•  수 μžˆλ‹€.

 

 

ν† μŠ€μ—μ„œλŠ” JPA의 @Lock μ–΄λ…Έν…Œμ΄μ…˜μ„ μ΄μš©ν•΄ 이λ₯Ό ν•΄κ²°ν–ˆλ‹€. 이 λ•Œ 락을 μž‘μ•„μ•Ό ν•˜λŠ” λ°μ΄ν„°λ§Œ λͺ…ν™•νžˆ 골라내어 락을 얻을 수 μžˆλ„λ‘ ν•΄μ•Ό λ°λ“œλ½μ΄λ‚˜ μ„±λŠ₯ μ €ν•˜λ₯Ό 막을 수 μžˆλ‹€. 이자 지급 μ„œλ²„μ—μ„œ 락을 μž‘μ•„μ•Όλ§Œ ν•˜λŠ” μ€‘μš”ν•œ λ°μ΄ν„°λŠ” κ³„μ’Œ λ‹¨μœ„μ˜ ν˜„μž¬ μž”μ•‘ λ°μ΄ν„°μ΄λ―€λ‘œ, 이λ₯Ό μ‘°νšŒν•˜λŠ” λ©”μ„œλ“œμ— λŒ€ν•΄ @Lock μ–΄λ…Έν…Œμ΄μ…˜μ„ λΆ™μ˜€μ„ κ²ƒμœΌλ‘œ μΆ”μΈ‘ν•  수 μžˆλ‹€. 락을 μ–»κΈ° μœ„ν•΄ κΈ°λ‹€λ¦¬λŠ” timeout을 μ„€μ •ν•˜κ³ , μž¬μ‹œλ„ λ‘œμ§λ„ μž‘μ„±ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

 

DB μ“°κΈ° μ§€μ—°μœΌλ‘œ 인해 μ‹€μ‹œκ°„μœΌλ‘œ λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ” μΌ€μ΄μŠ€λ“€μ— ν•œν•΄ Kafka λ©”μ‹œμ§• 큐λ₯Ό 톡해 λΉ„λ™κΈ°λ‘œ μ²˜λ¦¬λ˜λ„λ‘ ν•˜μ˜€λ‹€. λ§Œμ•½ Kafka λ©”μ‹œμ§€κ°€ μ •μƒμ μœΌλ‘œ μ²˜λ¦¬λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ Dead Letter Queue Topic에 담아두고 μž¬μ‹œλ„λ₯Ό μˆ˜ν–‰ν•œλ‹€. 이 λ•Œ μž¬μ‹œλ„λ‘œ 인해 쀑볡 μ—…λ°μ΄νŠΈκ°€ λ˜μ§€ μ•Šλ„λ‘ 멱등성을 ν™•λ³΄ν•˜λŠ” 것도 μ€‘μš”ν•˜λ‹€.

 

μ΄λ ‡κ²Œ μƒˆλ‘­κ²Œ 개발된 마이크둜 μ„œλ²„λŠ” μΆ©λΆ„ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈ, 톡합 ν…ŒμŠ€νŠΈ, μŠ€ν…Œμ΄μ§• ν™˜κ²½ 상 ν…ŒμŠ€νŠΈ λ“±λ“± 각쒅 ν…ŒμŠ€νŠΈμ— μ‹œλ‹¬λ¦° 후에 일뢀 νŠΈλž˜ν”½λΆ€ν„° μ μ§„μ μœΌλ‘œ μ μš©λœλ‹€.

마무리

받을 수 μžˆλŠ” 이자 κΈˆμ•‘μ„ μΊμ‹±ν•˜κΈ° μœ„ν•΄ Redisλ₯Ό μ‚¬μš©ν•œ 사둀도 μžˆμ—ˆλŠ”λ°, μ—­μ‹œλ‚˜ 데이터가 사라져도 크게 λ¬Έμ œκ°€ μ—†λŠ” λ°μ΄ν„°λ§Œμ„ μ €μž₯ν•˜λ„λ‘ ν•˜λŠ” 것을 λ³Ό 수 μžˆμ—ˆλ‹€.

더 λ‚˜μ€ μ„œλΉ„μŠ€λ₯Ό μœ„ν•΄ μƒˆλ‘œμš΄ μ•„ν‚€ν…μ²˜λ₯Ό μ•ˆμ •μ μœΌλ‘œ λ„μž…ν•˜λŠ” 것은 정말 멋진 것 κ°™λ‹€. μ—¬λŸ¬ μ•„ν‚€ν…μ²˜μ™€ κΈ°μˆ λ“€μ„ κ³΅λΆ€ν•˜λ©° 더 효율적으둜 κ΅¬ν˜„ν•˜λŠ” λŠ₯λ ₯을 ν‚€μ›Œμ•Όκ² λ‹€.

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

2024 회고 & 2025 λͺ©ν‘œ  (1) 2025.01.01
2023 μΈν”„μ½˜ ν›„κΈ°  (2) 2023.08.16
2022 회고  (0) 2023.01.05
velogμ—μ„œ ν‹°μŠ€ν† λ¦¬λ‘œ λ„˜μ–΄μ˜¨ 이유  (0) 2022.04.04

λŒ“κΈ€