완전관리형 서비스를 서버리스 컴퓨팅이라고 한다.
완전관리형 서비스라는 것은 개발자가 인프라(서버)를 직접 관리할 필요가 없다는 것이다.
- 비용효율적, 운영 효율적, 접근성과 확장성이 높다
- 코드수정이 적다
- 운영의 자동화가 가능하다
- 개발자는 그저 fuction만 배치하면 된다.
- AWS에는 Fargate, Lambda, API Gateway, Aurora Serverless 등이 서버리스다.
💡 서버리스는 직역하면 "서버가 없다"이다. 하지만 실제로는 서버가 없는 것이 아니고 특정 작업을 수행하기 위해서 컴퓨터를 혹은 가상머신에 서버를 설정하고 이를 통해 처리하는 것이 아닌 BaaS, Faas에 의존하여 작업을 처리한다는 것이다.
개발자가 원하는 작업을 람다 함수로 만들어서 람다와 통합된 특정 리소스에 data가 들어왓을 때 함수가 실행되어 원하는 작업을 수행할 수 있다.
- 개발자는 기능만 구현할 뿐 지속적으로 관리하는 것이 아니다.
-> 서버리스의 특징- EC2(서버)와 같이 지속적으로 실행되는 것이 아닌, 특정 순간에만 실행된다.
- 특정 순간에만 실행되므로 서버를 배치하는 것보다 비용효율적이다.
📌 Lambda의 최대 작업시간은 15분이다.
위 그림은 람다와 통합되어서 특정 작업을 수행할 수 있는 리소스들이다.
이해를 돕기 위해 EventBridge를 예시로 들겠다. EventBridge에 1시간 단위로 특정 이벤트를 룰로 지정하고 타깃으로 람다함수를 지정하면 특정 이벤트가 들어왔을때 1시간단위로 람다함수가 원하는 작업을 수행하게 된다.
💡 CRON Jop = 특정 시간 단위로 어떤 작업을 수행한다.
Cloudfront와 함께 글로벌 서비스로 같이 사용될 수 있다.
- Cloudfront의 Edgelocation에 배치된다.
- Cloudfront의 request를 response로 바꾸어준다.
쉽게말해 , Cloudfront의 여러 edge에는 콘텐츠들이 캐싱되어있고 사용자가 특정 콘텐츠를 요청하면, 사용자와 가까운 edge의 Lambda@edge가 Query를 통해 데이터를 찾아서 response해준다.
- Amazon의 고유한 서버리스 컨테이너 플랫폼이다.
- 주로 ECS,EKS와 함께 작동하여 컨테이너식 데이터처리 워크로드를 손쉽게 실행시키고 크기를 조정한다.
- 유연하고 이식 가능한 개발 환경을 구축한다.
Amazon의 고유한 container platform이다.
서버리스 컴퓨팅이 아니기 때문에 개발자는 반드시 인프라구조를 프로비전하고 유지 / 관리 해야한다.
ECS는 Task의 개수를 축소 / 확장하는 Auto Scailing을 한다.
💡 EC2의 Auto Scailing은 EC2의 축소 / 확장이다
- 서버리스 컴퓨팅이기 떄문에 개발자는 인프라구조를 관리할 필요가 없다.
- 개발자는 오직 Task를 정의하기만 한다.
- 워크로드가 확장되면 단순히 더 많은 작업을 정의하기만 하면 된다.
- ECS(Fargate)는 Auto scailing이 훨씬 쉽다.
Amazon의 managed Kubernetes이다. (open source)
- ECS와 API만 다를 뿐 비슷하기때문에 ECS로 대체 가능하다.
- ECS와 마찬가지로 EC2 or Fargate를 목적에 따라 Launch가능하다.
- USE CASE - 기업이 다른 Cloud나 온프레미스 환경에서 Kubernetes를 사용하고 있을 때, AWS환경에서 사용하길 원해서 migrate하고 싶을 때 사용한다.
📌 각 리전마다 EKS Cluster를 배치해야한다.
💡 Kubernetes = 보통 Docker로 컨테이너화한 어플리케이션의 자동 배치, 확장, 관리를 위한 오픈 소스 System이다 + 어떠한 Cloud에서도 사용가능하다 (ex. Azure, GCP 등)
AWS의 Docker 이미지를 저장하고 관리한다.
- Private / Public repository
- ECR이 가진 컨테이너 이미지에 대한 PULL / PUSH와 같은 Access는 IAM에서 관리한다.