1. AWS와 DevOps 기초

 

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) 사용한 만큼 요금을 내는 서비스

  1. 탄력성/민첩성 (agility elasticity)
    단 한 번의 클릭으로 생성/삭제 및 확장 가능
  2. 확장성 (scalability)
    급증하는 서비스 트래픽의 빠르게 대비
  3. 사용한 만큼 지불 (on-demand)
    무리한 자본지출 없이 빠른 시도와 회수 가능
  4. 내결함성 및 재해복구 (fault tolerance & disaster recovery)
    내결함성과 재해복구를 고려한 설계가 가능 (여러 개의 데이터 센터를 사용하여 안정성 높임)
  5. 고가용성 (high availability)
    여러 개의 데이터 센터가 고속 네트워크망으로 연결되어 가용성 설계 가능
  6. 유지 관리 간소화 (maintenance)
    물리적 리소스 유지보수 불필요

4) 클라우드 서비스 모델 (IaaS, PaaS, SaaS)

클라우드 서비스 모델 비교 <자료: WhaTap blog>

2. AWS의 서비스 개요

1) AWS 글로벌 인프라

  1. Region
    • AWS의 서비스가 제공되는 리소스의 지리적 위치
    • 리전 코드: 지역(ap)-지리적위치(northeast)-순번(2)
    • 고려사항
      • 리전 별 서비스 제공 유무 확인
      • 리전 별 서비스 가격 확인
  2. 가용영역(availability zone, AZ)
    • 하나의 리전은 최소 2개 이상 가용영역으로 구성
    • 가용영역은 하나 이상의 데이터 센터로 구성
    • 서울 리전은 4개의 AZ를 운영
  3. 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>

    https://www.nakivo.com/blog/the-definitive-guide-to-aws-ec2-instance-types/
    인스턴스 타입 설명 <자료: 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
    1. Nitro 하이퍼바이저
      • 메모리 및 CPU 할당을 관리
      • 베어 메탈과 비슷한 성능을 제공하는 경량 하이퍼바이저
    2. NVMe 사용
    3. ENA
      • Elastic Network Adapter
      • 향상된 네트워크 통신 모듈
    4. Nitro 보안 칩
      • 전용 하드웨어 및 소프트웨어에 보안 기능이 적용
  • AWS EC2 6/7세대 인스턴스 Graviton chip (64Bit Arm Neoverse N1 Core)
    1. 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
      • 가장 저렴
      • 일 년에 한 두 번 접근하는 데이터를 장기 보관하는 용도에 적절

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 가능
    Alt text

2. Cloudfront

  • CDN(Contents Delivery Network) service
  • 컨텐츠 배포 가속화 (html, css, js 이미지 등)
  • Origin Server (원본 데이터 서버)
  • Edge Location (원본 데이터 캐시)
  • Invalidation (캐시 무효화 요청)
    Alt text

3. Route53

  • AWS DNS service
  • Domain 구매/등록 service
  • 인터넷 트래픽을 리소스로 라우팅
  • 리소스 상태확인(health check)
  • 다양한 routing policy 제공
    • Simple routing policy
      웹사이트의 도메인을 단일 리소스에 할당 Alt text
    • Weighted routing policy
      트래픽을 분산하여 할당
      Alt text
    • Latency routing policy
      가장 빠른 응답시간을 사용할 region을 구분 Alt text
    • Failover routing policy
      Alt text
    • Geolocation routing policy
      사용자의 위치에 따라 구분
      Alt text

4) AWS 주요 데이터베이스 서비스

1. RDS (Relational Database Service)

  • 다양한 DB 엔진 제공
  • 즉각적인 DB computing size 조정
  • SSD storage
  • 자동 백업
  • 데이터 및 전송 데이터 암호화
  • 쉽고 빠른 이중화 구성 (multi-AZ)
    Alt text
  • Read Replica (읽기 전용 DB, RR)
    Alt text
  • 관리가 쉽고, 사용이 편리

