BLOG

[Lab To Scale] AWS Lambda를 활용하여 간단한 SaaS 서비스 배포하기
작성일: 2019-11-15

금번 블로그는 간단한 NodeJS 코드를 활용하여 Amazon Web Services 인프라로 손쉽게 Software-as-a-Service (SaaS) 서비스를 배포 할 수 있는 방법을 소개 합니다.

 

그 전에 우선 AWS Lambda와 함께 제공되는 서버리스 아키텍처에 대해 이야기 해볼까 합니다.


 

애플리케이션을 구축 할 때 여러가지 로직들이 들어 가게 됩니다.

 

사용자를 위해 인앱 구매 옵션을 추가하거나, 주소 업데이트를 신속하게 확인하거나, 사용자가 사진을 업로드 한 직후 이미지 Re-Size를 하려는 경우가 있습니다.

 

이 모든 작업을 수행하려면 이미지 업로드, 앱 활동, 웹 사이트 클릭 또는 센서 출력과 같은 이벤트에 응답하여 실행되는 백엔드 코드가 앱에 필요합니다.

 

그러나 백엔드를 호스트하고 실행하기 위해 인프라를 관리하려면 여러 서버의 크기, 프로비저닝 및 확장, OS 업데이트 관리, 보안 패치 적용 및 성능 및 가용성에 대한 인프라 모니터링이 필요합니다.

 

기본적으로, 개발자는 서버 관리에 많은 시간을 소비하지 않고 애플리케이션을 만드는 데 집중하고 싶고, 이것을 가능하게 하는 서비스가 바로 AWS Lambda 입니다.

 

개발자 코드 작성에 중점을 두고, 그 밖의 모든 것은 AWS Lambda가 처리합니다.

 

AWS Lambda는 Amazon S3 버킷으로의 객체 업로드, Amazon DynamoDB 테이블 업데이트, Amazon Kenesis dream의 데이터 또는 인앱 활동과 같은 이벤트에 대한 응답으로 백엔드 코드를 실행하는 완벽한 서비스입니다.

 

우리는 아마존이 보유한 방대한 컴퓨팅 자원에 백엔드 코드만 배포 하면 됩니다!

 

백엔드 코드는 AWS Lambda에서 SaaS로 배포됩니다.

 

zip 파일로 코드를 업로드하거나 IDE를 사용하여 손쉽게 배포 할 수 있습니다.

 

따라서 기본적으로 코드가 AWS Lambda에서 실행되면 애플리케이션은 서버리스 됩니다.

 

10분만에 SaaS API 만들자

  1. AWS 계정으로 콘솔 로그인 후 Instance(EC2) Launch
  2. EC2에 접속 하여 NodeJS 설치
  3. npm 서버리스 패키지 설치

$npm install -g serverless
$serverless create -t aws-nodejs

아래 처럼 작성된 파일 확인이 가능합니다.

-serverless.yml
-handler.js

 

handler.js:

‘use strict’;
module.exports.hello = (event, context, callback) => {
 const response = {
   statusCode: 200,
   body: JSON.stringify({
     message: ‘Go Serverless v1.0! Your function executed successfully!’,
     input: event,
  }),
};
callback(null, response);
};

 

serverless.yml:

service: lambda-test
provider:
name: aws
runtime: nodejs6.10
functions:
hello:
  handler: handler.hello
  events:
    – http:
        path: users/create
        method: get

 

  1. AWS 콘솔로 이동하여 ‘My Security Credentials’를 클릭하십시오.
  2. 그런 다음 ‘액세스 키’로 이동하여 새 키를 만듭니다.

 

이렇게하면 두 개의 키가 제공됩니다. 액세스 키 ID 및 비밀 액세스 키. 이 두 가지를 모두 복사하십시오.

 

  1. 이제 터미널로 다시 돌아 갑니다.

$serverless config credentials –provider aws –key <insert Access Key ID> –secret <insert Secret Access Key>

 

결과는 다음과 같아야 합니다.

Serverless: Setting up AWS…
Serverless: Saving your AWS profile in “~/.aws/credentials”…
Serverless: Success! Your AWS access keys were stored under the “default” profile.

 

  1. 이제 애플리케이션을 배포 할 준비가 되었습니다.

$serverless deploy

 

이제 모두 진행 되었습니다. Lambda 함수에 액세스 할 수 있는 엔드 포인트 URL을 얻게됩니다!

 

해당 엔드 포인트를 방문하면 다음과 같은 내용이 표시됩니다.

 

 

이 JSON Respone 에서 첫 번째 키는 ‘Go Serverless v1.0! 함수가 성공적으로 실행되었습니다! ‘라는걸 보여줍니다.

 

다음 객체들이 이벤트입니다. (이것은 handler.js에서 코딩하는 방법입니다)

 

해당 결과 값 한 줄 (“Go Serverless v1.0! 함수가 성공적으로 실행되었습니다!”) 대신 전체 NodeJS 함수가있을 수 있습니다.

 

간단한 방법으로 현재 날씨를 바로바로 알려 있는 기상 안내 SaaS 서비스를 만들어 보세요.

 

AWS Lambda 활용하면 인프라에 대한 고민 없이 비즈니스 로직만 고민하면 손쉽게 SaaS 서비스를 만들 있습니다.

 

다양한 관리형 AWS 서비스와의 연동

여러 관리형 AWS 서비스 연동을 통해 SaaS 서비스의 확장을 고려해 볼 수 있습니다.

 

AWS Lambda를 활용한 여러 아키텍처 패턴 사례 입니다.

 

  • DynamoDB(NoSQL), SES(EMail), S3(Static file)
  • 다양한 AWS DB 관련 서비스를 활용
  • 다양한 타 솔루션 SaaS Connectors 서비스

 

** 메가존 클라우드의 ‘Lab to Scale’ 프로그램은 AWS SaaS Factory 베스트 프랙티스 기반의  확장성 높은 SaaS 서비스 설계/구축/운영 서비스를 제공 합니다. 메가존 클라우드의 클라우드 전문가들과 함께 신규 SaaS 서비스 설계부터 국내/외 비즈니스 협업까지 SaaS 서비스의 성공적인 사업화를 지원 합니다