[AWS Builders 프로그램] 클라우드 기초교육 및 실습

  • 교육 일자 : 2021. 04. 20(화)
  • AWS에서는 컴퓨팅, 스토리지, 데이터베이스 및 여러 개발 관련 서비스들을 제공함
  • 이 강의에서는 AWS의 서비스를 훑어보고 AWS의 보안 모델 등에 대해 배움

오전 강의 : AWS 서비스 톺아보기

열어보기

1. Amazon EC2

  • 웹 호스팅, 인증 서비스 등을 지원
  • 컴퓨팅 자원을 탄력적으로 이용 가능 (Instance Stop을 통해 비용 절감 가능)
  • 다양한 AWS 내 다른 모듈들과 혼용 가능

2. Amazon EBS(Elastic Block Store)

  • 인스턴스용 영구 블록 스토리지로 복제를 통해 보호됨
  • 데이터 소실을 대비해 두 개 이상의 가용영역을 사용하는 것을 권장함

3. Amazon S3

  • One Drive, Dropbox와 유사한 서비스
  • 데이터는 버킷 내에 객체로 저장됨 (파일 시스템이 아님)
  • 무제한 스토리지(단일 객체는 5TB로 제한됨)
  • 객체에 대해 빠르고 내구성과 가용성이 높은 키 기반 액세스
  • CLI가 S3 API를 통해 RESTful 요청을 전송하면 S3 버킷이 객체를 반환
  • 백업 및 스토리지, 애플리케이션 및 미디어 호스팅, 소프트웨어 전송 등에 사용 가능
  • Glacier 클래스는 매우 저렴하게 데이터를 보관할 수 있고 장기 백업이 가능함 (보관용이기 때문에 읽기에는 비싼 요금이 듦)

아키텍처 구성 예시: EC2 웹 어플리케이션에 S3 버킷을 통해 정적 콘텐츠를, EBS 볼륨을 통해 파일을 저장하는 DB로 사용, EC2를 호스팅하는 인스턴스 스토어를 사용

4. Amazon VPC(Virtual Private Cloud)

  • 인스턴스 수준에서 작용하는 보안 그룹을 설정하여 인/아웃바운드 규칙을 따로 설정 가능
  • 보안 그룹은 화이트 리스트 방식으로 거부 규칙을 지정할 수는 없음
  • 기본 값으로 인바운드 허용 안 함 / 아웃바운드 허용을 가짐

5. AWS CloudWatch

  • AWS 리소스, 실행중인 어플리케이션등에서 지표등을 수집하거나 추적하며 사용자에게 알림을 전송할 수 있음

6. Amazon Relational DB service

  • 클라우드에서 RDBMS의 설정, 운영 및 확장을 손쉽게 해주는 DB 서비스
  • Amazon Aurora, PostgreSQL, MariaDB, ORACLE 등 6가지의 DB를 사용 가능

7. Amazon SNS(Simple Notification Service)

  • 분산/서버리스 어플리케이션을 위한 완전 관리형 게시/구독 메시징(푸쉬)

8. Amazon CloudFront

  • 빠르고 안전한 글로벌 콘텐츠 전송 네트워크(CDN)
  • 사용자가 요청한다면 엣지 로케이션으로 라우팅하고 캐시에 있다면 사용자에게 바로 반환, 없다면 S3 버킷에 원본 파일을 요청해 캐싱하고 사용자에게 반환

예시) 미디어 스트리밍 서비스

  • 인코딩된 비디오 수집 → 여러 형식의 비디오 코드 변환 → 카탈로그 비디오 메타 데이터 → 클라이언트로 비디오 스트리밍
  • AWS Lambda에 코드를 업로드 → 이벤트 소스에서 코드가 트리거되도록 설정 → 트리거된 경우에만 Lambda에서 코드 실행 → 사용한 컴퓨팅 시간에 대해서만 비용 지불

오전 강의 : AWS의 보안

열어보기

