분산 시스템 & 아키텍처 학습 프로젝트
📚 분산 시스템 & 아키텍처 학습 프로젝트
🎯 프로젝트 개요
이 프로젝트는 분산 시스템과 데이터 중심 아키텍처에 대한 심도 있는 학습을 위해 만들어졌습니다. 책을 읽고 실습하면서 발생하는 질문들을 정리하고, 개념을 명확히 이해하기 위한 질의응답 공간입니다.
📖 학습 자료
메인 교재
- 데이터 중심 애플리케이션 설계 (Designing Data-Intensive Applications)
- 저자: Martin Kleppmann
- 분산 시스템의 핵심 개념과 설계 원칙
보조 교재
- 카프카 커넥트
- 실시간 데이터 파이프라인 구축
- 30가지 패턴으로 배우는 분산 시스템
- 실전 패턴 학습
🎓 학습 주제
Week 1-2: 기초 개념
- 신뢰성, 확장성, 유지보수성
- 데이터 모델 (관계형 vs NoSQL)
- 저장소와 검색 (B-Tree, LSM-Tree)
- 부호화와 스키마 진화
Week 4-5: 분산 시스템 핵심
- 복제 (Replication)
- 파티셔닝 (Partitioning)
- 트랜잭션 (ACID vs BASE)
Week 6-7: 고급 주제
- 분산 시스템의 문제점
- 일관성과 합의 알고리즘
- 배치 처리
Week 8: 스트림 & 정리
- 스트림 처리
- 이벤트 소싱, CQRS
- 전체 복습 및 실무 적용
💬 질의 유형
이 프로젝트에서 다루는 질문들:
1. 개념 이해
Q: "Eventual Consistency와 Strong Consistency의 실제 차이가 뭔가요?"
Q: "CAP 정리에서 P(Partition Tolerance)를 포기할 수 없는 이유는?"
2. 실무 적용
Q: "우리 서비스에 읽기 복제본을 추가하면 어떤 점을 주의해야 하나요?"
Q: "카프카 파티션 수를 어떻게 결정해야 할까요?"
3. 비교 분석
Q: "Cassandra vs MongoDB, 어떤 상황에서 각각 유리한가요?"
Q: "2PC vs Saga 패턴, 언제 뭘 써야 하나요?"
4. 트러블슈팅
Q: "Split Brain 문제가 발생했을 때 어떻게 해결하나요?"
Q: "데이터베이스 복제 지연이 심할 때 대처 방법은?"
5. 아키텍처 설계
Q: "MSA에서 트랜잭션 일관성을 어떻게 보장하나요?"
Q: "이벤트 소싱 아키텍처의 장단점을 실무 관점에서 알려주세요"
🛠️ 활용 방법
학습 중
- 책을 읽다가 이해가 안 되는 부분 질문
- 개념을 다른 말로 설명 요청
- 실습 코드 작성 시 구현 방향 논의
블로그 작성 시
- 포스트 주제 브레인스토밍
- 기술적 정확성 검증
- 예제 코드 리뷰
실무 적용 시
- 현재 시스템에 적용 가능한지 검토
- 마이그레이션 전략 논의
- 트레이드오프 분석
📌 컨텍스트 정보
현재 기술 스택
- Python, FastAPI
- PostgreSQL (pgvector)
- LangChain
- Docker, Docker Compose
관심 분야
- RAG 시스템 구축
- 분산 데이터 처리
- 이벤트 드리븐 아키텍처
- 마이크로서비스 패턴
실무 경험
- Python 백엔드 개발
- LLM 애플리케이션 구축
- 클린 아키텍처, 의존성 주입 패턴
🎯 학습 목표
단기 목표 (11-12월)
- 분산 시스템 핵심 개념 이해
- 데이터베이스 내부 동작 원리 파악
- 실무에 적용 가능한 패턴 습득
- 블로그 포스트 12-14개 작성
📝 문서 작성 가이드
이 스터디의 각 문서는 다음 형식을 따릅니다:
---
layout: post
title: "문서 제목"
excerpt: "간단한 설명"
date: YYYY-MM-DD
categories: [Study]
tags: [distributed-systems, 관련-태그]
---
# 주제
## 질문
실제 궁금했던 질문
## 답변
개념 설명 및 예제
## 실무 적용
실제 프로젝트에 어떻게 적용할 수 있는지
## 참고 자료
- 책 페이지
- 관련 링크
📂 디렉토리 구조
distributed-systems/
├── README.md (이 파일)
├── week1-2/ # 기초 개념
├── week4-5/ # 분산 시스템 핵심
├── week6-7/ # 고급 주제
└── week8/ # 스트림 & 정리