2. Dynamo DB

  • 완전관리형 NoSQL DB
  • SSD 기반 무제한 스토리지
  • Key-value 형태로 저장
  • 10ms 미만의 응답시간, 수 백만 IOPS를 처리가능
  • 확장이 단순/신속
  • 자동 이중화 백업 (3개 지역 분산)
  • 관리가 쉽고, 사용이 편리

3. Elasticache

  • 완전관리형 In-Memory Cache service
  • Elasticache for redis
    Alt text
  • Elasticache for Memcached
  • 고가용성 캐시 서비스 구성
  • 관리가 쉽고, 사용이 편리

5) AWS 주요 보안 서비스

1. WAF

  • 관리형 웹 방화벽 서비스
  • OWASP TOP 10 대응
  • Cloudfront / Application LB 배포
  • AWS 관리형 규칙 / 사용자 지정 규칙
  • IP / 국가 / 헤더 / 문자열 / 요청 길이 기반 차단
  • 실시간 웹 보안 모니터링 (Cloudwatch)
  • AWS 서비스를 활용한 로그통합(Kinesis Data Firehose 및 S3)

Alt text

2. Shield

  • 관리형 DDOS 차단 솔루션
  • DDOS 이벤트 자동 감지 및 차단
  • WAF 서비스와 통합
  • 무료로 사용가능

Alt text

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 공동 책임 모델

Alt text

2) AWS 규정 준수 프로그램

Alt text

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 가격 정책 철학

Alt text

2) AWS 가격 약정할인 체계 (RI, Savings Plan)

Alt text

3) AWS 네트워크 트래픽 비용 (Data transfer in-out)

Alt text

4) AWS 비용 최적화 전략

  1. Right Size
    • 사용하지 않는 리소스 끄기
    • 리소스 모니터링하여 스펙 조정
  2. Increase Elasticity
    • 오토스케일링 사용
    • EKS Cluster Autoscaler
    • EKS Descheduler
    • Fargate 사용
  3. Leverage the Right Pricing Model
    • 약정할인(RI/SP) 적용
    • Spot 인스턴스 적용
  4. Optimize Storage
    • 다양한 스토리지 타입 사용
  • Bill bot
    Alt text

6. AWS 계정 생성 실습하기

1) IAM (Identity and Access Management)

  • AWS 리소스에 대한 액세스 제어 서비스
  • User / User Group / Role / Policy 로 구성
    Alt text

RBAC & ABAC

Alt text

2) AWS Organization의 이해

  • 여러 AWS 계정을 조직에 통합하고 중앙에서 관리할 수 있는 계정 관리 서비스
  • 계정 및 리소스 접근제어 관리와 통합 결제 기능을 활용
  • 통합 결재를 통한 기업의 예산 관리, 보안 및 규정 준수 요구 사항을 충족
    Alt text

3) 실습

  1. AWS 계정 생성
  2. IAM User 생성
    • AdministratorAccess 권한 정책 연결
    • IAMUserChangePassword 권한 정책 연결
    • /IAM/IAM 대시보드/계정 별칭 추가 \
    • /IAM/사용자/보안 자격 증명/콘솔 액세스 활성화
      credentials.csv 다운로드
    • /IAM/사용자/보안 자격 증명/액세스 키 만들기
      rootkey.csv 다운로드
  3. MFA 설정
    • /IAM/사용자/보안 자격 증명/MFA 디바이스 선택

7. AWS 콘솔 및 AWS CLI 사용하기

1) AWS 콘솔 둘러보기

2) AWS 리소스 제한 상향 요청 실습

  1. IAM 로그인
  2. 제한(?)
    • 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

  1. aws configure
    • AWS Access Key ID
    • AWS Secret Access Key
  2. 다른 IAM user에 대해서 설정하기
    1. aws configure --profile alchemine02
    2. 기본 유저 변경하기
      export AWS_PROFILE=alchemine02

