Skip to content

Conversation

@GeunJuLEE
Copy link
Contributor

@GeunJuLEE GeunJuLEE commented Jan 21, 2026

2026.01.23은 청첩장 모임으로 인해 불참 혹은 늦참 하겠습니다.

@github-actions
Copy link

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

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @GeunJuLEE, 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판'의 4장과 5장 내용을 요약하고, 아키텍처 분해 및 컴포넌트 기반 설계 패턴에 대한 저자의 깊이 있는 고찰과 실제 개발 경험을 담은 새로운 문서를 추가합니다. 이는 복잡한 시스템을 설계하고 개선하는 과정에서 발생할 수 있는 고민과 해결책에 대한 통찰을 제공하며, 특히 MSA 전환 과정에서의 전략적 접근 방식에 대한 논의를 제안합니다.

Highlights

  • 새로운 학습 노트 추가: 소프트웨어 아키텍처 기초 2판의 4장과 5장에 대한 학습 내용을 정리한 마크다운 파일이 새로 추가되었습니다.
  • 아키텍처 분해에 대한 고찰: 4장 '아키텍처 분해'에서는 시스템 분해의 중요성과 방법에 대한 개인적인 견해 및 기존 애플리케이션 복제 후 리팩토링 방식에 대한 생각을 담고 있습니다.
  • 컴포넌트 기반 분해 패턴 분석: 5장 '컴포넌트 기반 분해 패턴'에서는 컴포넌트 분해 흐름, 패키지 명명 규칙, '컴포넌트 눌러 펴기 패턴' 적용 가능성, 그리고 도메인 생성 패턴에 대한 고민과 경험을 공유합니다.
  • MSA 및 리팩토링 전략 논의: DB 분리를 목표로 하는 MSA에서 컴포넌트 분해의 필요성에 대한 질문과, 리팩토링 시 잦은 배포를 통한 안정성 확보에 대한 개인적인 경험 사례를 제시합니다.

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

@GeunJuLEE GeunJuLEE changed the title 20260121. 4~5장 정리 20260123. 4~5장 정리 Jan 22, 2026
@GeunJuLEE GeunJuLEE self-assigned this Jan 22, 2026
@GeunJuLEE GeunJuLEE changed the title 20260123. 4~5장 정리 소프트웨어 아키텍처 The Hard Parts 2주차 - 이근주 Jan 22, 2026
@GeunJuLEE GeunJuLEE added 2026 Software Architecture: The Hard Parts 소프트웨어 아키텍처: The Hard Parts, 분산 아키텍처를 위한 모던 트레이드오프 분석 labels Jan 22, 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

4, 5장 정리 내용을 잘 읽었습니다. 아키텍처 분해와 컴포넌트 기반 분해 패턴에 대한 깊은 고민이 느껴지는 좋은 글입니다. 특히 본인의 경험과 책의 내용을 연결하여 논의사항과 경험 사례를 공유해주신 점이 인상 깊습니다. 전반적으로 내용이 훌륭하며, 제가 드리는 제안은 문장의 가독성을 조금 더 높이기 위한 사소한 수정(띄어쓰기, 문장 구조, 문법)에 초점을 맞추고 있습니다.

분해를 할 때 가장 중요한 것은 장애가 나지 않고, 기존과 얼마나 똑같이 잘 작동하도록 하느냐이다.
현재는 기존 어플리케이션을 복제하여 다시 개발하는 것을 하고 있다.
다른 분야는 어떨지 모르지만 이정도로 개발하는 정도라면 새로운 프로젝트를 아예 개발하는게 낫지 않을까 라는 생각이든다.
BE 개발자인 나로써는 api 단위로 새로운 프로젝트에 개발하여 새로운 버전의 api를 타 팀에게 전달할 것이다.
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

'BE 개발자'라는 자격이나 신분을 나타낼 때는 ~로서를 사용하는 것이 문법적으로 올바릅니다. ~로써는 도구나 수단을 나타낼 때 사용됩니다.

