Skip to content

Conversation

@jongfeel
Copy link
Member

논의 주제는 챕터 5에 적었습니다.

@github-actions
Copy link

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

@jongfeel jongfeel self-assigned this Jan 21, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

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

이 PR은 "소프트웨어 아키텍처 The Hard Parts"의 챕터 4와 5에 대한 개인적인 학습 요약, 리뷰 및 논의 주제를 추가합니다. 아키텍처 분해의 기본 개념과 평가 지표부터 컴포넌트 기반 분해 패턴의 실제 적용 사례와 네임스페이스 설계에 대한 깊이 있는 성찰까지, 소프트웨어 아키텍처의 핵심 원칙과 실용적인 접근 방식을 탐구합니다.

Highlights

  • 아키텍처 분해 논의 확장: 챕터 4에서 소프트웨어 아키텍처의 평가 지표와 모듈성, 커플링 등 핵심 개념을 에드워드 요던, 래리 콘스탄틴, 로버트 마틴과 같은 거장들의 저서와 연결하여 깊이 있게 다루었습니다.
  • 컴포넌트 기반 분해 패턴 고찰: 챕터 5에서는 컴포넌트 기반 분해 패턴에 대한 상세한 리뷰를 통해 C# 네임스페이스 설계 경험을 되돌아보고, 책에서 제시하는 모범 사례에 맞춰 향후 설계를 개선하겠다는 의지를 표명했습니다.
  • 실용적인 분해 기법 강조: 컴포넌트 분해 기법이 현실적이고 구체적이며 실용적이라는 점을 높이 평가하며, 특히 '진흙잡탕'과 같은 거대한 시스템을 점진적으로 분해하는 6단계 방법론의 유용성을 강조했습니다.

🧠 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.

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.

@jongfeel jongfeel added 2026 Software Architecture: The Hard Parts 소프트웨어 아키텍처: The Hard Parts, 분산 아키텍처를 위한 모던 트레이드오프 분석 labels Jan 21, 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

이 PR은 "소프트웨어 아키텍처 The Hard Parts" 4장과 5장의 요약 내용을 추가합니다. 책 내용에 대한 깊은 고민이 담긴 좋은 요약입니다. 전반적인 가독성을 높이고 몇 가지 오타를 수정하기 위해 아래와 같이 몇 가지 제안을 드립니다.

jongfeel and others added 8 commits January 21, 2026 20:26
…l/Chapter4_Architectural_Decomposition.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter4_Architectural_Decomposition.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter4_Architectural_Decomposition.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter5_Component-Based_Decomposition_Patterns.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter5_Component-Based_Decomposition_Patterns.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter5_Component-Based_Decomposition_Patterns.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter5_Component-Based_Decomposition_Patterns.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…l/Chapter5_Component-Based_Decomposition_Patterns.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Comment on lines +42 to +50
## 논의 주제

처음부터 모놀리스는 아니더라도 컴포넌트 기반으로 분석 과정을 통해 하나의 서비스를 완성해 나가는 기법에 대해 설명한 부분이 인상 깊었다. 솔직히 어려울 수도 있는 내용을 구체적이고 자세히 잘 설명할 수 있다는 점에서 감동까지 받았다.

꼭 여기에서 설명하는 컴포넌트 분해 기법이 아니더라도 자신이 설계한 컴포넌트의 네임스페이스 설계가 책에서 설명하고 있는 방법에 비춰 봤을 때 어느 정도 수준인지 논의해 보면 좋을 것 같다.
(책의 예시대로라면, 골프공? 농구공? 비행기?)

나의 경우에는 농구공 두 개, 여러개의 골프공 정도라고 볼 수 있는데, 레이어드 아키텍처를 버리지 않고 살리면서도 컴포넌트 기반 네임스페이스를 사용한 경우가 있기 때문이다.
여기서 농구공에 해당하는 부분은 첫 번째 리뷰 내용에 있듯이 네임스페이스 규칙에 대해 책의 방법이 아닌 내가 하고 싶은 방법대로 했다는 점이다. 어떻게 보면 네임스페이스 별 컴포넌트 이지만 그 안에는 레이어드 구조를 살리고 싶었던 미련이 있었다고 볼 수 있다.
Copy link
Collaborator

Choose a reason for hiding this comment

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

여객기 사이즈 라고 하기엔 책 기준 끝판왕으로 보여서, 그정돈 아닌거 같고 현재 기준으론 농구공 정도인데, 꽤나 큰 농구공으로 볼 수 있을거 같습니다(10년 묵은 레거시라..) 파이썬 코드베이스를 자바 스프링 코드베이스로 비즈니스 도메인 단위로 패키지(이 책 기준 컴포넌트)를 나눠서 AI 이용해서 재구현 하는 작업을 하고 있습니다

Comment on lines +46 to +47
꼭 여기에서 설명하는 컴포넌트 분해 기법이 아니더라도 자신이 설계한 컴포넌트의 네임스페이스 설계가 책에서 설명하고 있는 방법에 비춰 봤을 때 어느 정도 수준인지 논의해 보면 좋을 것 같다.
(책의 예시대로라면, 골프공? 농구공? 비행기?)
Copy link
Member

@chichoon chichoon Jan 23, 2026

Choose a reason for hiding this comment

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

작년 말에 리팩터링했던 레거시는 골프공은 아니더라도 야구공 ~ 농구공 수준 (나름 기준을 정해서 잘 쪼갰다) 은 된다고 생각했는데

불과 3개월만에 레거시가 되어서 재리팩토링을 하니 작년 말 코드 정도면 마을버스 정도는 되는 것 같습니다

하위 서비스로 쪼개야 했음에도 불구하고 (예를 들면, 고양이, 강아지, 호랑이, 독수리) 특성이 같다는 이유만으로 뭉쳐놨더니 (=> 동물 서비스로 뭉뚱그려 분류)

세부적으로는 서로 다른 화면임에도 불구하고 의존성과 내부 예외 분기가 너무 심해서 (날개 달린 동물에 대한 예외처리, 냉온동물에 대한 예외처리 등) 새로운 기능이 추가될때마다 예외처리로 만원버스가 되어버렸습니다

지금은 다시 농구공 사이즈로 회귀하려고 쪼개는 중입니다..

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 1, chapter 4, 5, 총 72페이지, 2026-01-23

4 participants