분산 시스템 & 아키텍처 학습 프로젝트

📚 분산 시스템 & 아키텍처 학습 프로젝트

🎯 프로젝트 개요

이 프로젝트는 분산 시스템과 데이터 중심 아키텍처에 대한 심도 있는 학습을 위해 만들어졌습니다. 책을 읽고 실습하면서 발생하는 질문들을 정리하고, 개념을 명확히 이해하기 위한 질의응답 공간입니다.

📖 학습 자료

메인 교재

  • 데이터 중심 애플리케이션 설계 (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: "이벤트 소싱 아키텍처의 장단점을 실무 관점에서 알려주세요"

🛠️ 활용 방법

학습 중

  1. 책을 읽다가 이해가 안 되는 부분 질문
  2. 개념을 다른 말로 설명 요청
  3. 실습 코드 작성 시 구현 방향 논의

블로그 작성 시

  1. 포스트 주제 브레인스토밍
  2. 기술적 정확성 검증
  3. 예제 코드 리뷰

실무 적용 시

  1. 현재 시스템에 적용 가능한지 검토
  2. 마이그레이션 전략 논의
  3. 트레이드오프 분석

📌 컨텍스트 정보

현재 기술 스택

  • 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/        # 스트림 & 정리