4) AWS EC2 생성 및 원격접속 실습

  1. AWS EC2 생성
    1. 리소스 유형: 인스턴스, 볼륨
    2. Amazon Linux
    3. t2.micro
    4. 키 페어 생성 (RSA, pem)
    5. EBS 볼륨/종료 시 삭제 (예) 확인
    6. 고급 세부 정보/사용자 데이터
       #!/bin/bash
       sudo yum update -y
       sudo amazon-linux-extras install nginx1 -y
       sudo systemctl enable nginx
       sudo systemctl start nginx
      
  2. Putty gen으로 pem -> ppk
  3. Putty로 EC2 원격 접속
    1. SSH/Auth/Credentials/Private key file for authentication: *.ppk
    2. username: ec2-user
  4. EC2 인스턴스 타입 변경
    1. 중지 후, 작업/인스턴스 설정/인스턴스 유형 변경
    2. 퍼블릭 IP 고정을 위해 elastic IP 설정 필요
  5. EC2 인스턴스 삭제
    1. 삭제 후, 볼륨도 제거되는 것을 확인

5) AWS S3 버킷 생성 실습

  1. AWS 콘솔을 사용하여 S3 버킷 생성
    1. S3/버킷 만들기
    2. 모든 퍼블릭 액세스 차단 해제
  2. 생성한 버킷에 이미지 업로드
  3. 버킷에 Public 접근 권한 부여
    1. 권한/버킷 정책 편집
       {
           "Version": "2012-10-17",
           "Statement": [
               {
                   "Sid": "PublicRead",
                   "Effect": "Allow",
                   "Principal": "*",
                   "Action": [
                       "s3:GetObject",
                       "s3:GetObjectVersion"
                   ],
                   "Resource": "arn:aws:s3:::my-first-s3-bucket-1221/*"
               }
           ]
       }
      
  4. 웹브라우저에서 이미지 접근

8. DevOps 기초

1) DevOps 개념과 DevOps가 걸어온 길

  1. DevOps?
    • Developer + Operation
    • 개발과 운영의 경계를 허물고 통합하고자 하는 문화 또는 철학
    • SW 개발 프로세스와 운영의 모든 단계의 통합과 자동화를 목표로 함
      Alt text
  2. DevOps를 넘어 DevSecOps로
    • Developer + Security + Operation
    • 보안까지 확장한 개념
    • SW 배포에 관여하는 모든 사람들이 보안을 최우선으로 하는 문화
      Alt text
  3. (넷플릭스) 개발자가 SW의 모든 단계에 참여할 수 있는 Full-cycle developer 모델을 제시
    Alt text

2) DevOps 목표 및 역할

  • DevOps 업무의 주요 대상은 개발자
  • 개발자가 운영에 참여할 수 있는 환경과 문화를 제공
  • 개발자가 비즈니스 로직에 집중할 수 있도록 지원

업무 도메인

Alt text Alt text

DevOps 팀 핵심 지표 (KPI)

Alt text

3) DevOps Road map

Alt text

4) DevOps Tool map

Alt text

5) Muttable vs Immutable (Pet and cattle)

Alt text

Alt text

6) Terraform 기초와 terraform을 사용하는 이유

Alt text

Alt text

Alt text

  • Terraform 디렉터리 레이아웃
    Alt text

  • Terraform을 사용하는 이유?

    • 불변(immutable) 인프라를 위해 사용
    • 인프라를 cattle과 같이 관리
    • 프로비저닝과 인프라 재사용에 용이

Terraform 실습

  1. tfstate Backend S3 생성
    1. Default 설정으로 S3 bucket 생성
  2. tfstate Lock DynamoDB 생성
    1. DynamoDB/테이블 생성
    2. 파티션 키: LockID
  3. 테라폼 소스 수정
    1. git clone https://github.com/kimdragon50/facam-terraform.git
    2. backend.tf: bucket, dynamodb_table 변경
    3. provider.tf: access_key, secret_key 변경
      • cat ~/.aws/credentials 를 참고
  4. 테라폼 init -> plan -> apply
    1. cd facam-terraform
    2. terraform init
    3. terraform plan
    4. terraform apply
  5. 테라폼 destroy
    1. terraform destroy