Skip to content

Conversation

@ymkim97
Copy link
Member

@ymkim97 ymkim97 commented Jan 22, 2026

No description provided.

@ymkim97 ymkim97 self-assigned this Jan 22, 2026
@ymkim97 ymkim97 added 2026 Software Architecture: The Hard Parts 소프트웨어 아키텍처: The Hard Parts, 분산 아키텍처를 위한 모던 트레이드오프 분석 labels Jan 22, 2026
@github-actions
Copy link

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

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @ymkim97, 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

  • 아키텍처 분해 전략 소개: 모놀리식 애플리케이션을 분해하는 두 가지 주요 전략인 '컴포넌트 기반 분해'와 '전술적 분기'를 소개하고, 각 전략의 적용 가능성에 대해 설명합니다.
  • 컴포넌트 기반 분해 패턴 상세 설명: 모놀리식 아키텍처를 분산 아키텍처로 점진적으로 마이그레이션하기 위한 6가지 핵심 컴포넌트 기반 분해 패턴(컴포넌트 식별 및 사이징, 공통 도메인 컴포넌트 수집, 컴포넌트 눌러 펴기, 컴포넌트 디펜던시 결정, 컴포넌트 도메인 생성, 도메인 서비스 생성)을 자세히 다룹니다.
  • 피트니스 함수 및 AI 활용 아이디어: 관리용 피트니스 함수의 실용적인 적용에 대한 논의와 함께, CI/CD 파이프라인 내에서 AI를 적극 활용하여 피트니스 함수의 기능을 구현할 수 있다는 아이디어를 제시합니다.

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

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

소프트웨어 아키텍처 The Hard Parts 4장과 5장의 내용을 요약한 마크다운 파일을 추가하는 PR이네요. 내용 정리가 잘 되어 있어 이해하기 쉽습니다. 다만, 몇 군데 오타가 발견되어 수정을 제안합니다. 전반적으로 좋은 요약입니다.


해당 장을 읽기 전까지 간간히 언급되었던 컴포넌트를 조금이나마 더 이해할 수 있게 되었다.
여기에 도메인, 서브 도메인, 컴포넌트 간의 차이 및 관계가 어떻게 되는지도 처음으로 깨닫게 되어 정말 재밌게 읽었다.
컴포넌트 기분 분해는 코드베이스가 체계가 어느 정도 잡혀 있고 네임스페이스(디렉토리)별로 그룹핑돼 있는 모놀리식 애플리케이션을 분리할 때 매우 효과적이다.
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
컴포넌트 기분 분해는 코드베이스가 체계가 어느 정도 잡혀 있고 네임스페이스(디렉토리)별로 그룹핑돼 있는 모놀리식 애플리케이션을 분리할 때 매우 효과적이다.
컴포넌트 기반 분해는 코드베이스가 체계가 어느 정도 잡혀 있고 네임스페이스(디렉토리)별로 그룹핑돼 있는 모놀리식 애플리케이션을 분리할 때 매우 효과적이다.

결국 피트니스 함수는 CI/CD 파이프라인에 포함되므로, AI plugin 등도 함께 추가할 수 있지 않을지 아이디어가 떠올랐다.

이전에는 모놀리식 아키텍처를 분산 아키텍처로의 마이그레이션 과정을 상상해보거나 감을 잡기 어려웠다.
그러나 이번 장을 통해서 마이그레이션은 그냥 감으로 진행하는 것이 아니라, 구조적으로, 점진적으로, 통제 가능한 방향으로 해야하 한다는 것을 알게 되었고, 컴포넌트 기반 분해 패턴이 핵심 요령이라는 것을 배웠다. 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 +4 to +5
## 논의 내용
* 책에서 나오는 단계처럼 [컴포넌트 도메인을 생성]하고 [도메인 서비스를 생성]한 이후에는 특정 도메인 서비스가 너무 크다고 느껴지는 각자의 기준이 무엇인지 논의해보고 싶습니다. 즉 해당 서비스가 다시 "미니 모놀리스(Mini-monolith)"가 되어가는 것은 아닌지 미리 판단할 수 있는 신호는 무엇일까요?
Copy link
Collaborator

Choose a reason for hiding this comment

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

즉 해당 서비스가 다시 "미니 모놀리스(Mini-monolith)"가 되어가는 것은 아닌지 미리 판단할 수 있는 신호는 무엇일까요?

