20 System Design Concepts You Must Know - Final Part
- 마이크로서비스는 애플리케이션을 작고 독립적인 서비스들의 집합으로 구성하여 유연성과 확장성을 높이지만, 분산 시스템의 복잡성 증가로 정교한 모니터링과 에러 처리가 필수적입니다. 🧩
- 인증(Authentication)은 토큰 기반으로 사용자 신원을 확인하고, 권한 부여(Authorization)는 역할 또는 속성 기반으로 시스템 리소스 접근을 제어하여 분산 시스템 전반의 일관된 보안을 유지합니다. 🔑
- 서비스 디스커버리는 동적인 클라우드 환경에서 서비스들이 서로의 위치를 찾아 통신할 수 있도록 돕는 핵심 메커니즘으로, 시스템의 탄력성과 적응성을 보장하지만, 레지스트리 자체의 가용성 및 장애 처리가 중요합니다. 🗺️
- API 게이트웨이는 클라이언트 요청의 단일 진입점 역할을 하며, 라우팅, 보안, 인증, 속도 제한 등 공통 기능을 중앙 집중화하여 백엔드 서비스의 복잡성을 추상화하고 시스템 진화를 용이하게 하지만, 병목 현상 방지를 위해 고가용성과 성능이 요구됩니다. 🚪
- 메시지 큐는 시스템 구성 요소 간의 비동기 통신을 가능하게 하여 시간적 결합도를 낮추고, 다양한 메시지 전달 보장(최대 한 번, 최소 한 번, 정확히 한 번)을 제공하지만, 분산 환경에서의 장애 처리 및 데이터 일관성 유지에 복잡성을 더합니다. ✉️
- 웹소켓은 HTTP의 요청-응답 한계를 넘어 클라이언트와 서버 간의 실시간 양방향 통신을 위한 영구적인 연결을 제공하여 지연 시간을 줄이고 서버 부하를 경감하지만, 상태 유지 연결로 인한 운영 복잡성과 견고한 재연결 로직이 필요합니다. ⚡
데브허브 | DEVHUB | 20 System Design Concepts You Must Know - Final Part