오토에버 클라우드 2기 29일차
CQRS는 'Command Query Responsibility Segregation'의 약자로, 우리말로 하면 '명령(Command)과 조회(Query) 책임 분리' 디자인 패턴이다
오토에버 클라우드 2기 29일차
CQRS
CQRS는 “Command Query Responsibility Segregation”의 약자로, 우리말로 하면 “명령(Command)과 조회(Query) 책임 분리” 디자인 패턴이다
- Command (명령) 모델 (Write Model):
- 역할: 시스템의 상태를 변경하는 작업(생성, 수정, 삭제)을 처리
- 특징:
- 데이터 일관성(consistency)과 무결성(integrity)을 보장하는 데 중점을 둔다
- 복잡한 비즈니스 로직과 유효성 검증을 포함할 수 있다
- 쓰기 작업에 최적화된 데이터 저장소(예: 관계형 데이터베이스)를 사용할 수 있다
- 명령은 주로 동기적으로 처리되지만, 비동기 큐를 사용하여 처리될 수도 있다
- Query (조회) 모델 (Read Model):
- 역할: 시스템의 데이터를 조회하는 작업을 처리
- 특징:
- 데이터 조회 성능(performance)과 확장성(scalability)에 중점
- 읽기 작업에 최적화된 데이터 저장소(예: NoSQL 데이터베이스, 검색 엔진, 캐시 등)를 사용할 수 있다
- 쿼리는 데이터를 변경하지 않으며, 특정 조회 요구사항에 맞춰 최적화된 형태로 데이터를 제공
- 데이터가 비정규화(denormalized)되어 있어 복잡한 조인 없이 빠르게 데이터를 조회할 수 있다
작동 방식 1
작동 방식 2
왜 사이에 메세지 큐를 사용할까? 그냥 서버를 하나 더?
- 비동기 처리: 쓰기 서버가 이벤트를 발행하고 즉시 다음 작업을 수행할 수 있도록 하여 응답성을 높인다
- 분리(Decoupling): 쓰기 서버와 읽기 서버가 직접적으로 의존하지 않고 느슨하게 결합
- 신뢰성: 메시지 유실 없이 안정적으로 메시지를 전달하고, 컨슈머 장애 시에도 메시지를 재처리할 수 있는 기능을 제공
- 확장성: 대량의 이벤트를 처리하고, 여러 컨슈머가 동시에 이벤트를 처리할 수 있도록 확장성이 뛰어남
- 이벤트 소싱과의 시너지: 이벤트 스트림을 영구적으로 저장하여 과거 상태를 재구성하거나 새로운 읽기 모델을 쉽게 구축할 수 있다
클라우드 보안
1. 클라우드 보안의 필요성
- 도입 장점: 비용 절감, 민첩성, 확장성 등
- 보안 우려: 기존 온프레미스 수준의 보안을 클라우드에서도 구현할 수 있는지에 대한 불확실성
- 보안 사고 가능성: 클라우드 환경에서도 정보 유출 및 해킹 등의 사고 발생 가능
2. 클라우드 보안 위협 및 사고 사례
2-1. 보안 위협 종류
관리적, 기술적, 물리적 보안
| 구분 | 설명 |
|---|---|
| 관리적 보안 | 보안 정책, 점검, 교육 등 |
| 기술적 보안 | 인프라 보호, 데이터 보호, 해킹 방어/탐지 |
| 물리적 보안 | 시설 보안, 백업, 분산 저장 (클라우드 제공자 책임) |
클라우드 시스템 특성에 따른 보안 위협
- 가상화 기술 및 다중 테넌시(Multitenancy)
- 관리 범위 확대
- 인터넷 기반 인프라로 인한 해킹·정보 유출 위험 증가
2-2. 주요 보안 위협 사례 (CSA 기준)
| 위협 유형 | 설명 |
|---|---|
| ID·접근 관리 미흡 | 권한 있는 계정 유출, 데이터 손상 가능성 |
| 취약한 API | 인증 우회, 과도한 권한, 서비스 중단 등 |
| 잘못된 설정 | 권한 설정 오류로 인한 데이터 유출 |
| 보안 전략 부재 | 공동 책임 모델 이해 부족, 보안 이식 실패 |
| 안전하지 않은 SW | 키 관리·CI/CD 미흡으로 보안 취약 |
| 제3자 리소스 | 오픈소스·서드파티 API로 인한 공급망 리스크 |
| 시스템 취약점 | 하이퍼바이저 취약점 등으로 기밀성·무결성 훼손 |
| 데이터 오픈 | 설정 오류로 퍼블릭 접근 허용 및 정보 유출 |
| 서버리스·컨테이너 | 잘못된 구성 및 보안 책임 분산 문제 |
2-3. 실제 보안 사고 사례
클라우드 제공자 측 문제
- 2017 AWS S3 설정 실수: 애플, 에어비앤비, 핀터레스트 등 서비스 중단
- 2011 일본 대지진: 해저 케이블 손상, AWS 서비스 불가
- 2011 번개로 인한 정전: EC2 서비스 11시간 중단
- 버지니아 EC2 데이터 복제 오류: 대규모 서비스 장애
사용자 측 문제
- 2018 혼다 인도: 클라우드 스토리지 노출로 개인정보 5만 건 유출
- 2014 CodeSpaces: 해커에게 AWS 제어권 탈취, 자원 삭제 및 파괴
- 보안 설정 실수: 인터넷으로 DB·스토리지 노출
책임 영역 모호
- 2019 캐피탈원 해킹: AWS 방화벽 설정 오류 악용, 1억 명 정보 유출, 1.5억 달러 손실
- Nirvanix 클라우드 서비스 폐업: 사용자에게 2주 안에 데이터 이전 통보
3. 클라우드 보안 설계
3-1. 클라우드 보안 기본 개념
- 클라우드 환경에서의 안전한 정보시스템 구축
- 주요 보안 속성 고려 필요
3-2. 클라우드의 주요 보안 속성
| 속성 | 설명 |
|---|---|
| 멀티 테넌시 (Multi-Tenancy) | 가상화를 통한 논리적 분리. 암호화·Key 관리 중요 |
| 접근성 (Accessability) | 언제 어디서나 자원 접근 가능 → 인증·인가·로깅·감사 체계 필수 |
| 탄력성 (Elasticity) | 자원 생성/폐기 자동화로 비용 통제 및 모니터링 필요 |
3-3. 클라우드 보안을 위한 필수 요건
| 요건 | 설명 |
|---|---|
| 책임 추적성 | 사용자의 모든 활동 로그 확보 및 감시 |
| 식별·인증·인가 | 접근 주체 파악, 권한 통제 |
| 무결성 | 데이터 변조 여부 탐지 및 예방 |
| 기밀성 | 암호화 등으로 정보 유출 방지 |
| 가용성 | 장애 시 서비스 연속성 확보 (백업, 이중화 등) |
| 준법성 | 데이터 위치, 법규 준수 (예: GDPR, ISO 27001 등) |
4. 클라우드 보안 전략 및 권고 사항
- 공동 책임 모델 이해: 클라우드 제공자 vs 사용자 책임 명확화
- 보안 아키텍처 구축: CSPM, CWPP, CASB 등의 도구 활용
- 제로 트러스트 모델 도입: 내부·외부 모든 접근 검증
- DevSecOps: 개발 단계부터 보안 통합
- 모니터링 및 감사 강화: ELK, Fluentd 등의 로깅 툴 활용
This post is licensed under CC BY 4.0 by the author.