Dev&Ops/DevOps

[Infra] Serverless란?(1)

zeroneCoder 2022. 2. 8. 16:38

안녕하세요! zerone-code입니다.

 

오늘은 AWS나 Azure, GCP 등 Cloud Infra를 다루는데 꼭 이해하고 넘어가야 할 개념인 Serverless에 대해 다뤄보고자 합니다.

 

2022.01.29 - [Dev&Ops/DevOps] - [Automation] AWS User 생성 알림 자동화(1)

 

[Automation] AWS User 생성 알림 자동화(1)

안녕하세요! zerone-code입니다. 요즘 Cloud를 많이 사용하게 되면서 AWS나 Azure와 같은 Cloud Service를 많이 사용하고 있습니다. 제가 속해있는 조직에서는 AWS를 아주 다양하게 사용하고 있는데요, 이번

zerone-code.tistory.com

2022.01.30 - [Dev&Ops/DevOps] - [Automation] AWS User 생성 알림 자동화(2)

 

[Automation] AWS User 생성 알림 자동화(2)

안녕하세요! zerone-code입니다. 지난 AWS User 생성 알림 자동화(1)에 이어서 두 번째 인프라 자동화와 관련된 글로 구현한 방법에 대해 다뤄보고자 합니다. 크게 Terraform으로 생성한 리소스와 Serverles

zerone-code.tistory.com

 

앞서 AWS User 생성 알림 자동화라는 주제가 바로 Serverless의 개념을 활용한 사례입니다.

 

앞선 글의 내용을 많이 이해하지 못하더라도 괜찮습니다!

오늘 다뤄 볼 내용을 한번 이해하고 가시면 앞의 내용이 자연스럽게 이해가 되실 거라고 생각이 됩니다.

 

이번 주제는 크게 1부 2부로 이어서 설명드려보고자 합니다. 

 

1부에서는 Serverless란 어떤 개념이고, 왜 사용되는지에 대한 부분을 다루려고 합니다.

2부에서는 Serverless Framework를 활용해 대표적인 AWS Serverless서비스인 Lambda를 구축해보도록 하겠습니다.

 

이번 글에서 설명드릴 개념이 완벽히 이해가 되셨으면 좋겠습니다.


1. What is Serverless?

Server(서버) + less(~가 없는) => 서버가 없는 환경 != Serverless

 

Serverless라는 말 그대로 서버가 없는 환경이라고 생각하실 수 있습니다. 실제로 그런 질문도 받아봤습니다.

 

하지만 개발하는 사람이 직접 서버를 구축하지 않을 뿐, 내부적으로는 서버가 존재하고 있습니다.

 

트래픽이나 이벤트가 발생하면 내부적으로 서버를 띄워 동작하는 방식으로 사용됩니다.

 

이 과정에서는 내부적으로 서버를 띄우면서 걸리는 시간인 Cold Start 문제를 얼마나 줄이느냐가 관건이 됩니다.

 

서버리스 업체 혹은 CSP(Cloud Service Provider)는 메모리 사용량이나 처리 시간에 따라 비용을 지불하고, 실제로 대역폭과 같은 부분은 서비스를 제공하는 쪽에서 관리하게 됩니다.

 

즉, 특정 서비스 혹은 기능, 작업을 돌리기 위해서 개발자가 필요한 서버나 인프라 구축(DB, API GW 등)을 하지 않고 기능과 코드에만 집중을 할 수 있게 됩니다.

 

이런 Serverless Model에는 크게 BaaSFaaS라는 개념이 있습니다.

 

아래에서 Serverless Model에 대해 보다 자세히 알아보도록 하겠습니다.

 

2. Serverless Model (BaaS / Faas)

BaaS(Backend as a Service)

  • 백엔드(서버 사이드)를 개발함에 있어서 DB나 File System 등을 직접 구축하는 것이 아니라 API를 통해 제공
  • 대표적으로 Firebase(DB, SNS 연동, File System 등)

 

