Skip to content

소프트웨어 아키텍처 The Hard Parts 3주차 - 최지윤#604

Open
chichoon wants to merge 4 commits intomainfrom
choon/2026-02
Open

소프트웨어 아키텍처 The Hard Parts 3주차 - 최지윤#604
chichoon wants to merge 4 commits intomainfrom
choon/2026-02

Conversation

@chichoon
Copy link
Member

@chichoon chichoon commented Feb 5, 2026

어렵네요

@github-actions
Copy link

github-actions bot commented Feb 5, 2026

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

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @chichoon, 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은 소프트웨어 아키텍처에서 운영 데이터 분리의 중요성과 구현 전략에 대한 포괄적인 학습 노트를 추가합니다. 데이터 분해 및 통합의 필요성을 다루고, 모놀리식 시스템에서 데이터를 분리하는 점진적인 마이그레이션 경로를 제시하며, 다양한 데이터베이스 유형의 특성과 선택 기준을 설명하여 아키텍트가 데이터 관리 결정을 내리는 데 필요한 지식을 제공합니다.

Highlights

  • 새로운 학습 노트 추가: 소프트웨어 아키텍처의 '운영 데이터 분리' 챕터 06에 대한 학습 노트 파일(05.md)이 새로 추가되었습니다.
  • 데이터 분해 및 통합 전략: 데이터를 분해해야 하는 이유(변경 관리, 커넥션 관리, 확장성, 내고장성 등)와 통합해야 하는 이유(데이터 관계, 트랜잭션)에 대한 상세한 설명이 포함되어 있습니다.
  • 모놀리식 데이터 분해 마이그레이션: 모놀리식 데이터베이스를 점진적으로 분해하는 과정(데이터 분석, 도메인 생성, 테이블 할당, 커넥션 분리, 스키마 이전, 독립 서버 전환)이 단계별로 정리되어 있습니다.
  • 데이터베이스 유형 선택 가이드: 데이터베이스 유형 선택 시 고려해야 할 기준(학습 용이성, 모델링 용이성, 확장성, 가용성, 일관성, 언어 지원)과 관계형, 키-값, 문서형 등 다양한 데이터베이스 유형별 특징이 요약되어 있습니다.

🧠 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/chichoon/05.md
    • Chapter 06: 운영 데이터 분리'에 대한 학습 노트가 추가되었습니다.
    • 데이터 분해 및 통합의 필요성과 고려사항이 정리되었습니다.
    • 모놀리식 데이터베이스를 분해하는 점진적인 마이그레이션 과정이 설명되었습니다.
    • 다양한 데이터베이스 유형의 특징과 선택 기준이 포함되었습니다.
Activity
  • chichoon님이 '소프트웨어 아키텍처 The Hard Parts 3주차 - 최지윤'이라는 제목으로 PR을 생성했습니다.
  • 새로운 마크다운 파일(05.md)이 추가되었습니다.
  • PR 본문에 '어렵네요'라는 코멘트를 남겨, 내용의 난이도에 대한 저자의 생각을 알 수 있습니다.
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

소프트웨어 아키텍처 6장 '운영 데이터 분리'에 대한 요약 정리를 잘 해주셨습니다. 내용이 체계적으로 정리되어 이해하기 쉽습니다. 다만, 몇 가지 표현을 더 명확하게 다듬고 용어를 일관성 있게 사용하면 문서의 완성도를 더욱 높일 수 있을 것 같습니다. 또한, 파일명이 05.md인데 내용은 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
- 여러 서비스가 하나의 데이터베이스를 공유할 경우, 장애가 해당 데이터베이스에만 발생하게
- 여러 서비스가 하나의 데이터베이스를 공유할 경우, 해당 데이터베이스에 장애가 발생하면 이를 공유하는 모든 서비스가 영향을 받게

Copy link
Member Author

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.

medium

데이터베이스 트랜잭션에 대한 설명이 약간 모호합니다. '서로 다른 테이블'이라고만 하면 같은 데이터베이스 내의 다른 테이블로 오해할 수 있습니다. 데이터베이스가 분리되었을 때의 트랜잭션 문제를 지적하는 것이므로, '서로 다른 데이터베이스'에 있는 테이블이라는 점을 명확히 하는 것이 좋겠습니다.

Suggested change
- 서로 다른 테이블에서 발생한 에러는 같은 트랜잭션으로 묶을 수 없기 때문에 데이터의 일관성과 무결성을 보장할 수 없음
- 서로 다른 데이터베이스에 걸친 작업은 단일 트랜잭션으로 묶을 수 없으므로 데이터의 일관성과 무결성을 보장하기 어려움


#### 데이터베이스 종류별 특징

- 관계형 디비
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
- 관계형 디비
- 관계형 데이터베이스

- 가용성보다 일관성 중시
- 업계 표준이라 공부할 자료가 많고 모델링도 비교적 쉽다
- 키-값 데이터베이스
- 관계형 디비보다 배우는 것은 까다로우나, 확장성과 내분할성 면에서 이점을 갖는다
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
- 관계형 디비보다 배우는 것은 까다로우나, 확장성과 내분할성 면에서 이점을 갖는다
- 관계형 데이터베이스보다 배우는 것은 까다로우나, 확장성과 내분할성 면에서 이점을 갖는다

- 데이터 흐름 방향성에 따라 복잡해지기 쉽다
- NewSQL
- 관계형 데이터베이스와 유사하여 학습이 어렵지 않음
- SQL을 지원하고, NoSQL의 확장성과 관계형 데이터베이스의 장점을 섞은 느낌
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
- SQL을 지원하고, NoSQL의 확장성과 관계형 데이터베이스의 장점을 섞은 느낌
- SQL을 지원하고, NoSQL의 확장성과 관계형 데이터베이스의 장점을 결합한 형태입니다.

@chichoon chichoon self-assigned this Feb 5, 2026
@chichoon chichoon added 2026 Software Architecture: The Hard Parts 소프트웨어 아키텍처: The Hard Parts, 분산 아키텍처를 위한 모던 트레이드오프 분석 labels Feb 5, 2026
@chichoon chichoon marked this pull request as ready for review February 5, 2026 15:00
Comment on lines +35 to +37
```
논의점: 데이터 분해인에 정말 많은 요인들이 있는데, 이것들을 고려하기 수월하게 해 주는 피트니스 함수나 유틸리티는 어떤 것이 있을까?
```
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.

👍

- 데이터 처리 방식에 따른 분리

```
논의점: 데이터 분해인에 정말 많은 요인들이 있는데, 이것들을 고려하기 수월하게 해 주는 피트니스 함수나 유틸리티는 어떤 것이 있을까?
Copy link
Member

Choose a reason for hiding this comment

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

책에서 직접적인 설명은 안해줬지만 커넥션 풀의 유휴 갯수를 체크하는 피트니스 함수가 있었기 때문에 서비스별 커넥션 사용 갯수를 뽑을 수 있지 않았을까 싶습니다.
분해인에 대해서 뭔지는 설명해 줬으니 방법은 직접 구현해서 뽑아보면 좋을 것 같습니다.

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 3, chapter 6, 7, 총 95페이지, 2026-02-06

3 participants