Serverless 에 대해서

이동명·2024년 1월 18일
0

Serverless

목록 보기
1/3
post-thumbnail

개요

서버리스 아키텍처와 서버리스 컴퓨팅에 대해 알아보고 간단한 REST API 를 구현해보자.

서버리스란 무엇입니까?

  • 서버리스 아키텍처는 서버를 프로비저닝하거나 관리하지 않아도 되는 클라우드 컴퓨팅 모델입니다.

  • AWS에서는 AWS Lambda와 같은 서비스를 통해 서버리스 아키텍처를 쉽게 구현할 수 있습니다.

  • AWS Lambda는 코드를 실행하고 자동으로 확장하여 필요한 컴퓨팅 리소스를 제공합니다. 이를 통해 개발자는 코드 실행에 집중할 수 있으며 인프라 관리에 대한 부담을 덜 수 있습니다.

  • AWS Lambda를 비롯한 다른 AWS 서버리스 서비스는 이벤트 기반 아키텍처를 지원하므로, 애플리케이션의 특정 이벤트가 발생할 때마다 자동으로 실행될 수 있습니다. 이를 통해 개발자는 애플리케이션의 효율성을 높일 수 있습니다.

  • 마지막으로, AWS 서버리스 아키텍처는 페이-애즈-유-고 모델을 따르므로, 사용한 만큼만 비용을 지불하면 됩니다. 이를 통해 개발자는 인프라 비용을 절감할 수 있습니다.

서버리스 아키텍처의 이점

  • AWS 서버리스를 사용하는 경우 코드가 실제로 사용하는 컴퓨팅 시간(밀리초)만 지불합니다. 즉, 동작하지 않는 동안의 리소스에 대한 비용을 지불할 필요가 없으므로 비용이 크게 절감될 수 있습니다.

  • AWS 서버리스는 마이크로 서비스, 이벤트 기반 애플리케이션 및 API 구축에 매우 적합합니다. AWS 서버리스를 사용하면 서버 관리나 인프라 확장에 대한 걱정 없이 코드 작성 및 애플리케이션 구축에 집중할 수 있습니다.

정리하자면 서버리스는 다음과 같은 장점이 존재한다.

  • 개발 시간 단축
  • 비용 절감
  • 자동 확장 auto scaling
  • 간편한 API 구축

서버리스는 어떤 서비스에 적합한가 ?

  • 대화형 웹 및 API 기반 마이크로서비스 또는 애플리케이션
  • 데이터 처리 응용 프로그램
  • 실시간 스트리밍 어플리케이션
  • 기계 학습
  • IT 자동화 및 서비스 조정

서버리스적인 사고전환

개발자는 일반적으로 기존 웹 애플리케이션에는 익숙하지만 서버리스 개발에는 익숙하지 않습니다.S3나 DynamoDB와 같은 일부 Amazon 서비스를 직접 사용하는 방법은 알고 있지만, 완전히 서버리스로 전환하기 위해 무엇이 필요한지 잘 모를 수도 있습니다.

기존 애플리케이션을 살펴본 다음 서버리스 개발을 이해하는 데 필요한 사고의 전환에 대해 설명하겠습니다. 갑자기 서버리스 앱을 구축할 수는 없지만, 각 요소가 어떻게 결합되는지 이해하면 더 이해가 쉬워질 것입니다.

기존 개발

기존 웹 앱은 일반적으로 동기식 요청과 응답을 처리합니다. 이 주기는 인터넷이 시작된 이래로 웹의 근간이 되어 왔습니다. 시간이 지남에 따라 개발자는 개발 속도를 높이기 위해 코드를 만들고 공유했습니다. 여러분은 이러한 웹 프레임워크 중 하나 이상을 사용했거나 최소한 알고 있을 것입니다.

e.g) Express, Django, Flask, Ruby on Rails, Asp.net, Play, Backbone, Angular,
Spring Boot, Vapor ..