Suggested change
BE 개발자인 나로써는 api 단위로 새로운 프로젝트에 개발하여 새로운 버전의 api를 타 팀에게 전달할 것이다.
BE 개발자인 나로서는 api 단위로 새로운 프로젝트에 개발하여 새로운 버전의 api를 타 팀에게 전달할 것이다.

Comment on lines +29 to +31
컴포넌트 도메인 생성 패턴 관련해서는 책을 읽었지만 솔직히 와닿지 않는다. 예를 들면 이 책에서는 "과금 결제"를 "ss.customer.billing.payment"로 되어있는데, 만약 자동결제 혹은 정기결제가
있다면 이건 "ss.customer.billing.auto.pay" 이런 식이 될 것이고, b2c를 하는 회사라면 거의 대부분의 것이 customer 하위에 있을 것이다(최근 결제 수단, 적립, 포인트 충전, 영수증
발급 등등).
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

한 문장이 길어 내용을 파악하기가 다소 어렵습니다. 문장을 나누어 작성하면 가독성이 향상될 것 같습니다. 또한, 'b2c'는 일반적으로 대문자 'B2C'로 표기합니다.

Suggested change
컴포넌트 도메인 생성 패턴 관련해서는 책을 읽었지만 솔직히 와닿지 않는다. 예를 들면 이 책에서는 "과금 결제"를 "ss.customer.billing.payment"로 되어있는데, 만약 자동결제 혹은 정기결제가
있다면 이건 "ss.customer.billing.auto.pay" 이런 식이 될 것이고, b2c를 하는 회사라면 거의 대부분의 것이 customer 하위에 있을 것이다(최근 결제 수단, 적립, 포인트 충전, 영수증
발급 등등).
컴포넌트 도메인 생성 패턴 관련해서는 책을 읽었지만 솔직히 와닿지 않는다. 예를 들면 이 책에서는 "과금 결제"를 "ss.customer.billing.payment"로 되어있는데, 만약 자동결제 혹은 정기결제가
있다면 이건 "ss.customer.billing.auto.pay" 이런 식이 될 것이고, B2C를 하는 회사라면 거의 대부분의 것이 customer 하위에 있을 것이다(최근 결제 수단, 적립, 포인트 충전, 영수증
발급 등등).

Comment on lines +45 to +46
- 나는 새로운 app을 서버에 띄우고, 해당 테이블에 관련된 api를 만들어서 기존 모놀리식에서 해당 테이블을 보는 것이 아니라 신규 api를 보고 기존 모놀리식 코드에서 해당 테이블 보는 코드가 완전 없어졌다면,
따로 DB를 분리하는 식이 더 좋지 않을까 라는 생각이 든다.
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
- 나는 새로운 app을 서버에 띄우고, 해당 테이블에 관련된 api를 만들어서 기존 모놀리식에서 해당 테이블을 보는 것이 아니라 신규 api를 보고 기존 모놀리식 코드에서 해당 테이블 보는 코드가 완전 없어졌다면,
따로 DB를 분리하는 식이 더 좋지 않을까 라는 생각이 든다.
- 나는 새로운 app을 서버에 띄우고, 해당 테이블에 관련된 api를 만든다. 기존 모놀리식에서는 해당 테이블을 직접 보는 대신 신규 api를 호출하도록 변경하고, 테이블을 직접 참조하는 코드가 완전히 사라졌을 때 따로 DB를 분리하는 식이 더 좋지 않을까 라는 생각이 든다.

