분류 전체보기 610

[마이크로서비스 아키텍처 구축] 1. 마이크로서비스란?

샘 뉴먼 님의 "마이크로서비스 아키텍처 구축" 책을 정리한 포스팅 입니다. 1. 마이크로서비스 살펴보기마이크로서비스란?도메인과 관련된 모든 요소를 하나의 모듈로 캡슐화한 아키텍쳐 스타일적용 범위설명주의사항도메인비즈니스 도메인별로 기능을 나누어 서비스 경계 설정 네트워크REST API, gRPC, 메시지 큐 등을 통한 통신만 허용내부 로직·DB 직접 접근 ❌데이터베이스각 서비스가 자체 데이터베이스를 소유공유 데이터베이스 사용 ❌ 효과효과설명특징정보 은닉외부 인터페이스를 통해 최소한만 노출가능한 많은 내부 정보를 구성요소에 감춤변경 격리내부 변경이 외부에 전파되지 않도록 하여 영향 범위를 최소화 경계 명확화변경이 쉬운 부분과 어려운 부분을 명확히 구분- 변경이 쉬운 부분: 내부 구현- 변경이 어려운 부분: ..

Code/MSA 2025.08.08

[MongoDB] MongoDB Replication

1. How does replication work in MongoDB?복제데이터를 여러 복제본으로 만들어서 물리적으로 분리된 서버들에 보관하는 것 Replica Set하나의 Primary 노드 (쓰기 연산)여러 Secondary 노드 (읽기 연산) ElectionPrimary 노드가 다운되면, 선거를 통해 Secondary 노드 중 하나가 새로운 Primary 노드로 승격됨장애 났던 Primary 노드가 복구 되면, Secondary 노드로 복귀 및 동기화를 수행함 2. How do I enable replication in MongoDB사전 준비서버 3대 이상 필요각 서버는 기본 포트(27017)로 통신 가능해야 함private ip로 서로 통신 가능해야 함 (외부 접근 차단) 복제 시작mongod ..

Database/MongoDB 2025.08.05

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 12. 채팅 시스템 설계

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 1. 요구 사항핵심 기능항목설명1:1 채팅빠른 메시지 송수신그룹 채팅최대 100명사용자 접속 상태 표시상태 표시 (온라인 여부 등)다양한 단말 지원하나의 계정으로 여러 기기 동시 접속 가능푸시 알림실시간 알림 지원메시지 형태텍스트 메시지만 지원메시지 최대 길이최대 100,000자채팅 이력 보존영구 보관종단 간 암호화 (E2EE)불필요 (시간 여유 시 고려 가능) 플랫폼 및 접근 방식항목설명플랫폼모바일 및 웹 모두 지원접속 유형하나의 계정으로 여러 단말에서 동시 접속 허용 시스템 규모 및 성능 요건항목설명일일 능동 사용자 수 (DAU)약 5천만 명응답 지연 (latency)낮아야 함 (실시간 응답 수준 추정)..