FaaS(Function as a Service)

  • 한 애플리케이션 혹은 작업의 여러 API를 각 Function으로 나눠서 사용하는 형태
  • 대표적으로 AWS Lambda를 이용한 API, Google Cloud Function
  • 함수를 실행하는 컨테이너가 계속적으로 떠있는 것이 아니라 특정 이벤트가 발생한 경우, 컨테이너가 떠서 수행을 하는 형태
  • 특정 시점이 지나거나 최대 시간을 넘어가면 컨테이너나 함수가 종료

https://ssup2.github.io/theory_analysis/Serverless_Architecture_BaaS_FaaS/

3. Framework For Serverless

For Multi Cloud(Azure, GCP, AWS...)

  • Serverless Framework
  • Terraform

 

Only For AWS

  • SAM
  • Zappa
  • Apex

 

4. Serverless's Properties

Cold Start

  • Serverless에서 요청 혹은 특정 이벤트가 있는 경우에 동작하게 됩니다. 즉, 특정 시점에 동작하기 위한 컨테이너가 기동 돼야 한다는 의미가 됩니다.
  • 이 과정에서 컨테이너가 뜨고 요청을 받을 준비가 되는 시간Cold Start라고 하는데 이 시간이 오래 걸리면 서비스에서 문제가 발생할 수 있습니다.
  • 따라서 Server session이나 DB Connection 관리를 잘해야합니다.

 

Stateless

  • Serverless는 이벤트나 요청에 따라 컨테이너가 기동 하기 때문에 내부적으로 상태를 저장하지 않는게 기본 컨셉입니다.
  • 데이터를 저장하기 위해서는 외부 리소스를 활용해서 구성하는게 좋습니다.(ref 참조)
    • AWS S3 혹은 EFS, Azure는 Storage를 사용해서 데이터를 저장하거나 가져오는 경우는 가능합니다.
    • 내부적으로 제한된 DB index를 구성하고, 동시 연결성 문제로 인해 관계형 DB보다 비정형 DB를 사용하는 게 좋습니다.

 

Various languages

  • Serverless를 개발하는 데 있어서 다양한 언어가 지원됩니다.
    • AWS Lambda: Node.js, Python, Java, C#, Go 
    • Azure: C#, Javascript, F#, Python, Batch, PHP, PowerShell
    • Google Function: Node.js, Python, Javascript

 

5. Serverless's Pros & Cons

앞의 내용만 보시면 Serverless를 안 쓸 이유가 없어 보이는데?라는 생각이 드실 수 있습니다.

하지만 편한 기능 이면에는 다른 문제점이 숨어 있을 수 있습니다.

Serverless라는 개념에도 여러 장점과 단점이 숨어있습니다.

이번에는 Serverless에 대한 장점과 단점을 살펴보도록 하겠습니다.

 

Pros

  • 비용
  • 확장성
  • 서버 관리 불필요

 

Cons

  • 성능적 제한
  • 강한 CSP(Cloud Service Provider) 의존성
  • 병렬 수행 및 복잡한 로직의 어려움

 


지금까지 Serverless에 대해 개념과 어떤 모델이 있는지, 그리고 특징과 장/단점에 대해 한번 알아봤습니다.

 

다음 글에서는 3. Framework For Serverless에서 언급한 Serverless Framework를 이용해 AWS Lambda를 구성하는 예제로 다시 찾아오겠습니다.

 

궁금한 부분은 댓글로 남겨주시면 아는 만큼 성심성의껏 답변해드리도록 하겠습니다.

잘 읽으셨다면 많은 공감과 구독 부탁드립니다!

 

Reference

https://aws.amazon.com/blogs/compute/choosing-between-aws-lambda-data-storage-options-in-web-apps/

 

Choosing between AWS Lambda data storage options in web apps | Amazon Web Services

In this post, I compare the capabilities and use-cases of S3, EFS, Lambda layers, and temporary storage for Lambda functions. There are benefits to each approach, as each type has different behaviors and characteristics.

aws.amazon.com

https://martinfowler.com/articles/serverless.html

 

Serverless Architectures

Serverless architectures replace a managed server with a collection of third party services and FaaS

martinfowler.com

https://hackernoon.com/what-is-serverless-architecture-what-are-its-pros-and-cons-cc4b804022e9

 

What is Serverless Architecture? What are its Pros and Cons? | HackerNoon

 

hackernoon.com