티스토리 뷰
AWS Summit Seoul 2019 후기 및 정리
4월 18일
지속적인 성능과 확장을 보장하는 마이크로 서비스 패턴 데이터베이스 구현하기
RDB 에서 서비스 중심의 아키텍처 설계 (=Multi DataStore) 로 변환하기 위해 데이터 특성을 분류, 이에 따라 적합한 저장소를 선택함
Relational | Key-value | Document | In-Memory | Graph | Time-series | Ledger | |
Common Data Models |
Referential integrity, ACID transactions, schema-on-write |
High throughput low-latency reads and writes, endless scale | Store documents and quickly access querying on any attribute | Query by key with microsecond latency |
Quickly and easily create and navigate relationships between data |
Collect, store, and process data sequenced by time |
Complete, immutable, and verifiable history of all changes to application data |
Common Use Cases | Lift and shift, ERP, CRM, finance | Real-time Bidding, shopping Cart, social, product catalog, customer preferences | Content management, personalization, mobile | Leaderboards, real-time analytics, caching | Fraud detection, social networking, recommendation engine | IoT applications, event tracking | Systems of record, supply chain, health care, registrations, financial |
Amazon Aurora Amazon RDS | Amazon DynamoDB | Amazon DocumentDB | Amazon ElastiCache | Amazon Neptune | Amazon Timestream | Amazon QLDB |
데이터 모델 - Use Cases - aws db
AWS 클라우드 핵심 서비스로 클라우드 기반 아키텍처 빠르게 구성하기
Amazon EC2 Instance 유형
병용 | 컴퓨팅 최적화 | 메모리 최적화 | 가속화된 컴퓨팅 | 스토리지 최적화 |
M5 | C5 | High Memory | P3 | I3 |
M4 | C4 | X1e | P2 | I2 |
T3 | X1 | G3 | D2 | |
T2 | R4, R5 | F1 |
플랫폼 선택
카테고리 : 범용, 순간확장성능, 컴퓨팅 집약, 메모리 집약, 높은 I/O Storage, 고밀도 스토리지, GPU 기반, 그래픽 집약
기능 : 프로세서 선택, 빠른 processor, 높은 메모리공간, 인스턴스 스토리지, 가속화된 컴퓨팅, 네트워킹, Bare Metal, instance 크기
옵션 : Amazon Elastic Block Store, Elastic Graphics, Elastic Inference
스토리지 선택
Amazon Elastic Block Store (Amazon EBS) : Block
- 동일 가용영역 내 인스턴스에 스토리지 attach, detach 가능, SSD, HDD 선택가능, 볼륨 암호화 제공, 스냅샷 지원
Amazon Elastic File System (Amazon EFS) : File
- 수천개 이상 서버에서 동시접속 지원, 전송 보관시 암호화 파일 추가, 제거에 따라 자동으로 확장 축소
Amazon Simple Storage Service (Amazon S3), Amazon Glacier : Object
- 99.999999999% 내구성, 확장에 제약이 없음, 리전간 데이터 복제, 데이터 수명주기 관리(자동화되어있음)
컨테이너와 서버리스 기반 CI/CD 파이프라인 구성하기
릴리즈 프로세스
1. 소스
2. 빌드
3. 테스트
4. 프로덕션
CI : Continuous Integration 지속적 통합 (빌드까지)
CD : Continuous Delivery 지속적 전달, Continuous Deployment 지속적 배포
지속적 통합, 지속적 배포, 코드형 인프라
지속적 통합의 목표
- 새 코드가 체크인되면 자동으로 새 릴리즈 시작
- 일관되고, 반복가능한 환경에서 코드 빌드 및 테스트
- 배포준비가 완료된 아티팩트 항시 보유
- 빌드 실패시 피드백 루프 최적화
AWS CodePipeline
- 빠르고 신뢰할 수 있는 애플리케이션 업데이트를 위한 지속적 전달 서비스
- 소프트웨어 릴리즈 프로세스 모델링 및 시각화
- 코드가 변경될 떄 마다 자동으로 빌드, 테스트, 배포 (브랜치 기준, 오브젝트 또는 폴더 기준, 도커 태그 기준)
- 타사 도구 및 AWS와 통합
AWS CodePipeline 지원 트리거
- Amazon CloudWatch Events : 스케쥴(밤마다릴리즈), AWS Health 이벤트
- Webhooks : DockerHub, Quay, Artifactory
지속적 배포의 목표
- 테스트를 위해 스테이징 환경에 새로운 변경 사항을 자동으로 배포
- 고객의 사용성에 영향 없이 안전하게 프로덕션으로 배포
- 고객에게 신속하게 제공 : 배포 빈도를 높이고, 리드 타임과 실패율을 줄임
AWS CodeDeploy
- 모든 인스턴스와 Lambda로 코드 배포를 자동화
- 애플리케이션 업데이트의 복잡성을 처리
- 애플리케이션 배포 중 다운타임 최소화
- 오류 감지 시 자동으로 롤백
- Amazon EC2, Lambda. 온프레미스 서버에 배포
코드로 관리하는 인프라의 목표
- 인프라 변경 사항을 반복적이고 예측 가능하게 함
- 코드 변경과 동일한 도구를 사용하여 인프라 변경 사항 릴리즈
- 스테이징 환경에서 프로덕션 환경을 복제하여 지속적인 테스트 가능하게 함
지속적인 테스트
아티팩트 검증 (빌드 단계) : 유닛 테스트, 정적분석, 목업 의존성 및 환경, 취약점 이미지 스캔
환경 검증 (테스트 단계) : 실제 의존성 및 실제 환경에 대한 통합 테스트, 부하 테스트, 침투 테스트, 환경에 미치는 영향을 테스트 하기 위한 모니터링
AWS CDK (Cloud Deployment Kit) 로 파이프라인 모델링
- 객체 지향 언어를 사용하여 복사-붙여넣기를 최소화
- 하나의 클래스에서 마이크로서비스 파이프라인 모양을 정의하고, 여러 파이프라인에서 재사용
- CDK는 CodePipeline 을 모델링하기 위한 많은 고수준 Constructs를 포함하고 있으며, 자동으로 IAM 역할 정책을 구성