Skip to content

소프트웨어 아키텍처 the hard parts sprint 5 - 이근주#621

Open
GeunJuLEE wants to merge 1 commit intomainfrom
geunju-lee/20260306
Open

소프트웨어 아키텍처 the hard parts sprint 5 - 이근주#621
GeunJuLEE wants to merge 1 commit intomainfrom
geunju-lee/20260306

Conversation

@GeunJuLEE
Copy link
Contributor

Added chapters 10 to 12 discussing architecture trade-offs, distributed data access, workflow management, and transactional sagas.

Added chapters 10 to 12 discussing architecture trade-offs, distributed data access, workflow management, and transactional sagas.
@github-actions
Copy link

github-actions bot commented Mar 4, 2026

우측에 있는 Projects, Milestone, Development를 확인 후 할당 해주세요~! 🙇

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, 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!

이 PR은 '소프트웨어 아키텍처의 기초 2판'의 10장부터 12장까지의 내용을 바탕으로 분산 시스템 아키텍처의 핵심 개념들을 추가합니다. 분산 데이터 액세스 전략, 분산 워크플로 관리 방식(오케스트레이션과 코레오그래피), 그리고 트랜잭셔널 사가 패턴의 실제 적용 사례와 장단점을 심도 있게 다룹니다. 또한, 사가 기반 아키텍처에서 분산 트랜잭션을 효과적으로 디버깅하고 추적하는 방법에 대한 실용적인 해결책을 제시하여, 복잡한 분산 환경에서의 시스템 설계 및 운영에 대한 이해를 높이는 데 기여합니다.

Highlights

  • 분산 데이터 액세스 전략 추가: 캐싱, 스키마 복제 패턴, 서비스 간 통신 패턴 혼합을 통한 분산 데이터 접근 성능 개선 방안을 논의했습니다.
  • 분산 워크플로 관리 방식 제안: 오케스트레이션과 코레오그래피 방식의 비교를 통해 사용자 경험에 미치는 중요도에 따라 적절히 혼합하여 사용하는 현실적인 아키텍처 선택을 제안했습니다.
  • 트랜잭셔널 사가 패턴 분석: 8가지 사가 패턴(에픽, 폰 태그, 페어리 테일, 타임 트래블, 판타지 픽션, 호러 스토리, 패러렐, 앤솔로지)을 실제 시스템 예시와 함께 설명하고, 각 패턴의 장단점을 이해하고 혼합하여 사용하는 중요성을 강조했습니다.
  • 사가 기반 아키텍처 디버깅 및 트레이싱 방안 제시: Correlation ID, 분산 트레이싱 도구(Pinpoint, OpenTelemetry), Kafka 메시지 헤더 활용을 통한 사가 기반 분산 트랜잭션 흐름 추적 방안을 제시했습니다.

🧠 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
  • 2026/Fundamentals_of_Software_Architecture_2nd_Edition/geunju-lee/Chapter_10_to_12.md
    • '소프트웨어 아키텍처의 기초 2판'의 10장(분산 데이터 액세스), 11장(분산 워크플로 관리), 12장(트랜잭셔널 사가)에 대한 요약 및 실제 적용 사례를 담은 문서를 추가했습니다.
    • 사가 기반 아키텍처에서 분산 트랜잭션 디버깅 및 트레이싱 방법에 대한 논의와 해결책을 포함했습니다.
Activity
  • 아직 기록된 활동이 없습니다.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@GeunJuLEE GeunJuLEE added 2026 Software Architecture: The Hard Parts 소프트웨어 아키텍처: The Hard Parts, 분산 아키텍처를 위한 모던 트레이드오프 분석 labels Mar 4, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

새로 추가된 10장부터 12장까지의 내용은 아키텍처 트레이드오프, 분산 데이터 액세스, 워크플로 관리, 트랜잭셔널 사가에 대한 저자님의 깊이 있는 이해와 경험을 잘 보여줍니다. 각 패턴에 대한 설명과 실제 시스템에서의 적용 사례를 통해 독자들이 개념을 명확히 이해하는 데 큰 도움이 될 것입니다. 특히, 논의사항과 '내 생각' 섹션은 실무적인 관점에서 중요한 질문들을 던지고 해결책을 제시하여 매우 유용합니다. 몇몇 용어의 명확성과 설명의 구체성을 높이면 더욱 완성도 높은 문서가 될 것입니다.

Note: Security Review has been skipped due to the limited scope of the PR.


추가적으로 성능을 개선하고 싶다면 `item_desc` API를 제공하는 서비스에서 IDC별 topology를 활용하여 네트워크 지연(latency)을 줄이는 방법도 고려할 수 있을 것 같다.

결론적으로 위의 방법은 **서비스 간 통신 패턴과 복제 캐싱 패턴을 혼합한 구조**라고 볼 수 있으며, `item_desc`와 같이 변경이 드문 데이터라면 **스키마 복제 패턴(schema replication)**을 적용하는 것이 가장 적절하다고 생각한다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

