-
Notifications
You must be signed in to change notification settings - Fork 5
소프트웨어 아키텍처 The Hard Parts sprint 4 - 김종필 #610
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
The head ref may contain hidden characters: "607-\uC18C\uD504\uD2B8\uC6E8\uC5B4-\uC544\uD0A4\uD14D\uCC98-the-hard-parts-sprint-4-chapter-8-9-\uCD1D-70\uD398\uC774\uC9C0-2026-02-20"
Changes from all commits
d96f233
0fb2edf
209c93b
52adab4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| ## Summary | ||
|
|
||
| - https://github.com/jongfeel/BookReview/issues/1622 | ||
|
|
||
| ## Review | ||
|
|
||
| - https://github.com/jongfeel/BookReview/issues/1622#issuecomment-3921793581 | ||
|
|
||
| ### 8.6 코드 재사용 예시와 가치에 대한 설명 | ||
|
|
||
| 보험회사의 각자 다른 팀의 예시로 설명했는데 이 예시를 보고 든 내 생각은 이렇다. | ||
| 지금은 휴대폰 번호로 개인 인증을 하는 시대이고 다른 방법으로 인증을 한다고 해도 이름, 성별, 주민등록번호, 휴대폰 번호 등은 공통 고객 정보가 될 것이다. | ||
| 이 정보는 통합 고객 정보로 두고 각 팀별로 원하는 정보는 팀별 고객 데이터베이스에 두는 것이다. | ||
| 만약 다른 팀에서 고객 정보를 원한다면 이미 가입되어 있는 고객인지만 체크하고 이후 팀에 맞는 도메인 고객 정보는 그 팀에서 추가로 관리하는 방법으로 해도 될 것 같다는 생각이다. | ||
|
|
||
| 그러면 아키텍처적인 문제를 해결할 수 있다. | ||
|
|
||
| 1. 팀별 도메인과 시나리오는 팀별 고객 정보를 통해 처리할 수 있다. | ||
| 2. 아키텍처적인 취약점, 즉 한 팀이 고객 정보를 변경하면 모든 팀에 문제가 생기는 예시지만 내가 제안한 방법은 자신의 팀의 도메인에 맞는 고객 정보만 변경되는 것이다. 즉 공통 고객 정보는 최초 가입 이후에는 변경이 없다. | ||
|
|
||
| 이후 재사용 문제도 해결 가능하다. | ||
|
|
||
| 1. 추상화, 이미 공통 고객 정보로 추상화가 가능해진 상태가 되었다. | ||
| 2. 변경 빈도, 이름, 성별, 주민등록번호, 전화번호는 거의 변경될 일이 없다. 그나마 변경 빈도가 있는 건 전화번호인데 한 사람이 평생 전화번호를 바꿀 일이 몇 번 있을까? (나의 경우라서 적절하진 않겠지만 최초 016에서 010으로 바꿀 때 한 번 빼고 전화번호를 변경한 일이 없다) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| ## Summary | ||
|
|
||
| - https://github.com/jongfeel/BookReview/issues/1623 | ||
|
|
||
| ## Review | ||
|
|
||
| - https://github.com/jongfeel/BookReview/issues/1623#issuecomment-3921813903 | ||
|
|
||
| ### 9.8.3 이벤트 기반 패턴 | ||
|
|
||
| 이벤트 메시지를 처리하는 방법에 있어서 실패하면 어떻하지라는 생각은 읽기 전 부터 들긴 했는데 | ||
| 지속 가능 구독자라는 기능도 흥미롭고 무엇보다도 수신자가 처리에 실패하면 데드 레터 큐라는 곳에 보낸다는 것도 합리적이라는 생각이 들었다. | ||
| 사실 이런 내용도 메시지 큐 관련 내용 찾아보면 나올텐데 책 내용을 읽으면서 자연스럽게 이해가 되면서 합리적이었다가 맞다고 볼 수 있을 것 같다. | ||
| 여태까지 읽어봤던 아키텍처 책에는 이런 설명은 구체적으로 나와있지 않았고 이걸 쓰는 게 맞고 특징이 무엇이고만 나와 있었기 때문이다. | ||
|
|
||
| ## 논의 내용 | ||
|
|
||
| 9.8 최종 일관성 패턴을 설명하는 세가지 방법에서 오케스트레이티드 요청 기반 패턴과 이벤트 기반 패턴에서 에러 처리할 때 트랜잭션 보상도 문제가 생기면 사람이 해결해야 한다는 내용이 나와 있습니다. | ||
| 사실 제가 과거에 작업했던 내용을 떠올려 보면 제가 직접 롤백하는 쿼리를 비즈니스 로직 처리 레벨이 아니라 직접 쿼리 명령 실행 프로그램을 통해 쿼리를 만들어 두고 파일로 저장해 뒀다가 정말 직접 실행해서 에러 처리에 대한 롤백 업데이트를 했었습니다. | ||
|
|
||
| 이게 다른 분들한테도 흔하게 있는 일인지 궁금하네요. | ||
| 흔하게 있는 일이라면 사람이 에러 처리하는 방법이 임시적인 방법이 아니라 얼마나 체계적이었는지도 얘기해 보면 좋겠습니다. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 사실 보상에 대해 문제가 생기면 재처리 되도록 해놨지만 그것이 일정 횟수를 넘어가게 된다면 그것은 운영자가 처리하는게 맞다고 생각하여 어드민을 통해 처리하고, 그래도 처리가 안 된다면 개발자가 로그를 보면서 원인을 파악합니다.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 저는 아직은 경험은 직접 못했지만, 간간히 다른 동료들이 직접 카프카나 DB를 조작하여 처리하는 것을 보긴 했습니다. |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
꽤 흔한 것 같습니다.
보상 트랜잭션이 실행되다 여러 번 실패하면 데드 레터 큐에 넣고 이떄 슬랙 알림이 오게끔 했었는데, 딱 이정도지 체계적으로 처리하지는 못했네요. 저도 다른 분들의 경험이 궁금하네요 ㅎㅎ