24년 12월 10일부터 공부 시작하며 정리해보는 글.
AWS Cloud Practitioner Essentials은 무료로 볼 수 있는 7시간 분량의 기본 강의이다.
Module 1
Client-Server Model
- client는 웹 브라우저, 데스크탑 애플리케이션 등이 될 수 있고, 사용자와 상호 작용을 하며 server로 요청을 보낸다.
- server는 요청한 리소스를 응답으로 제공하게 되고, AWS에서는 virtual server인 Amazon Elastic Compute Cloud (Amazon EC2)가 해당 역할을 수행할 수 있다.
Cloud Computing
- Cloud Computing Deployment Model
- Cloud-Based Deployment
- app의 모든 파트가 cloud에서 동작
- app을 cloud로 마이그레이션
- 새로운 app의 설계 및 구축을 cloud 환경에서
- On-Premises Deployment
- (a.k.a.) private cloud delpoyment
- 레거시 IT Infra가 전부 On-Premises로 이루어진 편이다.
- Hybrid Deployment
- On-Premises 인프라를 Cloud-Based로 연결하게 구성
- 레거시 IT app들을 Cloud-Based 리소스와 상호작용 시키기 등
- Benefits
- (fixed) upfront expense → variable expense
- data center 구축, 운영 비용의 절감
- infra의 capacity를 사전 계산 및 제한하며 운영할 필요가 없음
- scale이 커질 수록 경제적 이득을 볼 수 있음
- 시스템/서비스의 flexibility(유연성) 커지고 agility(속도)도 좋아짐
- 글로벌 서비스에 최적화한 환경을 가질 수 있음 (low latency)
Module 2
Amazon EC2
the servers you use to gain access to virtual servers
- 특징
- highly-flexible
- cost-effective
- quick
Amazon EC2 Instance Types
General Purpose
- 균형 있는 컴퓨팅, 메모리, 네트워크 리소스 등...
- application/gaming/backend server, small ~ medium database server...
Compute Optimized
- high-performance processor
- workloads that require processing many transactions
Memory Optimized
- high-performance database
- workloads that process large datasets in memory
Accelerated Computing
- graphic processing, data pattern matching, streaming...
- acceleraters or coprocessors, CPU 가속화
Stroage Optimized
- file system, data warehousing, OLTP system...
Amazon EC2 Pricing Options
On-Demand Instances
- for short-term, irregular workloads
- no upfront costs or minimum contract
Reserved Instances
- Standard Reserved Instances
- 구체적으로 결정해야 하는 spec
- Instance (family) type and size
- Platform description (operating system)
- Tenancy (default or dedicated)
- Region
- Convertible Reserved Instances
- contract 1 year or 3 years
EC2 Instance Savings Plan
reduce EC2 instance costs when you make an hourly spend commitment to an instance family and Region for 1 or 3 year term.
Instance 타입과 지역에 대한 1/3년 시간당 지출 약정할 때 할인 제공해주는 옵션.
Spot Instances
- Amazon EC2 computing capacity가 있을 때 요청 및 작업이 이루어지는 Instance.
- 시작 및 종료 시점이 유연하거나 중단 및 지연이 발생해도 괜찮은 경우 적합.
Dedicated Hosts
- virtual private cloud (VPC)에서 동작되는 인스턴스로, 한 고객에게만 제한되어 제공된다.
- 실제 하드웨어를 공유하여 쓰는 다른 옵션들과 달리, 가장 비싼 옵션...
Amazon EC2 Auto Scaling
AWS 서비스는 Amazon EC2 인스턴스가 자동적으로 요청에 따라 scale in/out하도록 하고 그에 대한 사용량만 부과하도록 제공하고 있다.
Availablity는 유지하되 Unused capacity가 생기지 않게 하고 Demand에 맞게 인스턴스 수를 조절하며 리소스를 낭비하지 않고, 비용도 절감할 수 있게 된다.
Auto Scaling에는 두 가지의 접근 방식이 있고, 두 방법을 모두 사용할 수도 있다고 한다.
Amazon ELB
Amazon ELB = Elastic Load Balancing
애플리케이션의 요청을 다중 리소스(Amazon EC2 인스턴스)에 자동으로 분배하여 전달하는 것을 말한다.
Load Balancer가 Auto Scaling Group에게 들어오는 웹 트래픽을 single point로써 받는다. 요청을 분배하여 핸들링하는 역할을 수행한다.
Auto Scaling과 Elastic Load Balancing은 분리된 다른 서비스이지만 같이 동작시켰을 때 성능이나 가용성을 굉장히 높일 수 있다.
Elastic Load Balancing은 어떤 과정으로 이루어질까?
- Low-demand period: 들어오는 요청들을 Auto Scaling Group 내 인스턴스에 분배한다.
- High-deman period: 그러다가 client 수 및 리소스 요청의 수가 늘어날 경우 Auto Scaling Group의 인스턴스도 증가할 수 있다. Load Balancer가 새로 연결된 인스턴스에게도 요청을 분배하는 것이다. End-to-End에선 Load Balancer를 통해 요청과 응답을 주고 받기 때문에 그대로다.
Messaging and Queuing
- Monolithic application. tightly coupled component architecture. DB, 서버, 유저 인터페이스 등 구성 요소가 강하게 결합되어 있다. 특정 컴포넌트의 오류로 전체 시스템의 동작 및 운영에 오류가 생길 수 있다.
- Microservices. loosely coupled component architecture. 시스템이 일부 애플리케이션, 인스턴스의 오류가 생겨도 정상적으로 운영될 수 있다.
Amazon SQS
- SQS = Simple Queue Service
- send/store/receive messages by buffer.
Amazon SNS
- SNS = Simple Notification Service
- publish-subscribe model.
- Amazon SNS topic을 사용해 메시지를 퍼블리싱, 구독한다.
- 구독자의 역할은 web server, AWS Lambda function 등이 될 수 있다.
Serverless computing
EC2는 가상의 서버를 cloud에서 구동시켜 사용하는 서비스. 만약 EC2를 이용해 애플리케이션을 운영한다면,
- EC2 인스턴스를 세팅한다.
- 애플리케이션 코드를 업로드한다.
- 애플리케이션을 동작시킨 후 관리한다.
여기서 serverless란 코드를 서버에 올려 동작을 시키되, 직접 가상 서버에 대한 프로비저닝 등의 작업을 하지 않아도 되는 것을 말한다.
서버에 대한 유지, 관리 뿐 아니라 capacity에 따른 유동적인 조치도 알아서 한다.
serveless computing으로써 제공되는 AWS Service가 AWS Lambda이다.
AWS Lambda
- without needing to provision or manage servers.
- 비용은 실제 코드가 동작한 compute time에 대해서만 부과된다.
- 15분 이하가 소요되는 짧은 프로세싱에 적합하다.
- How AWS Lambda works
- Upload code to Lambda.
- Set code to trigger from an event source, such as AWS service, mobile applications, or HTTP endpoints.
- Code runs only when triggered.
- Pay only for the compute time you use.
Containerized application
Container: A package for your code.
특정 애플리케이션 코드, dependencies 등을 하나의 분리된 object로 패키징한 개념이다. 하나의 host(server)에 애플리케이션들이 독립되고 구분된 환경으로 동작하게 된다.
Amazon ECS = Elastic Container Service
- a highly scalable, high-performance container management system.
- surpports Docker containers.
Docker
애플리케이션의 build, 테스트, 배포하는 소프트웨어 플랫폼.
Amazon EKS = Elastic Kubernetes Service
- AWS 상에서 쿠버네티스를 사용할 수 있게 전체적으로 관리 가능한 서비스.
Kubernetes
containerized application deployment/management software.
AWS Fargate
- serverless compute engine for containers.
- Amazon ECS/EKS와 함께 동작된다.
- AWS Fargate를 쓰면 서버의 프로비저닝, 관리를 하지 않아도 된다. 서버 인프라를 관리해준다.
Module 2 Summary: Keywords
- Cloud Computing
- Amazon EC2
- Amazon EC2 Instance Family
- General purpose
- Compute optimized
- Memory optimized
- Accelerated computing
- Storage optimized
- Amazion EC2 Auto Scaling
- ELB = Elastic Load Balancing
- Amazon EC2 Billing Options
- On-Demand
- Spot instance
- Reserved instances
- saving plans
- Amazon SQS = Simple Queue Sercice
- Amazon SNS = Simple Notification Service
- Amazon ECS = Elastic Container Service
- Amazon EKS = Elastic Kubernetis Service
- AWS Fargate
- AWS Lambda