1. 클라우드 서비스 개요
1) 클라우드 컴퓨팅의 유형
Public cloud | Private cloud | |
---|---|---|
컴퓨팅 리소스 | 사용자 소유 X | 사용자 소유 O |
네트워크 | 인터넷 | 내부 네트워크 |
가상화 기술 | 서비스로 제공 | 직접 구축해야함 |
- Hybrid cloud: public + private cloud
- Multi cloud: multiple public clouds
2) 클라우드 컴퓨팅 제공 업체(CSP, Cloud Service Provider)
- 시장 점유율: Amazon > MS > Google > Alibaba > …
3) 클라우드 서비스의 6가지 특징
Cloud service
인터넷을 통해 IT 리소스와 어플리케이션을 사용자가 원할 때 언제든지(on-demand) 사용한 만큼 요금을 내는 서비스
- 탄력성/민첩성 (agility elasticity)
단 한 번의 클릭으로 생성/삭제 및 확장 가능 - 확장성 (scalability)
급증하는 서비스 트래픽의 빠르게 대비 - 사용한 만큼 지불 (on-demand)
무리한 자본지출 없이 빠른 시도와 회수 가능 - 내결함성 및 재해복구 (fault tolerance & disaster recovery)
내결함성과 재해복구를 고려한 설계가 가능 (여러 개의 데이터 센터를 사용하여 안정성 높임) - 고가용성 (high availability)
여러 개의 데이터 센터가 고속 네트워크망으로 연결되어 가용성 설계 가능 - 유지 관리 간소화 (maintenance)
물리적 리소스 유지보수 불필요
4) 클라우드 서비스 모델 (IaaS, PaaS, SaaS)
클라우드 서비스 모델 비교 <자료: WhaTap blog>
2. AWS의 서비스 개요
1) AWS 글로벌 인프라
- Region
- AWS의 서비스가 제공되는 리소스의 지리적 위치
- 리전 코드: 지역(ap)-지리적위치(northeast)-순번(2)
- 고려사항
- 리전 별 서비스 제공 유무 확인
- 리전 별 서비스 가격 확인
- 가용영역(availability zone, AZ)
- 하나의 리전은 최소 2개 이상 가용영역으로 구성
- 가용영역은 하나 이상의 데이터 센터로 구성
- 서울 리전은 4개의 AZ를 운영
- Edge location
- Amazon CloudFront/Route53을 위한 캐시 서버들의 모음
- AWS 전세계 리전에서 빠른 접근성을 위한 글로벌 네트워크 인프라를 의미
- Lambda@Edge (가까운 지역 위치에서 서버리스 코드 실행)을 통해 성능을 개선하고 지연 시간을 단축
3. AWS 주요 서비스 소개
1) AWS 주요 컴퓨팅 서비스
1. EC2
- Elastic Computing Cloud
- Infra as a Service (IaaS)
- Virtual Machine service
- Auto scaling
- 성능에 따른 다양한 인스턴스 타입 제공
EC2 Instance type
-
Instance types
인스턴스 타입 비교 <자료: ParkMyCloud>
인스턴스 타입 설명 <자료: NAKIVO blog> -
Additional capability
Name Property a AMD processor d Local NVMe SSD storage e Extra capacity g Graviton processor (ARM) n High-speed networking z High Frequency - AWS EC2 T-Family
- Burstable 인스턴스
- 기준 사용률 이하의 성능으로 사용하는 동안 CPU credit이 축적되며, 기준 성능을 넘는 CPU를 사용할 땐 버스팅
- 기본 성능 = 100% * 시간당 지급 credit / vCPU / 60분
- 간헐적으로 높은 CPU 퍼포먼스가 필요한 경우 적절 (지속적인 CPU 사용에는 부적절)
- AWS EC2 5세대 인스턴스 Nitro System
- Nitro 하이퍼바이저
- 메모리 및 CPU 할당을 관리
- 베어 메탈과 비슷한 성능을 제공하는 경량 하이퍼바이저
- NVMe 사용
- ENA
- Elastic Network Adapter
- 향상된 네트워크 통신 모듈
- Nitro 보안 칩
- 전용 하드웨어 및 소프트웨어에 보안 기능이 적용
- Nitro 하이퍼바이저
- AWS EC2 6/7세대 인스턴스 Graviton chip (64Bit Arm Neoverse N1 Core)
- x86 아키텍쳐가 아닌 ARM 아키텍쳐라 호환에 주의
2. Lambda
- Serverless computing service
- Function as a Service (FaaS)
- 다양한 런타임 지원
- 필요 시에만 코드 실행되어 사용한 만큼 지불
- 주로 배치성 작업에 사용
- 실시간 파일처리 지원
2) AWS 주요 스토리지 서비스
- Bursting 기능이 필요한지 아닌지 알아둬야함
1. S3 (Simple Storage Service)
- 객체 스토리지 서비스
- 일반적으로 mount해서 사용하는 block storage와는 달리, Restful API를 사용하여 객체에 액세스
- HTTP/HTTPS protocol 사용
- 5TB 단일 파일 저장 가능
- 데이터를 여러 데이터센터에 중복 저장
- 높은 내구성 (Eleven 9)
- 데이터 암호화 제공
- 버전 관리 / 정적 웹사이트 호스팅 제공
AWS S3 storage class
- 접근 빈도에 따라 구분 (Frequent(hot) <-> Archive(cold))
- Standard
- 정적 웹사이트, 컨텐츠 배포, 모바일/게임 어플리케이션
- Intelligent Tiering
- 객체 접근 빈도의 패턴을 판단하여 자동으로 클래스를 이동시키는 클래스 (비용 절감)
- Standard IA
- IA: Infrequent Access
- 간헐적으로 빠른 접근이 필요한 경우 적절
- One Zone IA
- 다른 클래스들은 최소 3개의 가용영역에 저장하나, 단일 가용영역에 데이터를 저장하여 비용이 20% 정도 저렴
- Glacier
- 자주 접속하지 않은 장기 데이터를 위한 클래스
- 비교적 가격이 저렴
- Deep Archive
- 가장 저렴
- 일 년에 한 두 번 접근하는 데이터를 장기 보관하는 용도에 적절
- Standard
3. EBS (Elastic Block Storage Service)
- OS 내부에서 mount하여 사용
- EC2에 attach/detach 가능
- SSD or HDD
- 간편한 스냅샷 백업
- S3 보다는 내구성이 떨어짐 (99.999%)
- 탄력적 확장 가능 (축소는 불가능)
- 데이터 암호화 제공
EBS volume type
4. EFS (Elastic File System)
- 파일 스토리지 서비스 (like NAS)
- 공유 스토리지 (여러 리소스에서 동시에 접근이 필요한 경우 적절)
- NFS(Network File System) version4 지원
- Auto scaling
- Peta Bytes 데이터 저장 가능
- 다양한 AWS 서비스 mount 지원
- Provisioned Throughput 모드 지원
3) AWS 주요 네트워크 서비스
1. VPC (Virtual Private Network Computing)
- IP대역(CIDR) 할당하여 네트워크 구성
- IPv4/v6 Address blocks 지원
- 서브넷 / 라우팅 테이블로 서브네팅
- VPC Flow Log 활성화하여 트래픽 캡쳐
- Private endpoint service 제공
- VPC Peering / Transit Gateway로 VPC간 연동
- AWS Transit Gateway를 통한 multi-cast 가능
2. Cloudfront
- CDN(Contents Delivery Network) service
- 컨텐츠 배포 가속화 (html, css, js 이미지 등)
- Origin Server (원본 데이터 서버)
- Edge Location (원본 데이터 캐시)
- Invalidation (캐시 무효화 요청)
3. Route53
- AWS DNS service
- Domain 구매/등록 service
- 인터넷 트래픽을 리소스로 라우팅
- 리소스 상태확인(health check)
- 다양한 routing policy 제공
- Simple routing policy
웹사이트의 도메인을 단일 리소스에 할당 - Weighted routing policy
트래픽을 분산하여 할당
- Latency routing policy
가장 빠른 응답시간을 사용할 region을 구분 - Failover routing policy
- Geolocation routing policy
사용자의 위치에 따라 구분
- Simple routing policy
4) AWS 주요 데이터베이스 서비스
1. RDS (Relational Database Service)
- 다양한 DB 엔진 제공
- 즉각적인 DB computing size 조정
- SSD storage
- 자동 백업
- 데이터 및 전송 데이터 암호화
- 쉽고 빠른 이중화 구성 (multi-AZ)
- Read Replica (읽기 전용 DB, RR)
- 관리가 쉽고, 사용이 편리
2. Dynamo DB
- 완전관리형 NoSQL DB
- SSD 기반 무제한 스토리지
- Key-value 형태로 저장
- 10ms 미만의 응답시간, 수 백만 IOPS를 처리가능
- 확장이 단순/신속
- 자동 이중화 백업 (3개 지역 분산)
- 관리가 쉽고, 사용이 편리
3. Elasticache
- 완전관리형 In-Memory Cache service
- Elasticache for redis
- Elasticache for Memcached
- 고가용성 캐시 서비스 구성
- 관리가 쉽고, 사용이 편리
5) AWS 주요 보안 서비스
1. WAF
- 관리형 웹 방화벽 서비스
- OWASP TOP 10 대응
- Cloudfront / Application LB 배포
- AWS 관리형 규칙 / 사용자 지정 규칙
- IP / 국가 / 헤더 / 문자열 / 요청 길이 기반 차단
- 실시간 웹 보안 모니터링 (Cloudwatch)
- AWS 서비스를 활용한 로그통합(Kinesis Data Firehose 및 S3)
2. Shield
- 관리형 DDOS 차단 솔루션
- DDOS 이벤트 자동 감지 및 차단
- WAF 서비스와 통합
- 무료로 사용가능
3. KMS (Key Management Service)
- AWS 키 관리 서비스
- 리소스 데이터 암호화 / 복호화
- 디지털 서명 및 확인
- AWS 서비스와 통합 (CloudTrail, Cloudwatch)
- 3가지 키 방식 지원
- AWS managed key
- Customer managed key (CMK)
- Custom key stores
6) AWS 주요 관리형 서비스
1. Cloudwatch
- 관리형 AWS 리소스 모니터링 서비스
- AWS 리소스 상태에 대한 여러 metrics 제공
- 대시보드 구성
- SNS 서비스를 통한 알람
- EC2 Custom MEtric 제공
2. SNS (Simple Notification Service)
- 관리형 메시지 서비스
- 메시지 생산자가 SNS를 통해 다양한 AWS 리소스(소비자, 구독자)에 메시지를 전송 (비동기식)
- Application 간 메시징
- 메시지 보안 (KMS와 통합)
- 메시지 필터링
3. Cloudtrail
- 관리형 이벤트 추적/감사 도구
- AWS 계정에 대한 이벤트 추적/감사
- AWS 리소스 API에 대한 이벤트 추적/기록
- 단일/모든 리전 추적
- AWS athena를 통한 로그 분석 지원
4. AWS 공동 책임 모델 & 규정 준수 프로그램
1) AWS 공동 책임 모델
2) AWS 규정 준수 프로그램
ISMS (Information Security Management System)
- 기업 및 조직이 정보 자산을 철저히 보호하도록 정보 보호 관리 체계를 일관적이고 안전하게 운영/관리하는지를 평가하는 표준
PCI DSS (Payment Card Industry Data Security Standard)
- 신용카드 데이터의 침해 방지를 위해 세계적인 주요 카드 사에 의해 개발
HIPAA (Health Insurance Portability and Accountability Act)
- 건강보험 이전과 책임에 관한 법
- HIPAA에 개인 건강 정보(PHI)의 보안 및 개인 정보를 보호하는 컴플라언스
- AWS는 HIPAA에 대응하는 상위 수준의 보안 표준 FedRamp, NIST800-53에 맞춤
5. AWS 비용 체계
1) AWS 가격 정책 철학
2) AWS 가격 약정할인 체계 (RI, Savings Plan)
3) AWS 네트워크 트래픽 비용 (Data transfer in-out)
4) AWS 비용 최적화 전략
- Right Size
- 사용하지 않는 리소스 끄기
- 리소스 모니터링하여 스펙 조정
- Increase Elasticity
- 오토스케일링 사용
- EKS Cluster Autoscaler
- EKS Descheduler
- Fargate 사용
- Leverage the Right Pricing Model
- 약정할인(RI/SP) 적용
- Spot 인스턴스 적용
- Optimize Storage
- 다양한 스토리지 타입 사용
- Bill bot
6. AWS 계정 생성 실습하기
1) IAM (Identity and Access Management)
- AWS 리소스에 대한 액세스 제어 서비스
- User / User Group / Role / Policy 로 구성
RBAC & ABAC
2) AWS Organization의 이해
- 여러 AWS 계정을 조직에 통합하고 중앙에서 관리할 수 있는 계정 관리 서비스
- 계정 및 리소스 접근제어 관리와 통합 결제 기능을 활용
- 통합 결재를 통한 기업의 예산 관리, 보안 및 규정 준수 요구 사항을 충족
3) 실습
- AWS 계정 생성
- IAM User 생성
AdministratorAccess
권한 정책 연결IAMUserChangePassword
권한 정책 연결/IAM/IAM 대시보드/계정 별칭 추가
\/IAM/사용자/보안 자격 증명/콘솔 액세스 활성화
credentials.csv 다운로드/IAM/사용자/보안 자격 증명/액세스 키 만들기
rootkey.csv 다운로드
- MFA 설정
/IAM/사용자/보안 자격 증명/MFA 디바이스 선택
7. AWS 콘솔 및 AWS CLI 사용하기
1) AWS 콘솔 둘러보기
2) AWS 리소스 제한 상향 요청 실습
- IAM 로그인
- 제한(?)
- EC2-VPC 탄력적 IP 수: 5 -> …
- 온디맨드 All Standard instances 실행 중: 32 -> … (150)
- 온디맨드 All DL instances 실행 중: 0 vCPU -> …
3) AWS CLI 설치
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
aws configure
- AWS Access Key ID
- AWS Secret Access Key
- 다른 IAM user에 대해서 설정하기
aws configure --profile alchemine02
- 기본 유저 변경하기
export AWS_PROFILE=alchemine02
4) AWS EC2 생성 및 원격접속 실습
- AWS EC2 생성
- 리소스 유형: 인스턴스, 볼륨
- Amazon Linux
- t2.micro
- 키 페어 생성 (RSA, pem)
- EBS 볼륨/종료 시 삭제 (예) 확인
- 고급 세부 정보/사용자 데이터
#!/bin/bash sudo yum update -y sudo amazon-linux-extras install nginx1 -y sudo systemctl enable nginx sudo systemctl start nginx
- Putty gen으로 pem -> ppk
- Putty로 EC2 원격 접속
- SSH/Auth/Credentials/Private key file for authentication:
*.ppk
- username: ec2-user
- SSH/Auth/Credentials/Private key file for authentication:
- EC2 인스턴스 타입 변경
- 중지 후, 작업/인스턴스 설정/인스턴스 유형 변경
- 퍼블릭 IP 고정을 위해 elastic IP 설정 필요
- EC2 인스턴스 삭제
- 삭제 후, 볼륨도 제거되는 것을 확인
5) AWS S3 버킷 생성 실습
- AWS 콘솔을 사용하여 S3 버킷 생성
- S3/버킷 만들기
- 모든 퍼블릭 액세스 차단 해제
- 생성한 버킷에 이미지 업로드
- 버킷에 Public 접근 권한 부여
- 권한/버킷 정책 편집
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::my-first-s3-bucket-1221/*" } ] }
- 권한/버킷 정책 편집
- 웹브라우저에서 이미지 접근
8. DevOps 기초
1) DevOps 개념과 DevOps가 걸어온 길
- DevOps?
- Developer + Operation
- 개발과 운영의 경계를 허물고 통합하고자 하는 문화 또는 철학
- SW 개발 프로세스와 운영의 모든 단계의 통합과 자동화를 목표로 함
- DevOps를 넘어 DevSecOps로
- Developer + Security + Operation
- 보안까지 확장한 개념
- SW 배포에 관여하는 모든 사람들이 보안을 최우선으로 하는 문화
- (넷플릭스) 개발자가 SW의 모든 단계에 참여할 수 있는 Full-cycle developer 모델을 제시
2) DevOps 목표 및 역할
- DevOps 업무의 주요 대상은 개발자
- 개발자가 운영에 참여할 수 있는 환경과 문화를 제공
- 개발자가 비즈니스 로직에 집중할 수 있도록 지원
업무 도메인
DevOps 팀 핵심 지표 (KPI)
3) DevOps Road map
4) DevOps Tool map
5) Muttable vs Immutable (Pet and cattle)
6) Terraform 기초와 terraform을 사용하는 이유
-
Terraform 디렉터리 레이아웃
-
Terraform을 사용하는 이유?
- 불변(immutable) 인프라를 위해 사용
- 인프라를 cattle과 같이 관리
- 프로비저닝과 인프라 재사용에 용이
Terraform 실습
- tfstate Backend S3 생성
- Default 설정으로 S3 bucket 생성
- tfstate Lock DynamoDB 생성
- DynamoDB/테이블 생성
- 파티션 키:
LockID
- 테라폼 소스 수정
git clone https://github.com/kimdragon50/facam-terraform.git
backend.tf
: bucket, dynamodb_table 변경provider.tf
: access_key, secret_key 변경cat ~/.aws/credentials
를 참고
- 테라폼 init -> plan -> apply
cd facam-terraform
terraform init
terraform plan
terraform apply
- 테라폼 destroy
terraform destroy
PREVIOUSEtc