180531 AWSomeday online conference 요약
세션1. AWS 소개 및 AWS의 역사
세션2. AWS 인프라스트럭처 소개 - 컴퓨팅, 스토리지 및 네트워킹
세션3. AWS 보안 및 AWS IAM
세션4. 데이터베이스
세션5. AWS 배포 및 관리 서비스
by 정도현, 안준필 강사님.
좀더 실용적인 내용은 아래 링크를 참고하자.
http://www.pyrasis.com/private/2014/09/30/publish-the-art-of-amazon-web-services-book
세션1. AWS 소개 및 AWS의 역사
:: Amazon Web Services의 커버리지
스토리지 / 개발 및 관리 도구 / 분석 / 콘텐츠 전송 / 메시징 / 앱 서비스 / 컴퓨팅 / 데이터베이스 / 결제 / 모바일 / 네트워킹 / 온디맨드인력 / VPC
:: 클라우드?
클라우드 플랫폼에서 다양한 IT 리소스를 인터넷으로 제공하고 사용한 양만큼 비용을 지불하는 모델. 원하는 때 원하는 만큼 자원을 사용. 전기회사가 전기를 공급하는 것과 유사하다. AWS는 개발자와 서비스 사업자를 위한 Building 블럭을 제공. AWS를 이용하여 확장 가능하고 정교한 애플리케이션을 구축할 수 있다.
:: 왜 AWS를 사용해야 하는가?
1. 확장, 그리고 축소에 대한 민첩성
2. 비용절감 (자본비용 > 가변비용)
- 규모의 경제로 얻게되는 이점
- 데이터 센터 운영 및 유지 관리에 비용 투자 불필요
3. 탄력성 (시설 과잉 설치 > 실제 필요한 만큼만 리소스를 갖춤)
- 용량 추정 불필요
4. 기능성의 폭 (타 클라우드 플랫폼과 차별성.)
5. 글로벌 서비스 (세계 곳곳에 배치된 리젼과 가용역역. 몇 분 안에 전 세계 배포 가능)
*** 기존(온프레미스) 환경 대비 최악의 상황을 고려한 프로비저닝을 하지 않아도 된다. 관리 장비와 이를 관리하는 인력에 대한 비용을 줄일 수 있다.
:: AWS 기반 시스템 구축을 위한 일곱가지 모범 사례
1. 장애를 감안한 디자인
2. 소결합 적용
3. 탄력성 구현
4. 모든 계층에서 보안 설정.
5. 여러가지 제약에서 벗어나기.
6. 모든 것을 병렬적으로 생각하기
7. 다양한 스토리지 옵션을 적용.
:: AWS가 제공하는 서비스의 구분
서비스의 성격에 따라 색상으로 특징하였음. 예를 들면 컴퓨팅, 네트워크는 주황색, 스토리지 서비스는 빨간색으로 구성되는 식임. 'Amazon'으로 시작하는 서비스는 주 재료에 해당하고, 'AWS'로 시작하는 서비스는 보조재료, 마지막으로 아무것도 안붙는 서비스는 Amazon EC2 하부 서비스로 보면 된다고 함.
:: AWS 리전과 가용영역
. 리전 - 지리적 위치. 2개 이상의 가용 영역(AZ)로 구성됨.
. 가용영역 - 데이터 센터의 클러스터, 다른 가용 영역의 장애로부터 격리된다. 다중 AZ를 통해 장애에 대한 고 가용성을 보장함.
* 클러스터링된 가용영역의 집합이 리전.
* 모든 서비스를 모든 리전에서 사용할 수 있는 것은 아니라고 함.
* 엣지 로케이션 - Amazon Route 53, Amazon CloudFront 서비스를 주로 지원하는 로컬 지점.
:: AWS 사용하는 세가지 방법
. AWS Management Console - GUI 기반. ID/PW 인증.
. CLI - Access Key 기반 인증
. SDK - 프로그래밍 레벨의 언어 라이브러리로 접근
세션2. AWS 인프라스트럭처 소개 - 컴퓨팅, 스토리지 및 네트워킹
:: Amazon EC2
. 요구 사항에 따라 컴퓨팅 파워를 조정 가능한 가상화 서버 인스턴스
. 사용한 만큼만 지불한다.
. 새로운 서버 인스턴스 확보 및 부팅 시간을 수 분으로 단축.
. 안정성을 위해 여러 리전과 가용 영역에 걸쳐 배포됨 또는 배포되는 것을 권장.
*** AWS Lambda라는 FaaS도 있다. 이건 아예 서버리스한 구성으로 노출시킨 Function에 대한 호출 비용만 지불하면 된다.
*** Amazon Lightsail이라는 서비스도 있는 것 같다. 간편한 웹 및 애플리케이션 서버 관리에 쓰인다고 하는데 살펴봐야 함. 저렴한게 강점인듯. Amazon ECS는 관리형 컨테이너 서비스로 뛰어난 확장성과 성능을 제공한다.
:: Amazon EC2 시작
1. 리전을 정함
2. 사전 구성된 AMI에서 Amazon EC2 인스턴스 시작
3. CPU, 메모리, 스토리지, 네트워크 요구사항에 따라 인스턴스 유형 선택
4. 네트워크, IP주소, 보안그룹, 스토리지볼륨, 태그, 키페어를 구성.
:: AMI (Amazon Machine Image)
일종의 템플릿. 리전, 운영체제, 아키텍처(32bit or 64bit), 시작 권한, 루트 디바이스용 스토리지를 기준으로 AMI를 선택하면 됨. AMI는 OS, 애플리케이션 및 구성에 해당. 실제 실행되고 중지되는건 EC2 instance.
:: EC2 인스턴스 종류
컴퓨팅 파워 우선, 메모리 우선, 스토리지 우선, 그리고 범용 컴퓨팅 등 목적에 맞게 인스턴스가 세분화되어 지원됨. 컴퓨팅은 C, 범용 컴퓨팅은 M이 붙는 식.
. 컴퓨팅 (C4, C3) - 고성능 프론트 엔드, 비디오 인코딩
. 메모리 (R3) - 고성능 데이터베이스, 분산 메모리 캐싱
. 스토리지 (I2, D2) - 데이터 웨어하우징, 로그 또는 데이터 처리 애플리케이션
. GPU (G2) - 3D 애플리케이션 스트리밍, 기계학습
. 범용 (T2, M3, M4) - 트래픽이 적은 웹 애플리케이션, 소형 및 중형 데이터베이스
* 인스턴스 메타데이터를 가져와 실행 중인 인스턴스를 구성 또는 관리하는데 사용할 수 있다.
:: EC2 구입 옵션
*** 확실치 않음
. 온디맨드 인스턴스 - 시간당 비용 지불. (초당 과금 기본)
. 예약 인스턴스 - 사용 시간을 지정하고 사용. 선 결제.
. 예정된 인스턴스 - 일정 기간에만 사용할 경우. (트래픽이 몰리는 걸 예상 가능할 때 쓰는 모델인듯)
. 스팟 인스턴스 - 일종의 입찰 형식으로 사용하는 모델인듯
. 전용 호스트 - 물리적 호스트가 전적으로 인스턴스 실행에 사용되는 모델.
:: Amazon S3
. 인터넷을 위한 스토리지, 데이터 객체에 대한 HTTP/S 엔드포인트를 제공함. (표준 REST / SOAP 인터페이스 제공)
. 웹에서 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있다.
. 데이터는 버킷 내 객체로 저장된다. 버킷 크기와 버킷 내 객체는 무제한.
. 객체는 최대 5TB.
. AWS SDK 통한 암호화 지원.
. S3는 CAP에서 가용성과 파티션 내성에 중점적. 데이터 Upload / Delete 즉시에는 수정 전 데이터를 참조할 수도 있음.
* 일반 사용 시나리오: 스토리지 백업, 정적 호스팅, 미디어 호스팅, 소프트웨어 전송, AMI 및 스냅샷 저장 등 // 여러 서버에서 공용으로 쓰는 파일을 S3에 올려서 SDK와 URL로 엑세스하는데 주로 쓰임.
* 스토리지 요금, 요청 요금, 데이터 전송 요금을 기준으로 과금됨.
:: 버킷과 버킷에 저장되는 데이터 객체
객체는 파일과 파일을 설명하는 메타데이터로 구성. 계정당 100개의 버킷 보유 가능하고 버킷 및 버킷 내 객체에 대한 access 제어가 가능함. 각 객체는 버킷 내 고유 식별값인 객체 키를 갖는다. 버킷의 버전 관리를 활성화 하면 객체에 대한 버전 관리가 가능하여 특정 버전으로 손쉽게 롤백할 수 있음.
:: S3 객체 수명 주기
객체의 특성에 따라 나뉘게 되는 수명 주기에 대한 객체 관리 방법을 지원함. 최근에 생성된, 자주 참조되는 데이터는 '핫' 데이터. 핫 데이터에 대한 참조가 적어지거나 시간이 경과하면 콜드 데이터로 분류. 특정 데이터를 특정 기간 이상 지나면 삭제하거나 다른 영역으로 이동.
:: Amazon Glacier
. 아카이빙 목적의 저렴한 장기 보관 서비스
. 자주 엑세스하지 않는 데이터에 최적.
. 3~5시간의 검색시간. (객체 복원 시간이 포함되어 느림)
. 월별 GB당 0.01달러 수준.
:: Amazon EBS (Elastic Block Store)
. 일관적이고 짧은 지연 시간의 성능을 제공하는 영구적 블록 레벨 저장장치
. 가용 영역 내에서 자동으로 복제된다.
. 스냅샷을 Amazon S3에 안정적으로 저장함.
. EBS 지원 EC2 인스턴스만 중지 > 가동이 가능. (잘 이해는 안감.)
* EBS를 사용하면 EC2인스턴스의 수명주기와 데이터 스토리지의 수명주
기를 분리할 수 있음. (EC2 인스턴스 스토어는 휘발성이라 함. 인스턴스 스토어에 저장된 데이터는 인스턴스가 활성화되어 있는 동안만 유지. EBS는 영구적. EC2를 삭제해도 EBS는 다른 EC2에 붙일 수 있다고 하는데 확실한 건 아님.)
* 일관적 짧은 지연 시간의 성능을 제공하는
영구적 블록 레벨 저장장치. 가용 영역 내에서 자동 복제된다.
:: EBS vs S3
EBS는 일반적으로 디스크 드라이브 용도. S3는 온라인 스토리지. EBS는 프로비저닝한 만큼 과금. S3는 사용한 만큼 과금됨. S3는 한번 쓰고 여러 곳에서 여러 번 읽는 용도.
:: Amazon VPC
. 가상 네트워크를 프로비저닝 함. 가상 네트워크 환경을 제어할 수 있음.
. 선택한 IP 주소 범위(서브넷)에서 AWS 리소스를 시작할 수 있고,
인터넷으로 액세스 할 수 없는 리소스에 대한 프라이빗 서브넷. (일종의 내부망. Public NAT 게이트웨이 통해 외부 데이터를 가져올 수 있긴 함.)
인터넷으로 액세스할 수 있는 리소스에 대한 퍼블릭 서브넷으로 구분. (퍼블릭에 ELB, 프라이빗에 WAS 배치.)
* 각 서브넷은 하나의 AZ 내에 모두 상주해야 하며 다른 영역으로 확장 불가함.
:: ACL (네트워크 엑세스 제어 목록)
인바운드 아웃바운드 필터링. Amazon EC2의 방화벽 역할을 한다.
세션3. AWS 보안 및 AWS IAM
:: SSL 엔드포인트
. SSL / TLS을 이용해 보안 통신 세션(HTTPS) 구축
:: 보안 그룹
. 보안 그룹을 사용하여 인스턴스에 대한 방화벽 규칙 구성
:: VPC
. VPC에서 리소스 액세스에 대한 low level의 네트워킹 제약 조건을 생성.
. 퍼블릭, 프라이빗 서브넷에 따른 리소스 접근 설정
:: 멀티 티어 보안 그룹
웹 티어, 애플리케이션 티어, 데이터베이스 티어를 나누고, 계층 단계로 티어끼리의 연결 설정 가능.
:: IAM (Identity and Access Management)
. AWS IAM 사용자 및 액세스 관리
. AWS IAM 역할 및 권한 관리
. 자격 증명 연동 사용자 및 권한 관리
. IAM은 모든 AWS 리소스에 접근하기 위해 최초로 접근되는 포털 게이트웨이 영역
. AWS 계정과 달리 IAM은 인스턴스 레이어의 접근을 위한 계정.
* 그룹과 사용자에 따라 권한 부여. JSON 형식으로 정책이 기술되어 있다. 별도로 IAM 역할이라는 개념이 있는데, expire time이 있는 휘발성 개념의 롤임. 특정 시기와 특정 시점에만 영역 밖의 권한이 필요할 때 임시로 사용되는 형태라 한다. IAM 역할에는 연결된 자격 증명이 없음. IAM 사용자, 애플리케이션 및 서비스는 IAM 역할을 맡을 수 있다고 하는데 듣기만한거라 그런지 잘 이해는 안감.
* 자격 증명을 공유하기보다는 역할을 사용하여 위임.
* 불필요한 사용자와 자격 증명을 제거하는 방향으로.
세션4. 데이터베이스
:: Amazon RDS
. 비용 효율적이고 크기 조정 가능한 용량 (간편하고 빠른 배포, 확장)
. 시간 소모적인 데이터베이스 관리 작업을 AWS가 해준다. (관리 부담을 최소화)
. 다양한 관계형 DB 엔진을 제공함.
. SSL 연결, 암호화 등의 보안 기능을 제공함.
* 비즈니스 프로세스 중심의 앱
* 복잡한 쿼리, 조인 및 업데이트
* 클러스터링, 파티션, 샤딩으로 극복
:: DB 인스턴스
. DB 인스턴스는 Amazon RDS의 기본 빌딩 블록.
. DB 인스턴스는 클라우드에 있는 격리된 데이터베이스 환경으로 사용자가 생성한 여러 데이터베이스가 포함될 수 있다.
. 자동 백업이 기본 활성화 되어 있으며 최대 35일까지 보존기간 선택 가능.
. 수동 스냅샷 기능 또한 제공. Amazon S3에 저장된다.
:: Amazon RDS 모범 사례
1. 메모리, CPU, 스토리지 사용량을 모니터링 한다.
2. 다중 AZ 배포를 사용해 다른 가용 영역에 동기식 대기 인스턴스를 자동으로 프로비저닝하고 유지한다.
3. 자동 백업을 활성화 한다.
4. 일일 쓰기 IOPS가 낮을 때 백업 기간이 되도록 설정한다. (
*IOPS: Input/Output Operations Per Second, 저장 장치 벤치마크 성능 측정 단위)
5. I/O 용량이 높은 DB 인스턴스 클래스로 마이그레이션 하며 표준 스토리지에서 프로지버닝된 IOPS 스토리지로 변환한다.
6. 처리량 용량을 추가로 프로비저닝한다.
7. 클라이언트 애플리케이션이 DB 인스턴스의 DNS 데이터를 캐시하는 경우 TTL을 30초 미만으로 설정한다.
8. DB 인스턴스에 대한 장애 조치를 테스트 한다.
:: Amazon DynamoDB
. 완전 관리형 No SQL 데이터베이스 서비스.
. 어떤 양의 데이터든 제한없이 저장 가능. SSD를 사용해 빠르고 예측 가능한 성능.
. DynamoDB에 저장되는 객체는 파티션 키과 정렬 키를 기본 키로 갖는다.
* 적은 용량의 읽기 및 쓰기를 다수 수행하는 경우 적합.
* 범위 쿼리, 단순 데이터 모델, 트랜잭션
// 물론 관리형 서비스 말고 사용자가 자체적으로 원하는 AMI에 데이터베이스를 직접 설치해 운영할 수도 있다.
세션5. AWS 배포 및 관리 서비스
:: Auto Scailing
. Amazon EC2 용량을 조정. (도커 컨테이너, AWS DB 등도 포함.) 사용량 변화가 많은 애플리케이션에 적합하며
추가 요금없이 사용할 수 있다.가용성을 향상시키고 비용 관리 측면에서 이점이 있다. Auto Scailing 그룹으로 최소 크기, 최대 크기에 대한 EC2 인스턴스 모음을 구성한다.
. Elastic Load Balancing과 CloudWatch와 함께 동작함.
:: ELB (Elastic Load Balancing)
트래픽을 가용 영역에서 여러 인스턴스에 분산시켜줌. 특정 인스턴스 헬스체크에 실패하면 해당 인스턴스를 Auto Scailing 그룹에서 제외시키고 재가동 시킨다.
* Classic load balancer: TCP와 HTTP Layer 4에서의 트래픽 분석
* Application load balancer: Layer 7에 기반한 애플리케이션 레이어의 트래픽 분석 (컨테이너 기반에 유리하다함)
:: Cloud Watch
. Auto Scailing 정책 실행 주체로 Auto Scailing 그룹의 확장과 축소 시점을 판단한다.
. AWS에서 실행하는 AWS 클라우드 리소스와 애플리케이션에 대한 모니터링 서비스. 운영 성능 등에 대한 가시성 제공, 이벤트 기반의 룰 설정 기능 제공.
. CPU 사용량 등의 Limit을 걸어놓고 경보를 발생시킬 수 있다. 이를 기준으로 SMS / 메일 등의 메시징 발신이나 Auto Scailing을 진행함.
- 이상 AWS 한번도 안써본 유저의 AWSomeday 후기. 잘못된 내용 있으면 알려주세요.