AWS 서버리스란?
AWS 서버리스는 MSA(Microservices Architecture)에서 특정 서비스를 서버리스로 구성하는 데 유용하다. 이 방식은 개발 주기를 단축시켜 주며, 독립적이고 신속하게 업무를 처리할 수 있게 해 준다. 또한, 서비스 수요에 따라 가용성을 적절히 조절할 수 있는 확장성을 제공한다.
AWS에서 제공하는 서버리스 서비스 중 대표적인 서비스는 Lambda이다.
Lambda는 서버리스 컴퓨팅 서비스로, 서버를 프로비저닝하거나 관리할 필요 없이 코드만 업로드하면 실행할 수 있다. 반면, ECS는 Docker 컨테이너 기반으로 애플리케이션을 실행할 수 있게 해주는 컨테이너 관리 서비스다. 이 두 서비스는 사용 방식과 장점이 다르기 때문에 살펴보도록 하자.
ECS
ECS는 Docker 컨테이너를 지원하는 컨테이너 관리 서비스로, 컨테이너화된 애플리케이션을 클러스터 환경에서 효율적으로 관리하고 확장할 수 있도록 지원한다. 쉽게 말해, 컨테이너화된 애플리케이션을 클러스터 환경에서 효율적으로 관리할 수 있는 서비스다.
ECS를 사용하면, 복잡한 애플리케이션을 여러 서버에서 실행하고 관리할 때 필요한 작업들을 자동화하고, 확장성과 고가용성을 쉽게 설정할 수 있다. 이 서비스를 사용하면 컨테이너가 제대로 실행되도록 배치하고, 필요에 따라 자동으로 확장하거나 축소하는 작업도 할 수 있다.
ECS의 장점
ECS(Elastic Container Service)의 장점은 컨테이너를 효율적으로 관리할 수 있다는 점이다. Docker 컨테이너를 지원하고, 클러스터에서 자동 확장을 할 수 있기 때문에 애플리케이션의 부하에 맞춰서 서버를 확장하거나 축소하는 작업을 자동으로 해준다.
즉, 부하에 따른 리소스 조정이 가능하고, 가용성도 잘 유지된다. 또한, 복잡한 애플리케이션을 컨테이너화하여 관리할 수 있기 때문에, 멀티 컨테이너 환경에서도 큰 도움이 된다.
ECS의 단점
하지만 단점도 존재한다. 첫 번째로, 설정이 복잡하다는 점이다. 네트워크 설정, 권한 관리 등 초기 설정이 복잡해서, 처음 사용하기에는 시간이 좀 걸릴 수 있다.
또한, ECS는 비용이 좀 더 많이 들 수 있는데, EC2 인스턴스나 Fargate를 사용할 때 인스턴스 비용과 사용한 리소스에 따라 과금이 달라지기 때문이다. 이 외에도 리소스를 직접 관리해야 하므로 리소스 관리에도 신경을 써야 한다는 점이 단점이다
Lambda
Lambda는 서버리스 컴퓨팅 서비스로, 서버를 신경 쓸 필요 없이 코드만 작성하면 바로 실행할 수 있는 서비스다.
즉, 개발자는 서버를 따로 관리할 필요 없이 코드 업로드 후 바로 실행되는 방식이다.
Lambda는 무상태성(stateless)을 지닌 특성 덕분에, 요청을 처리하고 끝난 후 상태를 저장하지 않는다. 그래서 빠르고 간편하게 함수를 실행할 수 있지만, 상태를 관리해야 하는 경우 별도의 관리가 필요하다.
서버리스라는 특성 덕분에 서버를 따로 설정할 필요 없이, 비용도 적게 들고, 빠른 확장성을 자랑한다.
Lambda의 장점
Lambda의 장점은 서버를 신경 쓸 필요 없이 코드만 작성하면 된다는 점이다. 서버를 직접 설정하거나 관리할 필요 없이, 코드를 업로드하고 바로 실행할 수 있는 게 가장 큰 장점이다.
또한, 무상태성이라서 요청을 받고 처리하고 응답을 끝내면 그만이다. 그 덕분에 빠르고 간편하게 기능을 구현할 수 있다. 비용도 적게 들고, 확장성이 뛰어나므로, 갑작스러운 트래픽이 늘어도 자동 확장으로 처리할 수 있다. 또한, 짧은 시간 내에 처리 가능한 작업에 유리하다.
Lambda의 단점
하지만 단점도 존재한다. Lambda는 무상태성을 지니고 있어, 상태를 관리하려면 외부 스토리지나 인증 시스템을 별도로 구현해야 한다. 예를 들어, 사용자가 로그인 상태를 유지하려면 JWT 같은 별도의 인증 관리 시스템이 필요하다.
또한, 콜드 스타트라는 현상 때문에, Lambda 함수가 일정 시간 동안 호출되지 않으면 처음 실행될 때 기동 시간 지연이 발생할 수 있다. Lambda는 최대 실행 시간이 15분으로 제한되어 있기 때문에, 긴 시간 동안 실행되는 작업에는 적합하지 않다.
결론
ECS와 Lambda는 각기 다른 용도와 상황에 맞는 선택을 할 수 있는 서비스다. ECS는 대규모 애플리케이션이나 복잡한 시스템을 관리하고 싶을 때 유리하다. 예를 들어, 마치 큰 건물을 짓는 것처럼, 여러 개의 서버와 서비스가 함께 잘 돌아가게 하기 위해서는 ECS가 필요한 거다.
반면, Lambda는 작고 빠른 작업을 처리할 때 유리하다. 마치 간단한 일상 업무를 처리하는 것처럼, 코드만 올리면 즉시 실행되고, 서버 관리나 세팅 없이 빠르게 작업을 완료할 수 있다.
즉, ECS는 '큰 조직'을 관리하고 싶을 때 좋은 선택이고, Lambda는 '작은 프로젝트'나 단기적인 기능 구현을 빠르게 해야 할 때 훨씬 더 적합하다.
다음 포스팅엔 JWT와 토큰에 대해 포스팅으로 찾아오도록 하겠다.
'SK 루키즈 > Cloud' 카테고리의 다른 글
[Rookies 개발 2기] AWS S3 버킷 정책 오류 설정 (2) | 2025.02.23 |
---|---|
[Rookies 개발 2기] Docker를 통해 Kafka 연결하기 (2) | 2025.02.06 |
[Rookies 개발 2기] MSA와 EurekaServer 세팅 (0) | 2025.01.24 |
[Rookies 개발 2기] AWS S3 에 Spring 업로드 처리 (0) | 2025.01.23 |
[Rookies 개발 2기] S3 AWS KEY 발급 (0) | 2025.01.23 |