Comment on lines +55 to +56
분해를 하다보면 리팩토링 해야할 것이 보이고, 리팩토링은 욕심이 문제다. 리팩토링을 하다보면 고치고 싶은 것이 눈에 계속 보이고, 그것들 중 적당량만 수정한 후, 배포하는 식으로 하며 오류를 잡아야한다. 욕심이 생겨서 계속 수정을 하며 한번에 배포하는 순간,
장애는 시작된다. 누군가는 잦은 배포가 잦은 장애를 만든다고 하지만, 난 그렇게 잘게 쪼개서 나가는 것이 경험상 더 안정적이라 생각한다. No newline at end of file
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
분해를 하다보면 리팩토링 해야할 것이 보이고, 리팩토링은 욕심이 문제다. 리팩토링을 하다보면 고치고 싶은 것이 눈에 계속 보이고, 그것들 중 적당량만 수정한 후, 배포하는 식으로 하며 오류를 잡아야한다. 욕심이 생겨서 계속 수정을 하며 한번에 배포하는 순간,
장애는 시작된다. 누군가는 잦은 배포가 잦은 장애를 만든다고 하지만, 그렇게 잘게 쪼개서 나가는 것이 경험상 더 안정적이라 생각한다.
분해를 하다 보면 리팩토링 해야 할 것이 보이고, 리팩토링은 욕심이 문제다. 리팩토링을 하다 보면 고치고 싶은 것이 눈에 계속 보이고, 그것들 중 적당량만 수정한 후, 배포하는 식으로 하며 오류를 잡아야 한다. 욕심이 생겨서 계속 수정을 하며 한 번에 배포하는 순간,
장애는 시작된다. 누군가는 잦은 배포가 잦은 장애를 만든다고 하지만, 나는 그렇게 잘게 쪼개서 나가는 것이 경험상 더 안정적이라고 생각한다.

Comment on lines +41 to +46
### 논의사항

1. 결국 DB 분리까지 하는 MSA가 목표라면 굳이 이렇게 나눠야하는가? api 단위로 새로 app 띄우는게 빠르지 않을까?

- 나는 새로운 app을 서버에 띄우고, 해당 테이블에 관련된 api를 만들어서 기존 모놀리식에서 해당 테이블을 보는 것이 아니라 신규 api를 보고 기존 모놀리식 코드에서 해당 테이블 보는 코드가 완전 없어졌다면,
따로 DB를 분리하는 식이 더 좋지 않을까 라는 생각이 든다.
Copy link
Collaborator

Choose a reason for hiding this comment

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

제 생각에도 책의 주장이 조금 과하다고 생각이 들었습니다. 말씀주신 방법도 상황에 따라 다르겠지만, 하나의 방법이 될 수 있을거 같네요 👍🏻 (답변주신 내용은 일종의 스트랭글러 패턴 같은 느낌이네요)

Copy link
Member

@jongfeel jongfeel left a comment

Choose a reason for hiding this comment

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

👍

Comment on lines +45 to +46
- 나는 새로운 app을 서버에 띄우고, 해당 테이블에 관련된 api를 만들어서 기존 모놀리식에서 해당 테이블을 보는 것이 아니라 신규 api를 보고 기존 모놀리식 코드에서 해당 테이블 보는 코드가 완전 없어졌다면,
따로 DB를 분리하는 식이 더 좋지 않을까 라는 생각이 든다.
Copy link
Member

Choose a reason for hiding this comment

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

방법 자체는 근주님의 방법도 합리적이긴 한데, 그럴 시간이 얼마나 주어지는지는 다른 문제일 것 같긴 합니다.


### 정리

컴포넌트를 어떻게 잘 전략적으로 나눌 것인가에 대한 내용이다. 정답은 없지만 감보다는 전략적으로 분석하여 나누라는 것이 요지인것으로 보인다.
Copy link
Contributor

Choose a reason for hiding this comment

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

절대적인것은 없지만 경험에서 오는 차이는 있지않을까 하는 생각이 듭니다.같습니다. 주니어급 개발자 여럿이 전략적인부분을 RnD 하여 나누는 것 보단 경험이 많은 팀장급 개발자가 감은 아니지만 직관적으로 나누는 구간을 더 잘 알지 않을까? 생각이 듭니다.

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.

5 participants