현재 문맥(item_desc, 캐싱)에서 '스키마 복제 패턴'은 데이터의 복제를 의미하는 것으로 보입니다. '스키마 복제'는 데이터베이스 스키마 자체의 복제를 연상시킬 수 있어 오해의 소지가 있습니다. '데이터 복제 패턴'과 같이 더 명확한 용어를 사용하거나, 해당 패턴이 데이터 복제를 의미함을 명확히 설명하는 것이 좋습니다.

Suggested change
결론적으로 위의 방법은 **서비스 간 통신 패턴과 복제 캐싱 패턴을 혼합한 구조**라고 볼 수 있으며, `item_desc`와 같이 변경이 드문 데이터라면 **스키마 복제 패턴(schema replication)**을 적용하는 것이 가장 적절하다고 생각한다.
**데이터 복제 패턴(data replication)**을 적용하는 것이 가장 적절하다고 생각한다.

### 5. 판타지 픽션 사가
현재 사용하고 있는 에픽 사가의 성능을 개선하기 위해 일부 단계들을 병렬로 처리하는 방식으로 확장할 수 있을 것 같다.

### 6. 호러 스토리 패턴
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

'호러 스토리 패턴'이라는 이름은 직관적이지만, 실제 운영 환경에서 이 패턴을 피해야 하는 구체적인 이유나 발생할 수 있는 문제점(예: 예측 불가능한 의존성, 복잡한 롤백 로직으로 인한 시스템 안정성 저해 등)을 간략하게 추가하면 독자에게 더 유용한 정보가 될 것입니다.

Suggested change
### 6. 호러 스토리 패턴
이름 그대로 실제 운영 환경에서는 피해야 할 패턴이라고 생각한다. 예를 들어, 예측 불가능한 의존성이나 복잡한 롤백 로직으로 인해 시스템 안정성을 해칠 수 있습니다.

이름 그대로 실제 운영 환경에서는 피해야 할 패턴이라고 생각한다.

### 7. 패러렐 사가
책에서 설명한 것처럼 에픽 사가의 성능 문제를 해결할 수 있는 패턴이다. 다만 비동기 기반이기 때문에 상대적으로 중요도가 낮은 작업에 적용하는 것이 적절할 것 같다. 하지만 패러렐 사용할 바에는 앤솔로지 사용하는게 낫지 않을까 하는 생각이 든다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

패러렐 사가보다 앤솔로지 사가를 선호하는 이유에 대한 추가적인 설명이 있다면 독자들이 두 패턴의 장단점을 비교하고 이해하는 데 더 도움이 될 것입니다. 예를 들어, 앤솔로지가 이벤트 기반으로 더 유연하게 확장 가능하며 각 서비스의 독립성을 더욱 보장할 수 있다는 점 등을 언급할 수 있습니다.

Suggested change
책에서 설명한 것처럼 에픽 사가의 성능 문제를 해결할 수 있는 패턴이다. 다만 비동기 기반이기 때문에 상대적으로 중요도가 낮은 작업에 적용하는 것이 적절할 것 같다. 하지만 패러렐 사용할 바에는 앤솔로지 사용하는게 낫지 않을까 하는 생각이 든다.
하지만 패러렐 사용할 바에는 앤솔로지 사용하는게 낫지 않을까 하는 생각이 든다. 앤솔로지는 이벤트 기반으로 유연하게 확장 가능하며, 각 서비스의 독립성을 더욱 보장할 수 있기 때문입니다.


## 내 생각

1. 각 요청에 대해 `requestUuid`와 같은 **Correlation ID**를 생성하여 모든 서비스 로그에 전달하고, 이를 기반으로 전체 트랜잭션 흐름을 추적할 수 있다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

문서 전체가 한국어로 작성되어 있으므로, 'Correlation ID'와 같은 영어 용어에 대해 한국어 번역(예: '연관 ID')을 함께 표기하거나, 처음 등장할 때 간략하게 설명해주면 독자의 이해를 높이는 데 도움이 될 것입니다.

Suggested change
1. 각 요청에 대해 `requestUuid` 같은 **Correlation ID**를 생성하여 모든 서비스 로그에 전달하고, 이를 기반으로 전체 트랜잭션 흐름을 추적할 수 있다.
1. 각 요청에 대해 requestUuid와 같은 **연관 ID(Correlation ID)**를 생성하여 모든 서비스 로그에 전달하고, 이를 기반으로 전체 트랜잭션 흐름을 추적할 수 있다.

@GeunJuLEE GeunJuLEE changed the title Add chapters 10 to 12 on architecture and sagas 소프트웨어 아키텍처 the hard parts sprint 5 - 이근주 Mar 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2026 Software Architecture: The Hard Parts 소프트웨어 아키텍처: The Hard Parts, 분산 아키텍처를 위한 모던 트레이드오프 분석

Projects

None yet

Development

Successfully merging this pull request may close these issues.

<소프트웨어 아키텍처 The Hard Parts> sprint 5, chapter 10, 11, 12 총 83 페이지, 2026-03-06

1 participant