서버리스는 무엇인가?

1. 사용량에 따라 백엔드 서비스를 제공하는 방법

2. 물리적 서버는 사용되나 개발자는 서버를 알 필요가 없음(존재를 모르고 개발)

(EB와 비슷하나, EB는 EC2로 계속 서버가 돌아가고 있고, Serverless는 트래픽이 있을 때만 서버 생성 및 운영) 

3. 기존의 클라우드 컴퓨팅보다 더 비용절감 가능

(기존의 클라우드 컴퓨팅은 EC2 1대라는 단위가 있고, 이것을 기준으로 과금되는 단위가 올라가지만, 서버리스의 경우 EC2의 단위와 상관없이 백엔드 서비스 사용량만 비용이 청구됨.)

4. 운영상 책임을 클라우드로 전환 -> 민첩성과 혁신을 높이는 클라우드의 네이티브 아키텍처 (serverless가 알아서 서버 용량을 조절)

5. 거의 모든 application, 백엔드 서비스 구축 가능

6. 고가용성(서비스중단x) 실행/확장에 필요한 사항이 자동으로 처리됨

7. BaaS(Back-end as a Service) + FaaS(Function as a service)

 

BaaS

1. 단일 웹페이지나 모바일 앱 기반의 서비스에서 필요한 서버 기능들을 사용하기 위해 이용하는 써드파티 애플리케이션이나 클라우드 서비스

2. 백앤드 기능들을 개발자가 직접 개발하지 않고, 클라우드 공급자가 제공하는 서비스를 이용해 쉽고 안정적으로 구현하는 것

3. MBaaS - Mobile Backend as a Service

 

Faas

1. 사용자가 쓸 기능을 함수 단위로 나누어 구현하고 이를 서비스하는 형태

2. event-driven 구조 구현에 적합

3. 사용자가 원하는 기능을 미리 작성해놓고, 특정 이벤트(ex. Http Request, API 호출, 특정 조건 등)에 의해 실행됨

4. AWS Lambda, Azure Function, Google Cloud Function

 

왜 서버리스인가?

1. 민첩성, 낮은 비용으로 최신 application 개발

2. 개발자는 개발에 집중 가능

 

AWS의 서버리스 플랫폼

1. Serverless application 구축/실행을 위한 완전 관리형 서비스 제공

2. 백엔드 구성 요소 프로비저닝(웹서버 + DB 서버), 애플리케이션 내결함성/가용성(Request의 처리를 위한 구성 요소의 증가 및 감소)에 대해 고려하지 않아도 됨

Computing - Lambda

API Proxy - API Gateway

 

서버리스의 이점

1. 낮은 비용 -종량제 요금

2. 서버 관리 불필요, 생성 시에도 관리 X

3. 유연한 규모 조정 - 간편한 확장성

4. 자동화된 고가용성

5. 빠른 개발 - 복잡한 배포 과정, 버그 수정 대신 필요에 따라 코드 추가/수정

6. 함수 단위 개발(Micro Service Architecture) - 서비스를 더 빠르게 출시(민첩, 혁신 up)

 

서버리스의 제약 및 고려 사항

1. 빠른 응답이 필요한 제품의 경우 - 함수가 호출되기 위해 컨테이너가 실행되는 대기 시간을 고려해야함(콜드 스타트)

2. 무상태(stateless)적인 기능으로 구현됨(이전 데이터는 모름) - 변수, 데이터 공유 불가, 로컬스토리지 액세스 불가

3. 서비스 제공자의 제한 사항을 수용해야함. - 용량이 초과된다면 기능을 나누어 구현해야 함

(너무 큰 용량이면 위의 콜드 스타트 문제가 심해짐)

 

 

서버리스 이용 사례

- Lambda, API Gateway, S3, Dynamo DB 사용 사례

1. S3에 날씨 앱 프론트앤드 코드 배포

2. 유저가 지역 날씨정보를 얻기 위해서 프런트 앤드에서 클릭

3. API Gateway에서 요청을 적절한 Lambda로 보냄

4. Lambda에 업로드된 코드가 실행되고, DynamoDB에서 지역 날씨정보를 가져와 사용자에게 날씨 정보를 전송

 

클라우드 컴퓨팅의 진화

1. on-premise

2. IaaS

3. PaaS

4. SaaS

5. Serverless Architecture - SaaS 애플리케이션을 보다 효율적으로 구축하고 운영할 수 있도록 돕는 구조.

 

+ Recent posts