소프트웨어 아키텍처 The Hard Parts sprint 4 - 김종필#610
Conversation
|
우측에 있는 |
Summary of ChangesHello @jongfeel, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 Pull Request는 "소프트웨어 아키텍처 The Hard Parts" 책의 8장과 9장에 대한 저자의 독서 노트 및 리뷰를 추가합니다. 8장에서는 코드 재사용 패턴과 공통 고객 정보 관리 방안에 대한 깊이 있는 고찰을 제공하며, 9장에서는 이벤트 기반 패턴과 분산 트랜잭션에서의 에러 처리 및 수동 롤백 경험에 대한 논의를 제안하여, 복잡한 아키텍처 개념에 대한 이해를 돕고 실제 적용 사례에 대한 통찰을 공유합니다. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
...re_Architecture_2nd_Edition/jongfeel/Chapter9_Data_Ownership_and_Distributed_Transactions.md
Outdated
Show resolved
Hide resolved
...re_Architecture_2nd_Edition/jongfeel/Chapter9_Data_Ownership_and_Distributed_Transactions.md
Outdated
Show resolved
Hide resolved
| 사실 제가 과거에 작업했던 내용을 떠올려 보면 제가 직접 롤백하는 쿼리를 비즈니스 로직 처리 레벨이 아니라 직접 쿼리 명령 실행 프로그램을 통해 쿼리를 만들어 두고 파일로 저장해 뒀다가 정말 직접 실행해서 에러 처리에 대한 롤백 업데이트를 했었습니다. | ||
|
|
||
| 이게 다른 분들한테도 흔하게 있는 일인지 궁금하네요. | ||
| 흔하게 있는 일이라면 사람이 에러 처리하는 방법도 임시적인 방법이었다가 아닌 얼마나 체계적이었는가도 얘기해 보면 좋겠습니다. No newline at end of file |
There was a problem hiding this comment.
이게 다른 분들한테도 흔하게 있는 일인지 궁금하네요.
- 제 경우는 흔한 일 입니다. 다만, 제가 쿼리를 직접 수행하진 않고(권한 없음), DBA를 통해서 요청해서 진행 했었습니다.
- 단순히 DB만 변경하면 될 때는 위와같이 쿼리를 통해서 해결하지만, 이벤트 발행이 누락되었다던지, API 호출을 다시해줘야한다던지 할 때는 python interpreter 환경에서 직접 코드를 수동으로 동작할 때도 있었고, 아니면, 장애 발생 시, 복구를 위한 slack bot 기능을 만들어두고, 쓰곤 했었습니다
흔하게 있는 일이라면 사람이 에러 처리하는 방법도 임시적인 방법이었다가 아닌 얼마나 체계적이었는가도 얘기해 보면 좋겠습니다.
- MSA 환경에서는 언제든 장애가 발생할 수 있다고 전제하고, 장애 발생 시 빠르게 조치하기 위해서, 서비스 별 run book을 운영 했습니다. 기본적으로는 매뉴얼하게 빠르게 장애 조치할 수 있는 형태로 운영 되었고, 위에 말씀드린 것 처럼 slack bot 기능으로 처리하거나, python interpreter 활용 혹은 DB만 문제있을 때는 DBA에 요청 등등을 run book에 기록해두고 수행했었습니다
…l/Chapter9_Data_Ownership_and_Distributed_Transactions.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter9_Data_Ownership_and_Distributed_Transactions.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
| 9.8 최종 일관성 패턴을 설명하는 세가지 방법에서 오케스트레이티드 요청 기반 패턴과 이벤트 기반 패턴에서 에러 처리할 때 트랜잭션 보상도 문제가 생기면 사람이 해결해야 한다는 내용이 나와 있습니다. | ||
| 사실 제가 과거에 작업했던 내용을 떠올려 보면 제가 직접 롤백하는 쿼리를 비즈니스 로직 처리 레벨이 아니라 직접 쿼리 명령 실행 프로그램을 통해 쿼리를 만들어 두고 파일로 저장해 뒀다가 정말 직접 실행해서 에러 처리에 대한 롤백 업데이트를 했었습니다. | ||
|
|
||
| 이게 다른 분들한테도 흔하게 있는 일인지 궁금하네요. | ||
| 흔하게 있는 일이라면 사람이 에러 처리하는 방법이 임시적인 방법이 아니라 얼마나 체계적이었는지도 얘기해 보면 좋겠습니다. No newline at end of file |
There was a problem hiding this comment.
꽤 흔한 것 같습니다.
보상 트랜잭션이 실행되다 여러 번 실패하면 데드 레터 큐에 넣고 이떄 슬랙 알림이 오게끔 했었는데, 딱 이정도지 체계적으로 처리하지는 못했네요. 저도 다른 분들의 경험이 궁금하네요 ㅎㅎ
| 사실 제가 과거에 작업했던 내용을 떠올려 보면 제가 직접 롤백하는 쿼리를 비즈니스 로직 처리 레벨이 아니라 직접 쿼리 명령 실행 프로그램을 통해 쿼리를 만들어 두고 파일로 저장해 뒀다가 정말 직접 실행해서 에러 처리에 대한 롤백 업데이트를 했었습니다. | ||
|
|
||
| 이게 다른 분들한테도 흔하게 있는 일인지 궁금하네요. | ||
| 흔하게 있는 일이라면 사람이 에러 처리하는 방법이 임시적인 방법이 아니라 얼마나 체계적이었는지도 얘기해 보면 좋겠습니다. No newline at end of file |
There was a problem hiding this comment.
사실 보상에 대해 문제가 생기면 재처리 되도록 해놨지만 그것이 일정 횟수를 넘어가게 된다면 그것은 운영자가 처리하는게 맞다고 생각하여 어드민을 통해 처리하고, 그래도 처리가 안 된다면 개발자가 로그를 보면서 원인을 파악합니다.
| 사실 제가 과거에 작업했던 내용을 떠올려 보면 제가 직접 롤백하는 쿼리를 비즈니스 로직 처리 레벨이 아니라 직접 쿼리 명령 실행 프로그램을 통해 쿼리를 만들어 두고 파일로 저장해 뒀다가 정말 직접 실행해서 에러 처리에 대한 롤백 업데이트를 했었습니다. | ||
|
|
||
| 이게 다른 분들한테도 흔하게 있는 일인지 궁금하네요. | ||
| 흔하게 있는 일이라면 사람이 에러 처리하는 방법이 임시적인 방법이 아니라 얼마나 체계적이었는지도 얘기해 보면 좋겠습니다. No newline at end of file |
There was a problem hiding this comment.
저는 아직은 경험은 직접 못했지만, 간간히 다른 동료들이 직접 카프카나 DB를 조작하여 처리하는 것을 보긴 했습니다.
Notice
제가 pull request를 올리는 오늘 까지는 다른 분들도 pull request 해 주셔야 리뷰가 가능합니다.
Short review
설날 연휴 기간이었지만 어떻게 밤에 시간을 내서 책을 읽고 정리를 하긴 했습니다.
어려움이 있었지만 되긴 되네요.
또 제가 여태까지 책 읽으면서 감동받았다는 말을 세 번째 하는 것 같은데
내용을 쉽게 설명해주는 것도 있었지만 이해할 수 있게 빌드업을 해서 설명을 해준다는 느낌을 또 받았습니다.
비유를 하자면 잘 차려진 밥상을 받아서 먹어보니 맛있는게 이런 느낌이구나로 이해되는 느낌이었습니다.