[AWS Summit Korea] 대용량 트래픽 처리를 위한 서버리스 전략

GonnabeAlright·2022년 5월 11일
0
post-thumbnail
post-custom-banner

본 게시글은 AWS Summit Korea 2022 김민석(AWS 솔루션즈 아키텍트), 안효빈(AWS 솔루션즈 아키텍트)님의 대용량 트래픽 처리에 최적화! AWS 서버리스 강연을 보고 정리한 글입니다.

마이크로서비스 아키텍처 구축에 장애물이 발생하곤 합니다. 대표적으로 너무 많은 종속성이 생기다 보니 워크로드 의도와는 다르게 모놀리식한 구조로 밀접하게 결합되는 현상을 겪게 됩니다.

성공적인 마이크로서비스 구축을 위해서는 애플리케이션 개발운영의 현대화가 필요하며 이를 위해서는 애자일한 개발 프로세스모듈 기반의 아키텍처 설계가 필요하며 서버리스 운영 모델을 통해서 부담을 최소화하는 것이 필요합니다. 이를 위해서 AWS는 관리형 컨테이너 서비스와 다양한 서버리스 서비스를 제공합니다.

이를 통해 구축한 서버리스 어플리케이션의 특징은 운영 오버헤드를 최소화하면서 거의 대용량 트래픽을 처리할 수 있도록 원활하게 스케일링 가능하다는 것입니다. AWS는 이를 위한 다양한 솔루션을 제공하고 있습니다.

이제부터 AWS에서 제공하는 다양한 서버리스 서비스에 관해 알아보도록 하겠습니다.

AWS의 서버리스 서비스

AWS는 Lambda 외에도 컴퓨트, 데이터 저장 애플리케이션 운영 및 통합을 위한 다양한 서비스를 서버리스 형태로 제공하고 있습니다.
가장 대표적인 서비스인 두 가지 AWS LambdaAmazon API Gateway를 중점적으로 살펴보겠습니다.

Lambda

AWS Lambda는 서버를 프로비저닝하지 않아도 내가 작성한 코드를 실행시켜주는 서버리스 컴퓨팅의 가장 대표적인 서비스입니다. Lambda에서 실행할 수 있는 런타임은 가장 많이 활용되는 언어인 Node, Python, Java 등을 네이티브하게 지원하고 있으며 그 외에 다른 언어들은 사용자 지정 Runtime을 활용해 개발하고 실행할 수 있습니다.

작성한 람다 함수를 실행함에 있어 가장 중요한 것은 '이벤트'입니다. Lambda는 데이터의 상태 변화특정 엔드포인트로 들어오는 요청 혹은 Lambda를 호출하도록 설정해둔 리소스의 상태 변화등에 의해 실행되게 됩니다.

이렇게 이벤트에 의해 트리거된 Lambda 함수는 작성해둔 로직을 그대로 실행합니다. 이때는 API나 SDK에서 지원하는 작업 거의 대부분을 수행할 수 있습니다. 한마디로 정리하자면

API Gateway


Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 할 수 있도록 하는 서버리스 기반의 완전관리형 서비스입니다. API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있는 '정문' 역할을 합니다.

앞에서 개발했던 Lambda를 API Gateway에 등록함으로써 클라이언트나 서비스에서 Rest API 기반으로 요청할 수 있는 엔드포인트를 제공합니다.

API Gateway는 엣지 최적화, 리전, 프라이빗 등 세 가지 종류의 엔드포인트를 제공하며 캐싱 및 간편한 모니터링과 같은 다양한 기능도 함께 제공합니다. API Gateway를 사용하면 실시간 양방향 통신이 가능한 WebSocket API 및 서버리스 워크로드 및 HTTP 엔드포인트에 최적화된 RESTFUL API를 구축할 수 있습니다. API Gateway에서는 REST API, HTTP API 두 가지 버전을 제공합니다.

REST API 기반의 서버리스 애플리케이션을 5가지 영역의 Well-Architected 관점에서 살펴보겠습니다. 가장 일반적인 서버리스 기반 애플리케이션은 API Gateway를 이용해서 엔드포인트를 제공하고 백엔드를 람다가 수행하고 데이터는 관리형 데이터베이스 서비스인 아마존 RDS를 활용하는 단순한 아키텍처 입니다.

서버리스 애플리케이션의 경우 아마존 DynamoDB도 많이 활용됩니다.

운영

첫 번째는 운영 관점에서의 접근입니다.운영 관점에서는 모니터링이 가장 중요합니다. API Gateway 엑세스 로그를 활성화하여 로깅할 수 있고 AWS X-Ray를 활용해 API 요청에 대한 가시성을 높이거나 Amazon CloudWatch의 다양한 메트릭을 모니터링할 수 있습니다.

안정성

안정성 측면에서는 초당 요청 건수에 따라 Lambda의 Provisioned Concurrency를 구성해 백엔드를 보호할 수 있습니다. 이를 통해 애플리케이션의 안정성을 향상시킬 수 있고 아니면 API Gateway의 할당량을 구성하여 과도한 요청이 백엔드로 전달되는 것을 방지하는 것도 가능합니다. 이런 식으로 안정성 향상이 가능하게 됩니다.

보안

보안을 향상하는 방법은 Lambda 코드 자체에 DB 크리덴셜 정보나 API Key 같은 자격 증명 정보를 AWS Secrets Manager라는 서비스에 저장하고 이를 Lambda에서 읽어서 사용하는 게 더욱 안전합니다.

성능

성능 부분에서는 RDS로의 연결은 RDS Proxy를 사용하는 것이 보다 효과적이고 API Gateway에서는 HTTP API로 레이턴시를 개선할 수 있습니다.

비용

마지막으로 비용면에서는 Lambda insight를 통해 Lambda 함수의 메모리 사용률을 모니터링하고 최적의 메모리르르 할당해 비용을 최적화할 수 있습니다.

post-custom-banner

0개의 댓글