The complete system designs crash course
- 웹 작동 방식 이해: DNS를 통한 도메인 이름 IP 주소 변환, TCP/IP 및 TLS를 통한 보안 연결 설정, HTTP 프로토콜을 이용한 클라이언트-서버 통신 🌐
- REST, GraphQL, gRPC: REST는 HTTP 통신 구조화, GraphQL은 필요한 데이터만 요청, gRPC는 효율적인 이진 형식 데이터 전송 ⚡
- Stateless vs Stateful 서비스: Stateless는 확장 용이, Stateful은 특정 기능 구현이 쉽지만 복잡성 증가 💾
- 동기 vs 비동기 통신: 동기 통신은 응답 대기, 비동기 통신은 즉시 진행 후 응답 처리 ⏳
- 로드 밸런서: 트래픽 분산으로 서버 과부하 방지 (Round Robin, Least Connections, Weighted Distribution) ⚖️
- 프록시: 클라이언트와 서버 사이 보안 필터 또는 콘텐츠 가속기 역할 (Forward/Reverse Proxy) 🛡️
- CDN: 전 세계 여러 곳에 콘텐츠 복사본 저장하여 빠른 액세스 제공 🌍
- API 게이트웨이: 마이크로서비스 요청 처리, 인증, 요청 제한, 라우팅 기능 수행 🚪
- 웹 서버: HTTP 요청을 받아 웹 페이지 또는 API 응답 제공 (Nginx, Apache) 🖥️
- SQL vs NoSQL 데이터베이스: SQL은 구조화된 데이터, NoSQL은 유연한 비정형 데이터 처리 🗄️
- 인덱싱, 정규화, 비정규화: 빠른 검색 경로 생성, 데이터 중복 제거 및 무결성 향상, 읽기 속도 향상 ⚙️
- 복제, 샤딩, 파티셔닝: 데이터 복사, 분할, 분할 기준으로 데이터 분산 ✂️
- CAP 정리, PACELC: 분산 시스템에서 일관성, 가용성, 파티션 내성 중 두 가지만 보장 가능, 지연 시간 고려 💡
- 트랜잭션, 격리 수준: 데이터베이스 작업 그룹화, 트랜잭션 간 상호 작용 제어 🤝
- 데이터 모델링: 데이터 관계 및 저장 방식 설계, 확장성 고려 📐
- 캐싱: 자주 액세스하는 데이터 저장, 데이터베이스 부하 감소 (Redis, Memcached) ⏱️
- 캐시 전략: LRU, LFU, TTL을 이용한 캐시 데이터 관리 🗑️
- Write-Through vs Write-Behind 캐싱: 즉시 업데이트 vs 지연 업데이트 ✍️
- 캐시 무효화: 오래된 캐시 항목 업데이트 또는 제거 🚫
- 메시징 및 큐잉 시스템: 서비스 간 비동기 통신 (Kafka, RabbitMQ) ✉️
- 이벤트 기반 아키텍처: 이벤트 트리거를 이용한 시스템 동작 📢
- Publish-Subscribe 모델: 메시지 게시 및 구독을 통한 통신 📰
- 서비스 디스커버리: 서비스 자동 검색 🔎
- API Rate Limiting: 과도한 요청 방지 🚦
- Circuit Breaker: 서비스 실패 감지 및 요청 중단 🚧
- 재시도 로직, 멱등성: 실패한 작업 재시도, 동일 요청 반복 시 부작용 방지 🔄
- 수평 vs 수직 스케일링: 머신 추가 vs 기존 머신 업그레이드 ⬆️
- CDN, Edge 캐싱: 사용자에게 더 가까운 곳에서 데이터 제공 📍
- Reader Replica: 읽기 작업 분산 📚
- 데이터 일관성 및 가용성 균형: 네트워크 문제 시 일관성 제한 가능성 ⚖️
- 인증, 인가: 사용자 신원 확인 및 권한 확인 (OAuth, JWT, API Keys) ✅
- HTTPS, TLS: 데이터 전송 암호화 🔒
- 암호화: 저장된 데이터 보호 🛡️
- DDoS 방어, 스로틀링, Rate Limiting: 시스템 공격 방어 ⚔️
- 고가용성 및 내결함성: 시스템 장애 시에도 지속적인 운영 ⚙️
- 데이터 센터 복제, Failover 전략, Leader Election: 장애 대비 ⛑️
- Health Check, 모니터링, 알림: 시스템 문제 감지 및 대응 🚨
- URL Shortener, Rate Limiter, File Storage, Notification System 등 시스템 설계 예시 🔗
- Savala: 클라우드 네이티브 성능과 개발 경험을 제공하는 PaaS 플랫폼, Google Kubernetes Engine 기반 🚀