돌돌콩님 유튜브 이거 모두 보셨으면
01:38 우리는 왜 배움 중독", "정보 중독"에 빠지는가
05:15 가장 효과적인 방법"에 대한 집착
09:18 방법만 알아보고 정작 행동은 하지 않는다면
14:20 실패를 두려워하지 않고, 실패로부터 배우려면
youtu.be/Em4Jr-oPXaI?si…
꼭 알아야 할 시스템 디자인 개념ㅣ260222
1. 로드 밸런싱(Load Balancing)이란 들어오는 네트워크 트래픽을 여러 서버에 골고루 분산시키는 기술임. 특정 서버 한 대에 요청이 몰리면 과부하가 걸리고 서비스가 느려지거나 다운될 수 있는데, 로드 밸런서가 중간에서 이를 분산해줌으로써 서비스의 안정성과 가용성을 높여줌. 쉽게 말해 음식점 입구에서 손님을 빈 테이블로 안내하는 직원과 같은 역할임.
2. 캐싱(Caching)은 자주 요청되는 데이터를 메모리(RAM 등 빠른 저장소)에 미리 올려두어, 매번 느린 데이터베이스를 뒤지지 않고 즉시 응답할 수 있게 해주는 기법임. 캐시는 브라우저, CDN, 로드 밸런서, 서비스 내부, Redis 같은 분산 캐시, 데이터베이스까지 시스템의 모든 계층에 존재하며, 각 레이어마다 속도와 비용의 트레이드오프가 있음.
3. 데이터베이스 샤딩(Database Sharding)은 하나의 거대한 데이터베이스를 여러 조각(샤드)으로 나누어 각기 다른 서버에 분산 저장하는 방식임. 데이터가 수십억 건을 넘어서면 단일 DB로는 처리 한계에 부딪히게 되는데, 샤딩을 통해 각 서버가 일부 데이터만 담당하게 하여 대규모 데이터 성장에 대응할 수 있음.
4. 복제(Replication)는 동일한 데이터를 여러 서버(레플리카)에 복사해두는 것임. 주 서버(Primary)가 장애를 일으켜도 복제본(Replica)이 즉시 서비스를 이어받아 가용성과 장애 내구성을 보장하며, 읽기 요청을 여러 레플리카에 분산시켜 성능을 높이는 용도로도 활용됨.
5. CAP 정리(CAP Theorem)는 분산 시스템에서 일관성(Consistency), 가용성(Availability), 파티션 허용성(Partition Tolerance) 세 가지 속성을 동시에 완벽하게 만족하는 것은 불가능하다는 이론임. 실제 설계 시에는 네트워크 장애가 불가피하므로 파티션 허용성은 포기할 수 없고, 결국 일관성과 가용성 중 하나를 우선할 것인지 선택해야 하는 핵심 트레이드오프임.
6. 일관 해싱(Consistent Hashing)은 서버가 추가되거나 제거될 때 데이터를 최소한으로 재배치하면서 부하를 균등하게 분산하는 알고리즘임. 일반 해싱은 서버 수가 바뀔 때마다 거의 모든 데이터를 재배치해야 하는 반면, 일관 해싱은 변경된 서버 구간의 데이터만 이동하면 되므로 동적 환경에서 매우 효율적임.
7. 메시지 큐(Message Queues)는 서비스 간에 데이터를 직접 주고받지 않고, 중간 버퍼(큐)에 메시지를 넣어두면 소비자 서비스가 자신의 속도에 맞춰 꺼내 처리하는 비동기 아키텍처임. Kafka 같은 메시지 브로커가 대표적이며, 서비스 간 결합도를 낮추고 한 서비스가 다운되어도 메시지가 유실되지 않아 시스템 전체의 탄력성이 높아짐.
8. 속도 제한(Rate Limiting)은 특정 사용자나 IP가 정해진 시간 안에 보낼 수 있는 요청 횟수에 상한을 두는 기술임. 이를 통해 DDoS 공격, 스크래핑, 악의적인 봇 트래픽으로부터 시스템을 보호하고, 정상 사용자에게도 공정한 서비스 품질을 유지할 수 있음. API 게이트웨이 단에서 요청이 한도를 초과하면 즉시 거부됨.
9. API 게이트웨이(API Gateway)는 클라이언트의 모든 요청이 내부 마이크로서비스에 직접 닿기 전에 반드시 거치는 단일 진입점(Single Entry Point)임. 요청 파싱 및 유효성 검사, 화이트리스트/블랙리스트 확인, 인증·인가, 속도 제한, 경로 매칭을 통한 라우팅, 프로토콜 변환, 회로 차단(Circuit Break), 로깅 및 모니터링까지 다양한 역할을 한 곳에서 처리함. API 게이트웨이는 단순한 트래픽 라우터를 넘어 인증·버전 관리·분석까지 포함하는 완전한 API 관리 플랫폼으로 진화했음.
10. 마이크로서비스(Microservices)는 거대한 단일 애플리케이션(모놀리스)을 결제, 사용자 관리, 알림 등 독립적으로 배포·확장·운영할 수 있는 작은 서비스 단위들로 분해하는 아키텍처 스타일임. 각 서비스는 느슨하게 결합되어 있어 한 서비스의 장애나 변경이 다른 서비스에 영향을 최소화하며, 서비스 규모를 개별적으로 조절할 수 있어 대형 플랫폼에서 폭발적인 트래픽 증가에 유연하게 대응할 수 있음.
인터넷 시대의 플밍 공부법은 구글링과 블로깅이었다면, AI 시대의 공부법은 "터미널 로"다.
- AI Studio에게 "만들고"(배우고) 싶은 것의 초벌구이를 요청한다.
- zip을 풀고, amp나 opencode CLI를 실행한다.
- 코드 검토후 TDD 기반의 AGENTS.md를 쓰라고 한다.
(이어서)