웹 프레임워크는 일반적인 도구와 기능을 포함하여 솔루션을 더 빠르게 구축할 수 있도록 와줍니다.

다음 다이어그램은 프레임워크에 포함된 구성 요소의 복잡한 조합 중 일부를 나타냅니다. 라우터는 청을 처리하고 응답을 반환하기 위해 클래스나 함수에 URL을 보냅니다. 유틸리티 클래스는 양식 데이터, 쿼리 문자열, 헤더 및 쿠키를 검색합니다. 번들로 제공되는 추상화 계층은 SQL 또는 NoSQL 데이터베이스에 데이터를 저장하고 검색합니다. 추가 구성 요소는 동기식 API 호출 또는 비동기 메시지 큐를 통해 외부 서비스에 대한 연결을 관리합니다. 비동기 후크 또는 타사를 통한 싱글 사인온 인증(SSO)과 같은 더 많은 구성 요소를 볼트온할 수 있는 확장 지점이 존재합니다.

서버리스 솔루션

서버리스 앱의 핵심은 이벤트 중심 아키텍처입니다.

이벤트 중심 아키텍처(EDA)는 이벤트를 게시, 소비 또는 라우팅하는 소규모의 분리된 서비스로 구축되는 최신 아키텍처 패턴입니다. 이벤트는 서비스 간에 전송되는 메시지입니다. 이 아키텍처를 사용하면 시스템의 개별 구성 요소를 더 쉽게 확장, 업데이트 및 독립적으로 배포할 수 있습니다.

다음 다이어그램은 이벤트 기반 서버리스 마이크로서비스를 보여줍니다. 클라이언트 요청은 API 게이트웨이에 의해 이벤트로 변환되어 람다 컴퓨팅 서비스로 전송됩니다. 람다 함수는 DynamoDB 데이터 저장소에서 정보를 검색합니다. 해당 데이터는 이벤트 형식으로 API 게이트웨이에 반환되며, API 게이트웨이는 적절한 헤더, 쿠키, 보안 토큰을 모두 포함한 응답을 클라이언트에 보냅니다.

AWS 서버리스 아키텍처

AWS 의 서버리스는 보통 api gateway + Lambda + DynamoDB를 말하며 다음과 같은 그림의 구조를 가지고 있다. AWS 서버리스의 아키텍처는 일반적으로 세 가지 주요 구성 요소를 포함합니다

AWS Lambda

lambda는 서버를 관리할 필요 없이 코드를 실행할 수 있는 컴퓨팅 서비스입니다. Python, Java,Node.js 등 다양한 언어로 코드를 작성할 수 있으며, AWS Lambda는 수신되는 트래픽 양에 따라 애플리케이션의 크기를 자동으로 조정합니다.

Amazon API gateway

이 서비스는 규모에 맞게 API를 생성, 게시 및 관리할 수 있는 완벽하게 관리되는 서비스입니다. Amazon API Gateway를 사용하면 AWS Lambda 함수와 통합되는 RESTful API를 쉽게 만들 수 있습니다.

Amazon DynamoDB

DynamoDB는 AWS에서 제공하는 완벽하게 관리되는 NoSQL 데이터베이스 서비스로, 모든규모의 고성능을 제공하도록 설계되었습니다. 인프라 관리나 확장에 대한 걱정 없이 서버리스 애플리케이션에서 데이터를 쉽게 저장하고 검색할 수 있습니다. 빠르고 예측 가능한 성능, 유연한 데이터 모델 및 AWS Lambda 및 Amazon API Gateway와 같은 다른 AWS 서비스와의 원활한 통합으로 인해 서버리스 애플리케이션에 널리 사용되고 있습니다.


다음 포스팅 에선 AWS 프리티어, MFA 설정, 관리자 계정 생성 후 lambda와 dynamoDB를 사용한 CURD API 를 만들어보는 스텝을 밟아보겠습니다.

profile
Web Developer

0개의 댓글