새로운 도메인 개발 요구사항이 들어왔을 때, 처음에 의도한 MS의 책임 범위 보다, 더 많은 기능구현을 해야해서, 책임이 크기가 커질 수밖에 없는 상황에서 MS를 만들것인지 책임의 범위를 넓힐것인지를 고민하는 시기가 미니 모놀리스가 되어가는 것은 아닌지 판단할 수 있는 신호 일거 같습니다


저는 기존에 업계에 퍼져있는 MSA는 선이고, 모놀리스는 악이다 라는 관점으로 보는 것은 적절치 않다고 보는 편 입니다. 상황에 따라서 적절한 해결책이 있을뿐이라고 생각합니다

미니 모놀리스가 되어간다라고 하는게, MSA 관점에서는 나쁜신호로 볼 수 있지만, 회사의 사정에 따라서는 그 상황에서 최선의 선택일 수도 있기 때문입니다.

인원이 넉넉한 큰 회사라면, 새로운 도메인 요구사항을 충족하는 새 MS 를 만드는 선택을 함으로써, 미니 모놀리스가 되지 않도록 조치할 수 있을거 같고, 새롭게 만들어지는 MS를 관리할 팀의 인원 새로 채용하거나, 팀을 구성하면 되기 때문에, 관리 측면에서 이점이 있을거 같습니다

반면에 인원이 넉넉치 않은 작은 회사의 경우에는 같은 상황에서, MS를 추가로 만드는 선택 대신에, 기존에 존재하는 MS 중에서 젤 적합한 MS를 찾아서, 그 MS가 책임을 가지도록 하는 식으로 하지 않을까 생각되는데요. MS로 과하게 분리했을 때, 발생하는 코드와 인프라 유지보수성과 비용, 간단한 작업을 굳이 여러 MS에 각각 구현 해야하는 문제를 해결할 수 있는 해결책의 관점으로도 볼 수 있다고 생각합니다

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.

👍

## 4장 ~ 5장
---
## 논의 내용
* 책에서 나오는 단계처럼 [컴포넌트 도메인을 생성]하고 [도메인 서비스를 생성]한 이후에는 특정 도메인 서비스가 너무 크다고 느껴지는 각자의 기준이 무엇인지 논의해보고 싶습니다. 즉 해당 서비스가 다시 "미니 모놀리스(Mini-monolith)"가 되어가는 것은 아닌지 미리 판단할 수 있는 신호는 무엇일까요?
Copy link
Member

Choose a reason for hiding this comment

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

한가지 일을 잘 하는 서비스라면 사실 크다는 것의 기준은 소스 코드의 양 혹은 기능(API)의 갯수 정도이지 않을까 싶습니다.
여기서 한 가지 이상의 일, 다른 도메인에서 할 법한 일이 끼어들고 있는지의 여부로 판단하면 좋을 것 같네요.
하나의 서비스 단위로 잘 분리했다면 거기에 뭔가 다른 도메인의 코드를 넣는 것 역시 쉽지 않은 일이라고 보는데, 그러면 안되겠죠.

## 4장 ~ 5장
---
## 논의 내용
* 책에서 나오는 단계처럼 [컴포넌트 도메인을 생성]하고 [도메인 서비스를 생성]한 이후에는 특정 도메인 서비스가 너무 크다고 느껴지는 각자의 기준이 무엇인지 논의해보고 싶습니다. 즉 해당 서비스가 다시 "미니 모놀리스(Mini-monolith)"가 되어가는 것은 아닌지 미리 판단할 수 있는 신호는 무엇일까요?
Copy link
Member

Choose a reason for hiding this comment

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

제 기준에서는 특정 서비스 내부에 추가 기능을 개발해야 하는 때가 올때 그 시점에서의 코드의 덩치나, 추가 기능을 붙임으로써 하위 기능의 덩치가 너무 커져버린다고 느껴지면 or 해당 기능 내에서의 컴포넌트나 함수간 의존성이 지나치게 높아지면 그 하위 기능을 새로운 서비스로 빼야겠다고 느껴지는 것 같은데 이건 화면 관점에서의 내용이긴 합니다

제품 전체의 관점에서 봤을 때 하나의 서비스가 하나의 모놀리스 덩어리가 될 정도로 커질 만한 일이 흔할지는 잘 감이 안오네요 ㅡ,,ㅡ

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