2021/09/30 에 있었던 AWSome Day 컨퍼런스의 내용을 요약한 글 입니다. 해당 글의 모든 사진의 출처는 AWS 입니다.
강의 2 : AWS 클라우드 핵심 서비스 소개 - 컴퓨팅
우선 그 유명한 EC2에 대해 살펴보는것으로 시작했다.
사용자가 EC2를 런칭할때 인스턴스 패밀리와 Size를 선택할 수 있습니다.
인스턴스 패밀리는 고객의 워크로드에 대해 컴퓨팅 타입을 분류한 것으로서 범용, 컴퓨팅 최적화, 메모리 최적화, 가속화된 컴퓨팅, 스토리지 최적화 등이 있습니다.
Size 에는 예시로 Small은 2Core의 vCPU, 4GB Memory, Medium은 4Core vCPU, 8GB Memory등이 있다.
즉, 사용자가 원하는 컴퓨팅 유형, 사이즈를 선택할수 있으며, 운용 도중에도 변경이 가능합니다.
새로운 서버 인스턴스 확보 및 부팅 시간 단축도얻을수 있다.
EC2는 장애 발생시 복원력이 뛰어난 애플리케이션을 구축하고, 일반적인 장애의 상황으로부터 애플리케이션을 격리하는 도구를 제공합니다.
● 가상 머신과 물리적 서버의 비교
AWS에서는 서버, 데이터베이스, 스토리지 및 상위 애플리케이션 구성요소를 몇분안에 인스턴스화 할수있습니다.
기존의 물리적 서버는 트래픽, 부하의 변화에 따라서 이를 탄력적으로 대응할수 없기때문에 오버 프로비저닝을 하게됩니다.
=> 즉, 컴퓨팅 자원이 효율적으로 사용되지 않습니다.
(프로비저닝(provisioning)은 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다. )
AWS클라우드에서 EC2 인스턴스는 1회용 리소스로 취급됩니다.
사용자는 EC2 인스턴스를 프로비저닝 하고, EC2 인스턴스에 데이터를 저장하지 않습니다.
모든 정보는 외부에 저장해 EC2 인스턴스를 일종의 Stateless하게 관리할 수 있게됩니다.
이렇게 Stateless하게 관리하면 EC2 인스턴스는 기능만 하게 되니 인프라를 탄력적으로 확장 및 축소가 가능합니다.
또한 EC2인스턴스의 부하를 CloudWatch라는 모니터링 서비스로 모니터링 하고 데이터를 기반으로 확장할수 있습니다.
EC2인스턴스를 통해 동일한 작업을 빠르게 반복하는 이점등을 가져갈 수 있습니다.
또한 안정적인 실험과 실수를 할수있는 환경이 됩니다. 실험이 실패로 끝나도 해당 리소스를 종료하기만 하면 됩니다. 다양한 환경 테스트 가능.
● Amazon EC2
Amazon EC2는 Amazon Machine Image라고 부르는 AMI를 기준으로 인스턴스화 됩니다.
AMI는 운영체제, 애플리케이션 서버, 애플리케이션 과 같이 필요한 소프트웨어 및 AMI시작 권한 등이 구성된 템플릿 입니다.
AMI에서 원하는 만큼 여러개의 인스턴스를 시작할 수 있습니다. 또한 사용자에게 맞는 AMI를 직접 구성하여 인스턴스를 만들수도 있습니다.
선택한 AMI를 기준으로 아마존 EC2인스턴스를 기동할수 있으며, 사용 유무에 따라 정지, 또는 제거를 할수있습니다.
● EC2의 이점
● EC2 인스턴스 패밀리 종류
● 비관리형 서비스와 관리형 서비스 비교
데이터베이스를 예로 들어보면
비관리형은 EC2 인스턴스에 데이터베이스를 직접 셋업하는 경우에 해당됩니다.
거의 모든것을 사용자가 관리하고 제어합니다.
관리형은 AWS가 제공하는 관리형 및 관계형 데이터베이스를 예로 들수있습니다.
관리형으로 사용할수 있는 것으로는 Amzon ECS가 있습니다.
클러스터에서 컨테이너를 쉽게 실행 중지 및 관리할 수 있게 해주는 확상성과 속도가 뛰어난 컨테이너 관리 서비스 입니다.
예를 들어 컨테이너의 수가 많아지면 모두 직접 관리하기가 어려워지는데, 이때 중간 관리자가 등장하게 됩니다.
이를 오케스트레이션 서비스 라고 하며, 퍼블릭 하게는 오픈소스인 쿠버네티스 와 같은 서비스를 활용할수 있습니다.
AWS에서는 이런 관리형 컨테이너 오케스트레이션 서비스인 ECS를 제공하고 있습니다.
클라우드의 관리형 서비스를 통해 많은 시간을 단축했지만, 여전히 어느정도는 EC2와 같은 컴퓨팅 리소스를 관리해야 합니다.
여기서 이러한 인프라를 관리하지 않고 사용할수 있다면 얼마나 좋을까요?
=> 그에 대한 답이 serverless 컴퓨팅 입니다!
● Serverless 컴퓨팅이란?
서버리스 컴퓨팅을 사용하면 서버를 생각하지 않고 어플리케이션과 서비스를 구축하고 실행할 수 있습니다.
서버리스 에서는 사용자가 서버를 프로비저닝, 확장, 관리할 필요가 없습니다.
서버리스 컴퓨팅의 큰 장점중 하나로 유휴 상태에 대한 비용을 지불할 필요가 없습니다.
기존 EC2 인스턴스와 같은 컴퓨팅 리소스와 대표적인 서버리스 컴퓨팅 서비스인 Lambda에 대해 비교해 봅시다.
예) "한시간에 한번씩 트래픽이 들어오는 서비스가 있다" 라고 가정해 보자.
EC2의 경우 해당 요청을 처리하기 위해 상시 기동되어있어야 하며 가용성을 위해 적어도 2개의 가용 영역에 하나씩 분산 배치되어 있을것 입니다. 즉 2개의 EC2 인스턴스가 작동합니다.
또한 부하의 분산을 위해서 로드밸런스를 연결해야 합니다.
반면에 람다는 가용성을 고려할 필요가 없으며, 트래픽이 들어오지 않을때는 비용이 청구되지 않습니다.
● AWS Lambda
AWS가 제공하는 대표적인 서버리스 컴퓨팅 시스템으로 lambda가 있습니다.
사용자는 AWS가 지원하는 언어, 예를 들면 Node.js, Java, Python중 하나로 코드를 제공하기만 하면 됩니다.
Lambda 함수는 코드 관련 종속성 및 구성으로 이루어집니다.
구성에는 이벤트를 수신하는 핸들러, 사용자 대신 Lambda함수를 수행하기 위해 AWS lambda가 맡을 수 있는 IAM역할, 할당할 컴퓨팅 리소스, 실행 시간 제한등의 정보가 포함됩니다.
람다 함수는 상태 비저장으로 코드를 실행합니다.
(상태비저장 : 람다함수가 호출될때만 기동되어 작업을 수행하고 그 외에는 기동되어있지 않음을 말한다)
또한 이벤트에 대한 응답으로 Lambda함수를 사용할수 있습니다.
사용 예시를 살펴봅시다!
1) 사용자가 이미지를 S3에 업로드 한다. 이또한 이벤트 이다.
2) S3가 이벤트 소스가 되어 람다함수에 이벤트를 보내게 됩니다.
3) 람다함수가 S3 버켓에서 이미지를 읽어와 이미지 크기를 조정하고 대상 버킷에 저장하게 됩니다.
여기서 사용자는 인프라를 따로 프로비저닝 하거나 고가용성, 안정성을 고려할 필요가 없었습니다.
모두 서버리스 서비스로 이루어져있기 때문이다.
'DevOps > AWS' 카테고리의 다른 글
[AWS] EC2에 MySQL 설치하기 (8) | 2022.03.19 |
---|---|
[AWS] EC2 인스턴스 만들기 (0) | 2022.03.19 |
[AWS] AWS 클라우드 : 네트워크 (0) | 2022.01.25 |
[AWS] AWS 클라우드 : 스토리지 (0) | 2022.01.25 |
[AWS] AWS 클라우드 소개 (0) | 2022.01.25 |
댓글