Launching options
Options for Launching EC2 Instances
AWS Management Console
- AWS 서비스를 시작, 구성 및 관리하는 데 사용할 수 있는 graphical user interface
AWS Command Line Interface (CLI)
- AWS 서비스를 관리하는 통합(unified) 툴
- command line에서 여러 AWS 서비스를 제공 및 제어하고 스크립트를 통해 자동화 가능
AWS Software Development Kit (SDK)
- JavaScript, Python, .NET, C++ 등 다양한 코드를 이용하여 AWS 서비스 시작 가능
Other AWS services
- AWS Cloud Formation, AWS OpsWorks, AWS Elastic Beanstalk
AWS CLI Example
AWS SDK Example
Amazon EC2 Lifecycle States
EC2 Instance Lifecycle State Flows
Scaling options
1. Vertical Scaling
수직 스케일링(vertical scaling): 트래픽 요구에 따라 EC2 인스턴스의 서버 용량을 업그레이드 또는 다운그레이드하는 과정
vertical scaling의 단계:
- 인스턴스 중지
- 인스턴스 size 또는 type을 원하는 대로 변경
- 인스턴스 시작
수직 스케일링의 단점
- Manual process 수작업공정
- 관리해야 할 인스턴스가 여러 개 있는 경우 어려움
- 인스턴스 scalability(확장성) 제한
- 변경하는 동안 인스턴스를 사용할 수 없도록 해야 함
2. Horizontal Scaling
수평 스케일링(Horizontal scaling): 트래픽 요구에 따라 Amazon EC2 인스턴스를 추가하거나 제거하는 프로세스
- Amazon EC2 Auto Scaling service를 이용하여 자동화 가능
- 컴퓨팅 작업에 필요한 만큼 인스턴스를 추가하고 더 이상 필요하지 않을 때 종료
Benefits
- fault tolerance(내결함성) 향상
- application availability(가용성) 향상
- Lowers costs비용 절감
- downtime(전원 차단 시간) 없이 구현 가능
3. Auto Scaling
Amazon EC2 Auto Scaling을 통해 애플리케이션 availability(가용성)을 유지하고 정의한 조건에 따라 EC2 인스턴스를 자동으로 추가하거나 제거할 수 있음
- specified conditions에 따라 인스턴스 실행 또는 종료
- 지정된 경우 load balancers로 새 인스턴스를 자동으로 등록
- 가용성 영역 전반에서 인스턴스 시작 가능
- unhealthy or unreachable 인스턴스를 새 인스턴스로 변경
- 조건 요구에 따라 인스턴스 수를 자동화하여 비용 절감
Amazon EC2 Auto Scaling Options
Scheduled scaling
- 스케쥴에 따라 알려진 load changes보다 먼저 애플리케이션을 확장
Dynamic scaling
- 애플리케이션의 수요 곡선(demand curve)을 면밀히 추적하여 Amazon EC2 용량을 수동으로 제공할 필요성을 사전에 줄일 수 있음
- target tracking scaling policies을 사용하여 CPU 활용률(utilization)과 같은 metric 선택 가능
Predictive scaling
- 머신 러닝을 사용하여 트래픽 변화가 다가올 것으로 예상(anticipation)하여 적절한 수의 EC2 인스턴스를 예약합
- Amazon EC2 Auto Scaling 매개변수를 수동으로 조정할 필요를 제거
Vertical Scaling Use Case
인스턴스 크기가 너무 작아 basic workload tasks(기본 워크로드 작업) 처리 불가
Scaling horizontally(인스턴스를 더 추가) 기본 처리 요구사항을 처리할 수 없는 인스턴스 문제를 해결할 수 없음
Horizontal Scaling Use Case
사용자의 인스턴스가 감당할 수 있는 것보다 더 많은 요청애플리케이션을 확장하거나 축소하는 동안 오프라인 상태여야 하므로 vertical scaling는 최선X
Traffic management
Elastic Load Balancing (ELB)
Elastic Load Balancers: 여러 대상에 걸쳐 들어오는 애플리케이션 트래픽을 자동으로 분산하는 고가용성 및 확장성이 뛰어난 AWS 서비스
ELB Options
Application Load Balancer
- load balancing HTTP and HTTPS traffic이 이상적
- request level (layer 7)에서 동작, request content 기반으로 트래픽을 타겟으로 라우팅
Network Load Balancer
- load balancing TCP and UDP traffic이 이상적
- 애플리케이션에 ultra-high performance(초고성능) 및 static IP addresses가 필요할 때 선택
- connection level (레이어 4)에서 작동
Gateway Load Balancer
- third-party virtual appliances(타사 가상 장치) deploy, scale, manage에 도움이 됨
- network level(level 3)에서 작동, 트래픽을 여러 virtual appliances에 분산하기 위한 gateway를 제공
Additional Options for Connecting to EC2
EC2 Instance Connect
- SSH를 사용하여 인스턴스에 쉽고 안전하게 연결할 수 있는 방법을 제공
- key pair 없이 유효한 사용자 이름으로 연결 가능
Session Manager
- 완벽하게 관리되는(fully-managed) AWS Systems Manager 기능
- interactive one-click, browser-based shell or AWS CLI 통해 EC2 인스턴스를 관리하는 데 사용
SSH Client
EC2 serial console
- EC2 인스턴스의 serial port (직렬 포트)에 대한 액세스를 제공
- 부팅, 네트워크 구성 및 기타 문제를 해결하는 데 사용
- 키보드 및 모니터가 인스턴스의 직렬 포트에 직접 연결된 것처럼 인스턴스에 명령 입력 가능
Cost optimization
Optimizing Instance Costs
Using the right size instance
Increasing elasticity
- 탄력적인 구축을 구현하여 쉬고있는(idle) 서버 용량을 줄일 수 있도록 deployments을 설계
- Automatic scaling
Choosing optimal pricing models
- 가격 옵션을 적절히 조합하여 EC2 인스턴스를 실행할 수 있도록 사용 패턴 분석
Optimizing storage choices
- 사용하지 않는 스토리지 오버헤드를 줄이고 요구사항을 충족하는 경우 저렴한 스토리지 옵션을 선택