반응형
이 내용은 "가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권"의 내용을 참고하여 읽고 정리한 내용입니다.
1. 단일 서버 구조란?
단일 서버 구조는 웹 서버, 애플리케이션 서버, 데이터베이스 등을 모두 하나의 서버에서 실행하는 방식입니다. 이 구조에서의 요청 처리 흐름은 다음과 같습니다:
- 사용자 요청: 사용자가 도메인 이름(예: www.example.com)을 통해 웹사이트에 접속합니다.
- DNS 조회: 도메인 이름 시스템(DNS)을 통해 해당 도메인 이름을 IP 주소로 변환합니다.
- HTTP 요청 전달: 변환된 IP 주소로 HTTP 요청이 전달됩니다.
- 서버 응답: 단일 서버는 요청을 처리하고, HTML 페이지나 JSON 형태의 응답을 반환합니다.
이러한 요청은 주로 웹 애플리케이션과 모바일 애플리케이션에서 발생합니다.
2. 단일 서버 구조의 장점
- 단순성: 모든 구성 요소가 하나의 서버에 통합되어 있어 관리가 용이합니다.
- 초기 비용 절감: 소규모 서비스나 스타트업의 경우, 초기 인프라 구축 비용을 최소화할 수 있습니다.
3. 단일 서버 구조의 한계
- 확장성 제한: 사용자 수가 증가함에 따라 서버의 부하가 증가하며, 단일 서버로는 이를 감당하기 어렵습니다.
- 가용성 문제: 서버에 장애가 발생하면 전체 서비스가 중단될 수 있습니다.
- 성능 병목: 데이터베이스와 애플리케이션 로직이 동일한 서버에서 실행되므로, 자원 경쟁으로 인한 성능 저하가 발생할 수 있습니다.
4. 데이터베이스 구조와 확장
- 사용자가 늘어난다면 한 대의 DB 서버로는 감당이 어렵다 (성능 저하, 과부하)
- 데이터베이스는 두 가지 목적으로 나누어야 한다:
- 트래픽 처리 용도
- 자체 데이터 저장 용도
5. 관계형(RDB) 데이터베이스
- 데이터를 테이블과 칼럼으로 구조화하고 SQL을 이용해 관계에 따라 입력/조합할 수 있다
- 대표적인 관계형 DB: Oracle, MySQL, PostgreSQL
6. 비관계형(NoSQL) 데이터베이스
- 주요 형식 4가지:
- 키-값 형 (예: Redis)
- 그래프 형 (예: Neo4j)
- 칼럼 형 (예: Cassandra)
- 문서 형 (예: MongoDB)
- 조인 연산을 지원하지 않음
✔ 비관계형 DB 선택이 적절한 상황
- 낮은 지연시간이 요구될 때
- 비정형 데이터를 다루는 경우
- JSON, XML 등의 직렬화/역직렬화만 가능하면 되는 경우
- 대용량 데이터 저장이 필요한 경우
7. 수직적 확장 vs 수평적 확장
확장 방식:
- 수직적 확장: CPU/RAM 등 고사양 자원을 추가
- 수평적 확장: 서버를 추가
비교:
- 수직 확장은 단순하지만 한계가 있고 failover나 redundancy 지원이 어려움
- 대규모 구조에선 수평 확장이 일반적
8. 로드밸런서 (Load Balancer)
- 서버에 등록된 IP에 따라 트래픽을 관리하고 분산
- 각 서버에 요청을 고르게 전달하며 자동 장애 복구 지원
☑ 핵심 포인트:
- 서버 1에 장애 발생 시 서버 2로 트래픽 자동 전환
- 트래픽 급증 시 서버를 추가하면 로드밸런서가 자동 분산
9. 데이터베이스 다중화
- 주(Master)-부(Slave) 관계 설정
- 쓰기 연산은 주 DB가 담당, 읽기 연산은 부 DB가 분산 처리
📦 효과:
- 성능 향상, 안정성 확보, 고가용성 실현
10. 캐시 (Cache)
- 자주 조회되는 데이터를 메모리에 저장해 빠르게 응답
- DB 부하 감소로 성능 개선
- 대표적인 시스템: Memcached, Redis
11. CDN (Content Delivery Network)
- 전 세계에 분산된 서버에 정적 콘텐츠를 저장
- 사용자와 가까운 서버에서 콘텐츠 제공 → 빠른 응답
- JS, CSS, 이미지 등 정적 리소스 전달 최적화
12. 무상태 Stateless 서버
- 사용자 세션 정보 등 상태를 웹 서버에 저장하지 않음
- 상태 정보는 Redis, NoSQL 등 공유 저장소에 보관
- 서버 증설/제거 자유로워 자동 확장이 쉬움
13. 데이터 센터 구성 전략
- 지역별로 데이터 센터 설치
- geoDNS를 통해 사용자 위치 기반 라우팅 가능
14. 메시지 큐 (Message Queue)
- 비동기 통신과 메시지 버퍼 역할 수행
- 생산자-소비자 모델 기반, 서비스 간 결합도 낮춤
- 대표적인 사용 예: 이미지 처리 등 비동기 작업 처리
15. 로그, 메트릭, 자동화
- 로그: 시스템 오류 및 흐름 파악 가능
- 메트릭: CPU, DB, Cache 등 각 계층 성능 측정
- 자동화: 테스트-빌드-배포까지 연계된 자동화 도구 필수
📌 최종 정리
- 무상태 웹 서버 구조 도입
- 모든 계층에 다중화 적용
- 가능한 데이터를 캐시에 저장해 성능 향상
- 정적 리소스는 CDN으로 제공
- 데이터 계층은 샤딩 등으로 수평 확장
- 메시지 큐 등으로 서비스 간 결합도 최소화
- 전체 시스템은 모니터링 및 자동화 도구로 지속 관리
현재 항목과 구조는 복잡하지만, 사용자 수가 늘어날수록 이러한 설계 전략을 적용하면 시스템 성능과 안정성을 유지하며 확장해 나갈 수 있다.
반응형
'Study > 대규모 시스템 설계 기초' 카테고리의 다른 글
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권] 4장 - 처리율 제한 장치의 설계 (0) | 2025.04.08 |
---|---|
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권] 3장 - 시스템 설계 면접 공략법 (0) | 2025.04.06 |
[가상 면접 사례로 배우는 대규모 시스템 설계 기초 1권] 2장 - 개략적인 규모 측정 (0) | 2025.04.06 |