Serverless / TIL

API Gateway, Lambda, DynamoDB

Featured image

Serverless


서버리스는 마이크로서비스의 배포 옵션이다. 사용자가 기본 서버를 처리할 필요가 없이, FaaS(Function as a Service) 또는 BaaS(Backend as a Service)와 같은 클라우드 공급업체가 제공하는 서비스를 사용하여 서버 인프라를 추상화하고 자동으로 서버를 프로비저닝하고 관리한다.

서버리스는 확장성, 민첩성 및 복원력과 같은 마이크로서비스의 여러 특성을 반영한다. 서버리스를 사용하면 서비스가 수요에 따라 자동으로 확장되고 신속하게 배포 및 업데이트될 수 있으며 내결함성을 갖도록 설계할 수 있다.

AWS는 서버리스 컴퓨팅을 위한 AWS Lambda, 서버리스 API를 위한 Amazon API Gateway, 서버리스 데이터베이스를 위한 AWS DynamoDB를 비롯한 여러 서버리스 서비스를 제공한다.


마이크로서비스는 반드시 서버리스로 구현될 필요는 없다. 기존 서버 인프라 또는 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼을 사용하여 배포할 수 있다. 서버리스 사용 결정은 애플리케이션 요구 사항, 개발 속도 및 비용과 같은 다양한 요인에 따라 달라진다.

마이크로서비스와 서버리스는 최신 애플리케이션을 구축하기 위해 함께 사용할 수 있는 두 가지 아키텍처 스타일이다.


마이크로서비스와 데이터베이스의 분리

마이크로서비스가 독립적이고 느슨하게 결합되도록 설계되었으며 데이터베이스를 공유하면 서비스 간에 긴밀한 결합이 생성될 수 있기 때문에, 일반적으로 마이크로서비스를 구성할 때 여러 곳에 데이터를 복제하는 것을 의미하더라도 데이터베이스를 분리하는 것이 좋다.

이로 인해 전체 애플리케이션에 영향을 주지 않고 개별 서비스를 수정하거나 교체하기 어려울 수 있습니다. 데이터베이스를 분리함으로써 각 마이크로서비스는 자체 데이터와 스키마를 관리할 수 있으므로 시간이 지남에 따라 애플리케이션을 더 쉽게 발전시키고 확장할 수 있다.