Code 2025.08.03

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 10. 알림 시스템 설계

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 1. 요구 사항항목내용알림 종류모바일 푸시, SMS, 이메일전송 대상 기기iOS, Android, PC/Laptop전송 타이밍- 실시간 (Soft real-time)- 지연 허용: 수 초~수십 초알림 생성 주체클라이언트 앱 or 서버 스케줄러Opt-out 지원개별 사용자 알림 수신 설정 가능일일 전송량 규모 - Push: 1천만 - SMS: 100만 - Email: 500만 확장성 수준고부하 지원 필요 (스케일 아웃 가능 구조 요구됨) 2. 개략적 설계안알림 유형별 지원 방안알림 유형주요 구성 요소동작 과정 / 설명iOS 푸시 알림- 알림 제공자- APNS (Apple Push Notification Se..

Code 2025.08.02

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 6. 키-값 저장소 설계

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 1. 문제 이해요구 조건항목요구 사항 내용값 크기 제한1쌍(Key-Value) ≤ 10KBHigh Availability장애 상황에서도 빠르게 응답해야 함Low Latency빠른 응답 속도 보장 필요Scalability트래픽 변화에 따라 서버 자동 증설/축소 가능Consistency 조정 가능사용자가 요구하는 대로 일관성 수준 선택 가능 2. 분산 키-값 저장소키-값 쌍을 여러 서버에 분산시킴 CAP 정리분산 시스템에서는 Consistency - Availability - Patition Tolerance 모두를 만족하지 못함개념설명Consistency (일관성)모든 노드에서 항상 같은 데이터를 반환해야 함..

Code 2025.08.02

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2. 개략적인 규모 추정

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다. 0. 개략적인 규모 추정설계가 요구사항에 대략적으로 부합하는지 판단시스템 설계자는 추정 능력 및 단위 감각이 필수 1. 2의 제곱수축약형지수 (2^x)설명1KB2¹⁰1,024 바이트1MB2²⁰1,024KB = 약 10⁶ 바이트 (100만)1GB2³⁰1,024MB = 약 10⁹ 바이트 (10억)1TB2⁴⁰1,024GB = 약 10¹² 바이트 (1조)1PB2⁵⁰1,024TB = 약 10¹⁵ 바이트 (1000조)1바이트: 일반적으로 ASCII 문자 하나를 저장할 수 있음 2. 응답지연 값연산 항목설명응답 지연 시간L1 캐시 참조CPU에 매우 가까운 저장소0.5ns분기 예측 오류 (Branch Mispredict)..

Code 2025.08.01

[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 1. 사용자 수에 따른 규모 확장성

알렉스 쉬 님의 "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 책을 정리한 포스팅 입니다.1. 단일 서버가장 단순한 구조서버 한 대에 모두 탑재→ 웹 서버, 애플리케이션 서버, 데이터베이스, 캐시 요청 처리 흐름접속 시도사용자는 도메인 이름으로 사이트 접속.DNS를 통해 도메인을 IP 주소로 변환 (컴퓨터는 도메인 이름을 인식하지 못함)HTTP 요청 전송변환된 IP 주소로 HTTP 요청 전송서버 응답서버는 HTML 또는 JSON 형태로 응답함. 2. 데이터베이스서버 확장의 필요성사용자 수가 늘어나면서 서버 한대로는 감당이 불가해짐서버의 역할을 분리하여 독립적으로 확장애플리케이션 서버: 트래픽 처리데이터베이스 서버: 데이터 관리 데이터베이스 종류항목관계형 데이터베이스 (RDBMS)비관계형 데이터베이..

Code 2025.07.31

[Spring Security] 8-2. OAuth 2.0 Resource Server: JWT

1. Minimal Dependencies for JWT의존성 모듈역할spring-security-oauth2-resource-server리소스 서버 기본 기능spring-security-oauth2-joseJWT 디코딩 및 서명 검증 기능 2. Minimal Configuration for JWTsissuer-uriAuthorization Server의 메타데이터 엔드포인트를 자동으로 탐색 (.well-known/oauth-authorization-server/issuer)public key 및 검증 설정을 구성함 (jwks_uri)동작 내용설명issuer-uri로 metadata endpoint 요청issuer-uri 값에 따라 호출- .well-known/oauth-authorization-serv..

[Spring Security] 8-1. OAuth2 Resource Server

리소스 서버는 외부 인가 서버에 인증/인가를 위임함 (요청을 통해 인증 토큰 검증) 1. Bearer Token 인증 동작 방식인증되지 않은 요청 처리 흐름사용자: secured resource 요청 (Bearer Token 포함 ❌)AuthorizationFilter: AccessDeniedException 발생 (인증 ❌)ExceptionTranslationFilter: AccessDeniedException 처리BearerTokenAuthenticationEntryPoint: WWW-Authentication: Bearer 응답 인증 요청 처리 흐름사용자: secured resource 요청 (Bearer Token 포함 ✅)BearerTokenAuthenticationFilterDefaultBea..

[Spring Authorization Server] 2. Core Model / Components

1. RegisteredClient인가 서버에서 등록된 클라이언트 정보를 나타내는 객체 표) 주요 속성더보기필드설명예id내부 시스템에서 고유하게 식별되는 UUID clientId외부 클라이언트가 사용하는 고유 식별자client-aclientSecret클라이언트 비밀번호. PasswordEncoder로 인코딩된 값 clientAuthenticationMethods클라이언트 인증 방식client_secret_basic private_key_jwt authorizationGrantTypes클라이언트가 사용할 수 있는 grant type 목록refresh_tokentoken_exchangeredirectUrisauthorization_code flow에서 사용할 redirect URI postLogoutRedi..