1. 클라우드 자체의 보안

  • 호스트, 네트워크, 소프트웨어, 시설
  • AWS 글로벌 인프라 보호는 최고 우선 순위
  • 타사 감사 보고서 제공

2. 클라우드 내부의 보안

  • 무엇을 저장해야하는가
  • 어떤 AWS 서비스를 사용해야 하는가
  • 어느 리전에 저장해야 하는가
  • 콘텐츠 형식과 구조는 어떻게 되는가
  • 누가 액세스 할 수 있는가

3. 인증 및 권한 관리

  • IAM(Identity and Access Management)를 통해 AWS 리소스에 대한 액세스를 안전하게 제어 (추가비용 없음)
  • IAM 사용자, 그룹, 역할을 나누어 적용할 수 있음
  • IAM 정책을 통해 IAM 사용자, 그룹 또는 역할이 AWS CLI나 S3 버킷에 접근하거나 조작할 수 있게 된다
  • AWS 계정 루트 사용자는 모든 AWS 서비스에 대한 완전한 액세스 권한을 가짐 → 루트 사용자 액세스 키를 삭제, IAM 사용자를 생성하여 관리자 액세스 권한을 부여하고 IAM 자격 증명을 사용하여 AWS와 상호작용하도록 권장됨

오전 강의 : AWS의 요금 정책

열어보기
  • 사용량에 따라 지불, 예약을 통한 비용 절감, 사용량이 많을수록 비용 절감
  • 온디맨드, NURI(No up-front), PURI(Partial up-front), AURI(All up-front)
  • 서비스마다 요금이 다름

EC2의 네 가지 구매 유형

  • 온디맨드 인스턴스 (시간/초당 청구, 단기)
  • 예약 인스턴스 (1~3년 약정 할인)
  • 스팟 인스턴스 (최대 90% 할인되는 예비 AWS 용량, 시작 및 종료 시간이 자유로은 애플리케이션)
  • 전용 호스트 (고객 전용 물리서버, 특정 규정 준수 요구사항이 있는 애플리케이션)

S3의 요금 모델

  • 사용된 스토리지 양
  • 리전
  • 스토리지 클래스
  • 요청 수 및 유형 (GET, PUT, COPY)
  • 리전 외부로 전송된 데이터의 양

Trusted Advisor

  • 비용 절감 및 성능 개선 가능

AWS Support

  • Basic, Developer, Business, Enterprise 클래스로 나뉘며 모든 사용자는 기본값으로 Basic에 해당됨

오후 강의 : AWS 실습

열어보기

실습 과정

  • 네트워크 구성
  • 웹 서버 생성
  • 로드 밸런서 구성
  • 모니터링 (옵션)
  • 오토 스케일링 (옵션)
  • 정적 웹 사이트 호스팅 (옵션)

AWS 시작하기

  • 10분 자습서로 AWS 빠르게 시작
  • AWS 프리 티어 (12개월 무료)

AWS 실습

  1. 네트워크 구성하기
  • VPC 콘솔에서 VPC 마법사 시작
  • 단일 퍼블릭 서브넷이 있는 VPC
  • 해당 서브넷에 대한 CIDR 블록을 지정
  • CIDR이란? 참고자료

