오토에버 클라우드 2기 29일차
오토에버 클라우드 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.