1.모던 애플리케이션 특징
- 고가용성 high availability을 통해 서비스가 장애 발생시에도 중단되지 않도록 설계됨
- 확장성을 갖추어 수직적/수평적 확장 가능
- 복원력을 통해 빠르게 복구 가능
- 자동화된 ci/cd pipeline과 container 기술을 통해 빠른 배포 주기와 일관된 품질 보장
- 데이터 복제, 샤딩, Failover 와 같은 분산 시스템 적극 활용됨
2.고가용성 (High Availability, HA)
Why?
서비스 다운은 매출손실, 사용자 이탈, 신뢰도 하락으로 이어짐. 무중단 서비스가 이루어져야 됨.
3.고가용성의 핵심 개념
1) Single Point of Failure (SPOF)
하나의 장애로 인해 전체 시스템이 멈추는 지점
e.g. 서버 1대로 운영하면 서버가 다운될 경우 서비스도 중단됨
2)Failover
장애 발생 시 자동으로 백업 시스템으로 전환하여 서비스 중단을 최소화하는 기술
- primary - secondary 노드 구조
- health check를 통해 주기적으로 서비스 상태 모니터링
3) Uptime
시스템이 정상적으로 운영되는 시간 비율
4.로드밸런싱 (Load Balancing)
- 여러 서버에 네트워크 트래픽을 분산하여 성능과 가용성을 최적화하는 기술
- HA환경에서 서비스 중단없이 안정적 운역하는 핵심 요소
- 무중단 서비스 제공 가능, 트래픽 급증에도 유연하게 대응 가능
- 트래픽 분산, 고가용성, 확장성
5.데이터 복제 (Replication)
데이터 복사본을 여러 서버에 분산 저장하여 장애 발생 시에도 데이터 접근이 가능하도록 함.
- 동기 복제: 데이터가 모든 복제본에 동시에 기록됨
- 장점: 데이터 일관성 보장
- 단점: 쓰기 지연 성능 저하
- e.g. 금융 시스템 등 높은 데이터 일관성이 요구되는 경우
- 비동기 복제: 일단 기본 서버에 저장 후 나중에 복제본으로 전송
- 장점: 빠른 처리 속도
- 단점: 장애시 데이터 유실 위험
- e.g 로그 수집, 분석 시스템과 같이 일관성이 덜 중요한 경우
확장성 (Scalability)
Why?
- 사용자 또는 데이터 수 증가에 대응하기위한 시스템의 유연성 확장 필수!
- 갑작스러운 트래픽 급증에도 서비스가 안정적으로 유지되어야 함
- Scale-up (하드웨어 향상)/ Scale-out (서버 추가) 확장을 통해 대응 가능
6.샤딩 기법 (Sharding)
대규모 데이터를 여러 서버에 분산 저장하여 데이터 처리 능력 향상시키는 기술
- 수평 샤딩
- 데이터를 레코드 단위로 나누어 여러 디비에 저장
- e.g. userId 를 기준으로 분산 저장
- 수직 샤딩
- 디비 테이블을 기능별로 분리
- e.g. 사용자 정보는 A db에 저장, 주문 정보는 B db 에 저장
7.복원력 (Resilience)
시스템 장애 등 예기치 않은 상황에서도 서비스를 중단하지 않고 빠르게 복구할 수 있는 능력
reseilience 를 강화하면?
- 장애 대응 능력, 복구 속도, 서비스 신뢰도 향상
- 장애 발생 시 빠르게 복구
핵심 패턴
- CircuitBreaker pattern
- 외부 서비스에 문제가 발생할 경우, 장애가 전파되지 않도록 차단
- closed: 정상 상태, 모든 요청 허용
- open: 장애 상태, 요청 차단
- half-open: 일부 요청만 허용 후, 상태 테스트 후 복구 여부 확인
- Graceful Degradation (점진적 성능 저하)
- 시스템 일부 장애가 발생하더라도 핵심 기능은 유지하되 비핵심 기능은 제한하거나 비활성화
- Netflix: 개인화 추천 기능 장애발생해도 기본 콘텐츠 목록 제공
- Amazon: 추천 서비스 오류에도 상품 검색 및 결제 기능 정상 유지
8.데이터 일관성 및 신뢰성 (Consistency & Reliability)
1.데이터 일관성의 필요성
데이터 일관성은 분산 시스템에서 모든 데이터가 동일한 상태로 유지되도록 보장한다.
DB, 분산 캐시, 파일 시스템 등 데이터가 항상 일관된 상태를 유지하도록 하는 것을 의미한다.
2.데이터 일관성을 위한 핵심 기술
1.데이터를 복제: 여러 서버에 데이터를 분산 저장하여 고가용성과 데이터 손실 방지한다.
2.샤딩 (Sharding)
3.Failover (장애 자동 전환)
- active - passive : active 서버가 죽으면 passive 서버로 전환
- active - active
9.CAP 이론 (Consistency, Avaliability, Partition Tolerance) - 일관성/가용성/분할 내성
CAP 이론이란 분산 시스템에서 일관성, 가용성, 분할 내성 중 2가지 특성을 동시에 만족 가능하고, 나머지 하나는 일부 포기해야 한다는 이론.
- consistency: 모든 노드가 동일한 데이터를 즉시 반영하도록 보장
- availability: 모든 요청에 실패하지 않고 응답 제공
- partion tolerance: 네트워크가 분할되더라도 시스템이 지속적으로 운영 가능해야 함.
e.g NoSQL 데이터베이스의 복제 및 데이터 분산 아키텍처 활용
10.데이터 일관성 및 신뢰성 사례
MongoDB Replica Set
- 하나의 primary node - 여러 개의 secondary node로 구성됨
- 자동 failover
- primary server 에 장애가 발생하면 새로운 primary 선출
- 무중단 서비스 제공
- 일관성 옵션
11.복원력과 CI/CD
CI/CD
why?
- 배포 과정에서 오류를 줄이고, 더 빠르고 안정적인 배포를 위한 자동화 필요
- 빠르 개발 주기
- 기능 배포 후 빠르게 피드백을 받아 개선 가능
- 코드 작성 -> 테스트 -> 배포 전 과정 자동화
=> 개발 효율성 및 서비스 품질 높임
CI/CD 개념
- CI (Continuous Integration): 코드를 지속적으로 통합하고, 자동화된 테스트를 통해 품질 보장
- CD (Continuous Deployment): 코드를 자동으로 배포
CI/CD 주요도구
git: code version 관리 도구
Jenkins: ci/cd 파이프라인 도구
github actions: github 저장소와 통합된 ci/cd 도구
docker: 애플리케이션을 컨테이너로 패키징하여 일관된 환경 제공
kubernetes: 컨테이너 오케스트레이션 도구, 대규모 배포 자동화 지원
prometheus & grafana: 모니터링 및 시각화 도구
CI/CD 활용 전량
- 블루/그린 배포
- 2개의 production 환경 운영, 블루 환경에 배포하고 문제 없으면 트래픽 전환
- 장애 발생 시 그린 환경(이전 환경)으로 롤백 가능
- 카나리 배포
- 배포전 일부 사용자에게 먼저 배포하여 테스트
- 장점: 작은 범위에서 장애 감지 후 빠르게 대응 가능
- 자동화된 롤백
- 배포 후 모니터링 도구를 통해 서비스 상태 확인, 문제 발생하면 자동으로 이전 버전으로 복구
- 장점: 인적 개입없이 빠른 장애 복구 가능
- 모니터링 및 관찰성 통합
- prometheus, grafana 와 같은 모니터링 도구를 통합하여 배포 후 시스템 상태를 실시간으로 추적
- 장점: 배포 후 발생하는 문제 즉각적으로 대응 가능
'스터디 > Cloud & k8s' 카테고리의 다른 글
[쿠버네티스 스터디.1-3] CI/CD, Docker, Container (0) | 2025.03.27 |
---|---|
[쿠버네티스 스터디.1-1] 모던 애플리케이션의 특징 (0) | 2025.03.23 |
[k8s] Container 환경에서 JVM GC (Garbage Collection) 확인하기 (0) | 2023.08.25 |
[k8s] Helm과 Chart 란? (쿠버네티스 패키지 매니저) (0) | 2022.11.01 |
[k8s] 컨테이너 실행 명령어 종류 (1) | 2022.10.28 |
댓글