CIDR(Classless Inter-Domain Routing)는 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한 최신의 IP주소 할당 방법으로 CIDR는 기존의 IP 주소 할당 방식이었던 네트워크 클래스를 방법을 대체한 방식.
CIDR는 IP Address의 영역을 나눌 때 기존방식보다 유연하게 자신이 원하는 Network Address와 Host Address를 나눌 수 있다.

  • 서브넷 메뉴에서 서브넷 생성으로 추가 서브넷 생성 시작

  • VPC 아이디에서 방금 생성한 VPC를 선택(추가 서브넷이므로)

  • CIDR는 기존 서브넷의 IP와 앞자리 두 블럭(고정 범위의 네트워크 주소)이 같도록 하고 뒷 두 블럭(가변 범위의 호스트 주소)이 다르게 설정

  • VPC 라우팅 테이블을 통해 방금 생성한 VPC의 라우팅 테이블 ID와 동일하도록 설정

  1. 보안 그룹 생성하기
  • 보안 그룹 메뉴에서 보안 그룹 생성
  • 보안 그룹 이름과 설명을 작성하고 1번에서 생성한 VPC ID로 설정
  • 인바운드 규칙HTTP/SSH위치 무관(소스)으로 설정
  1. 웹 서버 생성하기
  • EC2 콘솔에서 인스턴스 시작으로 인스턴스를 생성
  • Amazon Machine Image(AMI) 선택에서 Amazon Linux 2 AMI를 선택
  • t2.micro(프리 티어 사용 가능)를 선택한 후, 다음: 인스턴스 세부 정보 구성 버튼을 클릭
  • 네트워크와 서브넷을 선택하고 퍼블릭 IP 자동 할당활성화로 설정
  • 고급 세부 정보에 #include https://s3.amazonaws.com/immersionday-labs/bootstrap.sh를 입력
  • 태그 추가까지 넘어가 키와 값을 입력
  • 보안 그룹 구성에서 기존 보안 그룹 선택을 통해 2번에서 만든 보안 그룹을 선택하고 검토 및 시작
  • 새 키 페어 생성을 선택하고 키 페어 이름을 입력한 후 키 페어 다운로드
  • 인스턴스 시작으로 인스턴스를 생성(인스턴스 연결로 연결하여 CLI를 볼 수 있음)
  1. AMI 생성하고 AMI 기반 인스턴스 생성하기
  • Amazon Machine Image(AMI)는 인스턴스를 시작하는데 필요한 정보를 제공
  • 인스턴스를 선택하고 우측 상단 작업 메뉴에서 이미지 및 템플릿이미지 생성
  • 이미지 생성 페이지에서 이미지 이름을 입력하고 우측 하단의 이미지 생성 버튼을 클릭
  • 왼쪽 AMI 메뉴에서 상태가 available인지 확인하고 시작하기
  • 단계 3에서 VPC 네트워크를 선택하고 추가 서브넷을 서브넷으로 설정 및 퍼블릭 IP 자동 할당을 활성화로 설정
  • 단계 5에서 태그를 추가하여 값을 입력하고 보안 그룹을 설정(3번의 보안 그룹 설정 과정과 동일)
  • 키 페어는 위에서 생성한 키 페어를 사용
  1. 로드밸런서(Elastic Load Balancing) 구성하기
  • 로드밸런서는 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너, IP 주소, Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 자동으로 분산시킴
  • 로드 밸런서 메뉴에서 Load Balancer 생성
  • Load Balancer 유형 선택에서 Application Load Balancer를 선택
  • 1단계에서는 로드 밸런서 이름과 ip 주소 유형으로 ipv4를 선택, 리스너로는 HTTP가 선택되었는지 확인
  • 가용 영역 파트에서 VPC를 선택하고 가용 영역을 체크하여 서브넷들을 선택
  • 단계 3 보안 그룹 구성에서 새 보안 그룹 생성 선택하고 이름과 설명을 작성한 후 HTTP 유형의 위치 무관(소스)를 선택
  • 단계 4 라우팅 구성에서 이름을 작성하고 인스턴스를 대상으로 하는 HTTP 프로토콜로 설정
  • 단계 5 대상 등록에서 두 개의 인스턴스를 선택하고 등록된 항목에 추가
  • 검토 및 생성
  • 보안 그룹 메뉴 → 인바운드 규칙 편집
  • 로드밸런서의 트래픽만 받을 수 있도록 소스 부분에서 사용자 지정 → 로드 밸런서 보안 그룹을 선택
  • 밑의 HTTP 규칙을 삭제
  • 로드밸런서가 active로 상태가 변하면 DNS로 접속 해 보기