πŸ‘¨‍πŸ‘©‍πŸ‘§‍πŸ‘¦ Project

λ‹¨κ³„λ³„λ‘œ μ„±μž₯ν•˜μž!
"ν…ŒμŠ€νŠΈ μ½”λ“œλŠ” 선택이 μ•„λ‹Œ ν•„μˆ˜λ‹€" 이전 λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ—μ„œλŠ” ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ μ—†μ–΄μ„œ 포슀트맨으둜 API ν…ŒμŠ€νŠΈν•  λ•ŒλŠ” 잘 λ˜λ‹€κ°€ 예기치 λͺ»ν•œ 였λ₯˜κ°€ λ‚˜κ³€ ν–ˆμ—ˆλ‹€. μ½”λ“œλ₯Ό λ¦¬νŒ©ν„°λ§ ν•˜κ±°λ‚˜ λ‘œμ§μ„ μˆ˜μ •ν•  κ²½μš°μ— λ°œμƒν•˜λŠ” 휴먼 μ—λŸ¬ λ˜λŠ” 예기치 λͺ»ν•œ μ—λŸ¬λ₯Ό μ—¬λŸ¬ μΌ€μ΄μŠ€λ‘œ μž‘μ„±ν•΄ 놓은 ν…ŒμŠ€νŠΈ μ½”λ“œ 덕뢄에 λ°©μ–΄ν•  수 μžˆμ—ˆλ‹€. 생각보닀 λ¦¬νŒ©ν„°λ§μ„ ν•  λ•Œ μ‹€μˆ˜κ°€ μƒκΈ°λŠ” 자주 μƒκ²ΌλŠ”λ°, μ½”λ“œ μˆ˜μ • 후에 ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œμΌœ λ³΄λŠ” μŠ΅κ΄€μ„ λ“€μ—¬λ†“μŒμœΌλ‘œμ¨ μ–΄λŠ λΆ€λΆ„μ—μ„œ μž₯μ• κ°€ λ‚¬λŠ”μ§€λ₯Ό λΉ λ₯΄κ²Œ 확인할 수 μžˆμ—ˆλ‹€. 기쑴에 잘 λ™μž‘ν•˜λ˜ ν…ŒμŠ€νŠΈ μ½”λ“œκ°€ κ°‘μžκΈ° μ‹€νŒ¨ν•œλ‹€λŠ” 것은 λ‚΄κ°€ 방금 μˆ˜μ •ν•œ 뢀뢄이 잘λͺ»λλ‹€λŠ” 것이기 λ•Œλ¬Έμ΄λ‹€. 이번 ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ λ‹¨μœ„ ν…ŒμŠ€νŠΈμ— λŒ€ν•œ λͺ¨ν˜Έν–ˆλ˜ 생각듀이 μ •λ¦¬λ˜μ—ˆκ³ , 톡합 ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό 톡해 ..
✒ ν”„λ‘œμ νŠΈμ—μ„œ ν—₯사고날 μ•„ν‚€ν…μ²˜λ₯Ό μ μš©ν•˜κΈ°λ‘œ ν–ˆκ³ , MSA λ°©μ‹μœΌλ‘œ 각자 λΆ„λ¦¬λœ λ‹΄λ‹Ή μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•œλ‹€. 아무리 λΆ„λ¦¬λœ μ„œλΉ„μŠ€λΌκ³  해도 μ²˜μŒμ—λŠ” νŒ¨ν‚€μ§€ κ΅¬μ‘°λ‚˜ 넀이밍 μ»¨λ²€μ…˜μ„ μ •ν•΄λ†“λŠ” 게 좔후에 μ„œλ‘œ μ½”λ“œλ¦¬λ·°ν•  λ•Œ νŽΈν•˜κ³  μ—¬λŸ¬ μž₯점이 μžˆλŠ” 것 κ°™μ•„μ„œ 미리 μ„€κ³„ν•˜μ˜€λ‹€. 1. ν—₯사고날 μ•„ν‚€ν…μ²˜ ꡬ쑰 에 λŒ€ν•œ 것은 이전 ν¬μŠ€νŒ…μ„ ν™•μΈν•΄μ£Όμ„Έμš”. 2023.07.06 - [πŸ‘¨‍πŸ‘©‍πŸ‘§‍πŸ‘¦ Project/πŸ“© DevTalk] - ν—₯사고날(Hexagonal) μ•„ν‚€ν…μ²˜λ₯Ό 곡뢀해 보자 (with Layered, Clean Architecture) 2. λ‚΄κ°€ μƒκ°ν•œ νŒ¨ν‚€μ§€ ꡬ쑰 src.groupname γ„΄ global γ„΄ config γ„΄ util γ„΄ error γ„΄ exception γ„΄ handler γ„΄ {μ• κ·Έλ¦¬κ±°νŠΈ 이름} γ„΄..
✒ λ°λΈŒν†‘ ν”„λ‘œμ νŠΈμ—μ„œ ν—₯사고날 μ•„ν‚€ν…μ²˜λ₯Ό μ μš©ν•΄ 보자고 μ œμ•ˆν•΄ 보기 μœ„ν•΄ κ³΅λΆ€ν•˜μ˜€κ³  λ‚΄μš©μ„ μ •λ¦¬ν•˜μ˜€λ‹€. μ μš©ν•΄λ³΄κ³ μž ν•˜λŠ” μ΄μœ λŠ” λ°λΈŒν†‘μ€ MSA둜써 Port&Adapter μ•„ν‚€ν…μ²˜μΈ ν—₯사고날 μ•„ν‚€ν…μ²˜λ₯Ό μ‚¬μš©ν•˜λŠ” 게 μ˜μ‘΄μ„±μ„ κ΄€λ¦¬ν•˜κΈ° 쒋을 것 κ°™μ•˜κΈ° λ•Œλ¬Έμ΄λ‹€. (1) 전톡적인 λ ˆμ΄μ–΄λ“œ μ•„ν‚€ν…μ²˜μ˜ 문제 1. λ°μ΄ν„°λ² μ΄μŠ€ 주도 섀계λ₯Ό μœ λ„ν•œλ‹€. 전톡적인 κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜μ˜ ν† λŒ€λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ΄λ‹€. μ›Ή 계측은 도메인 계측에 μ˜μ‘΄ν•˜κ³ , 도메인 계측은 μ˜μ†μ„± 계측에 μ˜μ‘΄ν•˜κΈ° λ•Œλ¬Έμ— μžμ—°μŠ€λŸ½κ²Œ DB에 μ˜μ‘΄ν•˜κ²Œ λœλ‹€. μš°λ¦¬κ°€ 보톡 κ°œλ°œν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λͺ©μ μ€ λΉ„μ§€λ‹ˆμŠ€λ₯Ό κ΄€μž₯ν•˜λŠ” κ·œμΉ™μ΄λ‚˜ 정책을 λ°˜μ˜ν•œ λͺ¨λΈμ„ λ§Œλ“€μ–΄μ„œ μ‚¬μš©μžκ°€ νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 있게 ν•˜λŠ” 것이닀. μ΄λ•Œ μš°λ¦¬λŠ” Stateκ°€ μ•„λ‹ˆλΌ Behaviorλ₯Ό 쀑..
1. ν…ŒμŠ€νŠΈμ— λŒ€ν•΄μ„œ κ³΅λΆ€ν•˜κ²Œ 된 계기 κΈ°μ‘΄μ—λŠ” ν…ŒμŠ€νŠΈλ₯Ό API κ΅¬ν˜„ μ™„λ£Œ ν›„ Postman으둜 ꡬ동 확인 μœ„μ£Όλ‘œ ν•˜μ˜€λ‹€. ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 방법도 λͺ°λžκ³  μ€‘μš”μ„±λ„ 크게 λͺ°λžμ—ˆλ‹€. ν•˜μ§€λ§Œ μ΄λ²ˆμ—λŠ” μ‹€μ œ μ„œλΉ„μŠ€ ν•΄μ•Όν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄κ³  μ„œλΉ„μŠ€ν›„μ—λ„ 계속 μˆ˜μ •μ‚¬ν•­μ΄ λ°œμƒν•  것이기 λ•Œλ¬Έμ— ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό μž‘μ„±ν•΄λ†“μ§€ μ•ŠλŠ”λ‹€λ©΄ 정말 νž˜λ“€μ–΄μ§ˆ 것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. ν•˜μ§€λ§Œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλŠ” μ–΄λ–»κ²Œ ν•˜λŠ” 것인지? λ‹¨μœ„ ν…ŒμŠ€νŠΈμ™€ 톡합 ν…ŒμŠ€νŠΈμ˜ 차이가 무엇인지? μ „ν˜€ λͺ°λžλ‹€. λ”°λΌμ„œ λ‹¨μœ„ ν…ŒμŠ€νŠΈ λΌλŠ” 책을 읽고 μ˜ˆμ‹œ 상황을 정리해보며 생각을 정리해봀닀. 2. λ‹¨μœ„ ν…ŒμŠ€νŠΈλž€? μ •μ˜ λͺ¨λ“ˆμ΄λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 내뢀에 μžˆλŠ” μž‘μ€ μ½”λ“œ 쑰각이 μ˜ˆμƒκ³Ό λ˜‘κ°™μ΄ λ™μž‘ν•˜λŠ”μ§€ κ²€μ¦ν•˜λŠ” 반볡적인 ν–‰μœ„ 속성 - ν”„λ‘œκ·Έλž¨μ˜ μž‘μ€ μ½”λ“œ 쑰각 λ‹¨μœ„λ₯Ό..
1. 문제 상황 κΈ°μ‘΄ μ½”λ“œ 흐름 @Getter public enum ErrorCode { DUPLICATED_LONGIND("0101", 이미 μ‚¬μš©μ€‘μΈ 아이디(ν•™λ²ˆ) μž…λ‹ˆλ‹€.)"), ... public DuplicatedLoginIdException extends RuntimeException { public DuplicatedLoginIdException() { } } # SignupService public void signup(LoginReq req) { ... throw new DuplicatedLoginIdException(); } @RestControllerAdvice public class ControllerAdvice { @ResponseStatus(HttpsStatus.CONFLICT) ..
1. 문제 상황 μ‚¬μš©μž μˆ˜κ°€ λ§Žμ§€ μ•Šμ§€λ§Œ λ°°ν¬ν•˜λ €λŠ” 물리 μ„œλ²„ μ»΄ν“¨ν„°μ˜ μ„±λŠ₯이 κ·Έλ‹₯ 쒋지 μ•ŠκΈ°μ— ν˜Ήμ‹œλ‚˜ 잘λͺ»λ˜λ©΄ μ–΄λ–‘ν•˜λ‚˜λΌλŠ” 걱정이 계속 μžˆμ—ˆκ³  CPU, λ©”λͺ¨λ¦¬, Thread Pool을 계속 λͺ¨λ‹ˆν„°λ§ ν•  수 μžˆλŠ” 방법이 μ—†μ„κΉŒ? 라고 μƒκ°ν•˜μ—¬ 찾아보닀가 Spring Actuator, Micrometer, Prometheus, Grafana와 같은 ν‚€μ›Œλ“œλ₯Ό μ•Œκ²Œλ˜μ–΄ κ³΅λΆ€ν•˜κ³  κ΅¬μΆ•ν•˜κ²Œ λ˜μ—ˆλ‹€. 2. 문제 ν•΄κ²° ✏️ Spring Actuator Production을 μš΄μ˜ν™˜κ²½μ— 배포할 λ•Œ Metric(μ§€ν‘œ), Trace(좔적), Auditing(감사), λͺ¨λ‹ˆν„°λ§κ³Ό 같은 ν•„μš”ν•œ κΈ°λŠ₯을 맀우 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€. Micrometer, Prometheus, Grafanaλ₯Ό 맀우 μ‰½κ²Œ 연동..
DevPoong
'πŸ‘¨‍πŸ‘©‍πŸ‘§‍πŸ‘¦ Project' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘ (2 Page)