AWS Lambda란
서버리스 컴퓨팅 서비스 Lamda
AWS Lambda(Lambda) : 서버리스 컴퓨팅 서비스이다.
Lamdba의 장점
Lambda와 비교한 EC2의 장점.
함수 생성 및 실행
Lambda에서는 함수의 단위로 프로그램 코드를 관리하고 처리한다. 함수를 화면상에서 생성해 프로그램 코드를 쓰는 것만으로도 실행할 수 있다. 단, 화면상에서 편집할 수 있는 코드는 파이썬이나 Node.js등 컴파일이 불필요한 일부의 언어만 해당한다.
AWS Lambda의 실용적인 사용법
AWS Lambda는 다른 서비스와 연계해 사용
Lambda는 입력받은 데이터를 처리하기도 하지만 다른 AWS서비스와 연계해 사용자 접속이나 데이터 연동과 같은 처리를 자동으로 수행 할 수도 있다.
**Amaszon API Gateway(API Gateway) - 서버리스 서비스이므로 사용자는 서버를 구축하지 않고도 웹 응용 프로그램을 만들 수있다.
S3에 데이터를 저장할 때 자동 처리
Amazon S3(S3)에 데이터가 저장되면 저장된 데이터를 Lambda로 자동 처리할 수 있따.
주기적으로 Lambda 함수 실행
주기적으로 정해진 시간에 어떤 처리를 하고 싶다면 Amazon EventBridge(EventBridge)라는 서비스와 Lambda를 연계해 구형할 수 있다.
매일 정해진 시간에 EC2를 중지하거나 시작하는 작업도 가능하다.
AWS Lambda 추가 설정 및 모니터링
Lambda의 실행 환경은 일반적으로 AWS측에서 관리하므로 사용자는 특별히 서버 설정에 관여하지 않아도 되지만
위의 3가지는 사용자가 변경할 수 있다.
Lambda는 다른 AWS자원을 조작하기 위한 목적으로 사용되는 경우가 많지만, 처음 Lambda함수를 만들면 다른 서비스에 대한 조작 권함을 따로 부여해야 한다.
컨테이너란
컨테이너란?
가상서버 VS 컨테이너
가상서버
- 1대의 물리 서버에서 복수의 가상 서버가 동작한다.
- 가상 하드웨어 위에 OS, 미들웨어가 설치돼 그 위에서 프로세스가 실행된다.
컨테이너
- 1개의 물리 서버에 여러 컨테이너가 동작한다.
- 서버의 OS와 물리 자원은 각 컨테이너가 공동으로 이용한다.
- 각 컨테이너는 네트워크가 분리돼 있지만 외부 네트워크와읭 통신이나 컨테이너 간 통신을 할 때 컨테이너 런타임을 통해 이루어 진다.
컨테이너 이미지: 어떤 응용 프로그램을 실행할지 미리 정의해두는 파일
가볍고 빠른 컨테이너
컨테이너 내에 포함된 것이 적음.
가상 머신과 비교해 빠르게 시작됨. : 컨테이너 자체가 직접 응용 프로그램을 실행함.
OS에 대한 오버헤드가 없기 때문에 가상서버보다 처리 속도가 빠르다.
배포의 용이성
** 컨테이너는 기본적으로 '완성된 이미지'이므로 컨테이너가 종료되면 안에 저장된 내용이 사라진다. 컨테이너가 실행될 포스트 서버의 디렉터리를 마운트해서 작업 내용을 저장하는 등의 처리를 해야한다.
컨테이너 오스트레이션
컨테이너 관리를 자동화해 운영부하를 줄일 수 있다.
Amazon EC2란
AWS의 컨테이너 오케스트레이션 서비스
AWS에서 컨테이너 시스템을 구축하는 경우
Amazon Elastic Container Service(ECS)
Amazon Elastic Kuybernetes Service(EKS)
위의 둘 중에서 선택할 수 있다.
-> 두 서비스의 가장 큰 차이점은 컨테이너 오케스트레이션 기능을 AWS가 담당하느냐, 쿠버네티스(Kubernetes)가 담당하느냐다.
ECS
: AWS의 관리형 컨테이너 오케스트레이션 서비스
: AWS에 오케스트레이션 도구를 구축하고 관리하는 것을 모두 맡길 수 있다.
-> Amazon Elastic Container Registry(ECR)라는 컨테이너 이미지레지스트리 서비스도 제공한다.
-> 사용자 정의된 컨테이너 이미지를 AWS에서 관리할 수 있고 ECS에도 쉽게 배포할 수 있다.
ECS
컨테이너 배포, 상태 모니터링. 스케일링 관리, 작업 정의를 기반으로 설정된 컨테이너의 상태와 수를 유지한다.
ALB
ALB(Application Load Balancer)와 연결된 태스크의 집합체를 서비스로 정의 한다.
EC2와 Fargate
ECS를 이용해 컨테이너를 기동할 떄 어떤 플랫폼에서 시작할지 선택할 수 있다.
EC2 :
- EC2 인스턴스 내에서 실행되는 컨테이너 런타임에서 컨테이너를 실행하는 타입.
- 사용자가 컨테이너 런타임이 실치된 서버(EC2 인스턴스)를 관리해야함.
- CPU/메모리를 늘리고 싶다면 인스턴스 타입을 적절한 것으로 변경하고, 스토리지를 늘리고 싶다면 스토리지(EBS)의 볼륨 크기를 확장하면 된다.
AWS Fargate(Fargate) : AWS에서 관리하는서버에서 컨테이너를 실행함.
- 컨테이너 런타임, OS 버전업과 같은 서버 관리를 AWS에서 하므로 사용자는 컨테이너 이미지만 관리하면 된다.
- CPU와 메모리를 직접 할당 할 수 있다. 하지만 지정한 CPU값에 따라 할당할 수 있는 메모리 크기가 정해져 있따.
- 스토리지는 사전에 Fargate 태스크 스토리지로 태스크 실행 시 할당 되며 할당량은 PV에 따라 다르다.
Fargate의 장점
주요특징 AWS에서 서버를 관리한다는 점
-> 유지보수작업은 AWS에서 담당하므로 편하게 ECS를 사용할 수 있다.
쿠버네티스를 보다 쉽게 사용할 수 있는 서비스
기타 컴퓨팅 서비스
AWS Lightsail
✔ 일반적으로 자주 사용되는 구성의 가상 서버를 수비고 빠르게 구축하기 위한 서비스
✔ 여러 인스턴스를 만들면 자동으로 로드 밸런싱을 해주거나 SSL/ TLS인증서를 통한 통신 암호화도 대응한다.
➖ EC2에서 구축할 때와 같이 미들웨어 버전을 고려해 설치하거나 ELB를 이용해 유연한 부하 분산을 설정하는 등의 자유도는 없다.
✔ Lightsail로 서버를 구축 후 조금 더 다양한 기능을 자유롭게 사용하고 싶다면 EC2로 마이그레이션을 하면 된다.
AWS Elastic Beanstalk
✔ JAVA, .NET, PHP, Python, Ruby, Go, Docker와 같은 주요 언어나 환경에서 개발된 응용 프로그램을 배포하기 위한 실행 환경을 자동으로 만들어주는 서비스다
AWS App Runger
✔ 컨테이너화된 응용 프로그램을 손쉽게 배포하는 서비스.
AWS Batch
✔ 지정된 프로그램을 EC2나 Fargate에서 실행하는 서비스다.
✔ Lambda와 똑같아 보이지만 실행 프로그램의 순서 관리나 다수 프로그램의 병렬 구동과 같은 복잡한 제어에 특화된 서비스다.
AWS OutPosts
✔ 사용자가 온프레미스 환경에서 AWS와 같은 서비스를 실행할 수 있또록 AWS가 물리 서버를 대여하는 서비스
-> AWS를 프라이빗 클라우드와해서 제공하는 서비스
✔AWS Outposts를 AWS의 새로운 가용영역으로 사용 할 수 있다.