본문 바로가기
클라우드 서비스

[클라우드 서비스] Serverless _ 20241205

by 황오독 2024. 12. 9.
더보기

* 실습내용

# 6. 서버리스 서비스 활용

- Lambda로 웹 페이지 생성

- Lambda로 API 서비스(웹 기능) 생성

- DynamoDB와 API Gateway 생성

- Lambda 웹 페이지 연결 및 테스트

 

* Serverless

https://jelvix.com/blog/cloud-service-models

- 애플리케이션 운영 시, 개발자가 서버를 직접 관리하거나 유지하지 않아도 되는 클라우드 컴퓨팅 모델

- 리소스를 상시 구동하는 방식이 아니라 요청이 있을 때에만 리소스를 할당하여 코드를 빠르게 실행하고, 요청이 종료되면 중단하는 방식이므로 비용 절감 효과가 높다.

- 자동 확장/축소가 가능하도록 설계되어 급격한 트래픽 변화에 유연한 대응이 가능하다.

 

* AWS Serverless Services

https://blogs.itemis.com/en/serverless-services-on-aws

 

1. AWS Lambda

- 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 이벤트 중심의 서버리스 컴퓨팅 서비스

- 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 리소스 관리를 수행한다.

- 하루 수십개~초당 수십만개까지 어떤 규모에서든 코드 실행 요청에 자동으로 응답할 수 있다.

- 사용한 만큼만 비용을 지불한다. (요청 수, 요청 처리 시간, 할당된 메모리 양 등)

 

(1) Lambda 특징

- Node.js, JAVA, Python, C#, Go, Ruby 등을 지원한다.

- Lambda API 호출 또는 이벤트에 대한 응답으로 코드를 실행한다.

- 상태 비저장(Stateless) 코드를 실행한다.

- 최대 명령 실행시간 15분, 실행시 메모리 최대 10GB이다.

Lambda 함수 이벤트 소스

=> 짧고 빠르게 작업할 때 좋은 서버리스 서비스!

 

2. AWS Step Functions

* 워크플로우 구현 필요 사례

1) 연속(순차 처리)
- 여행을 가기 위한 각종 예약 및 결제
- 호텔 예약, 항공권 예약, 결제, 결과 확인 등
2) 조건에 따른 분기 처리
- 신용 한도 증가 요청할 경우 조건에 따라 결정
- 요청이 고객의 신용 한도보다 큰 경우 승인 거절
- 요청이 고객의 사전 승인된 한도보다 작은 경우 요청을 자동으로 승인

- 일련의 단계로 구성된 워크플로우를 설계하고 실행할 수 있도록 하여, 작업을 보다 쉽게 조정할 수 있게 하는 완전 관리형 서비스

- 상호 종속성이 있는 작업을 관리하기 위한 포괄적인 워크플로우를 생성하는 데에도 유용하다.

- 시각적 워크플로우를 사용하여 분산 애플리케이션과 마이크로 서비스의 구성 요소와 단계를 손쉽게 조정할 수 있다.

 

* 상태 시스템 (State Machine)

출처 : AWS

- 이전 단계의 상태 정보를 보유하고 있는 객체로, 이를 활용하여 워크플로우를 구성한다.

 

"MSA 혹은 서버리스 아키텍처에서는 수많은 서비스에 대한 API 호출, 인증 처리 등이 이루어져야 하는데, 이를 쉽게 관리할 수 있는 방법은 없을까?"

 

3. API Gateway

- 마이크로 서비스는 클라이언트가 여러 서비스와 상호 작용해야 하므로 세분화된 많은 API 생성 및 관리가 필요하다.

- 예를 들어, 제품 정보가 필요한 클라이언트는 수많은 개별 서비스에서 데이터를 가져와야 한다.

- 다수의 마이크로 서비스에 액세스 하기 위하여 API Gateway를 활용하여 API를 생성, 등록 및 관리, 인증 및 보안, 트래픽 관리를 용이하게 수행할 수 있다.

출처 : https://docs.solo.io/gloo-mesh-gateway/main/concepts/about/api-gateway/

* AWS API Gateway

- 클라이언트가 백엔드 서비스에 엑세스할 수 있게 해주는 "관문" 역할을 수행한다.

- 개발자가 API를 손쉽게 생성, 유지 관리하기 위한 다양한 기능을 제공한다. (HTTP, REST, WebSocket API를 지원한다.)

- API 버전 관리, 인증 및 권한 부여 등의 액세스 제어, 캐싱, 트래픽 관리를 비롯해 최대 수십만 건의 동시 API 호출을 수락 및 처리하는 데 관련된 관리 작업을 지원한다.

https://medium.com/quantyca/designing-serverless-web-applications-with-amazon-web-services-1ccad3099d91

 

(1) CORS 설정

- Cross-Origin Resource Sharing

- 브라우저는 보안상의 이유로 원래 교차출처 HTTP 요청들을 제한한다.

- 따라서 교차 출처의 리소스를 요청하려면 해당 서버의 동의가 필요한데, 이러한 허락을 구하고 거절하는 매커니즘이 교차 출처 리소스 공유이다.

- 기본적으로 API Gateway는 다른 도메인의 API를 호출할 수 없게 설정되어 있으므로, 이를 가능하게 하려면 OPTIONS 메서드를 통해 다른 도메인 리소스에 요청이 가능한지 확인이 필요하다. (CORS를 설정)

https://velog.io/@josworks27/CORS-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90

 

ex. A는 우리가 만든 웹사이트 / B는 API를 제공하는 서버(다른 회사 데이터)

=> A가 B의 정보를 가져오라고 할 때, B가 "이 요청을 허락할까요?" 라고 물어보는게 CORS 설정

=> A : 온라인 쇼핑몰, B : 결제 처리 시스템

 

(2) 장바구니 마이크로 서비스 구현

https://www.cloudaeye.com/observability-for-aws-lambda.html