SK shieldus Rookies 16기
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(32일차)
by Challenge programmers
2023. 12. 7.
오늘 학습 주제
1. 서버리스 아키텍처
2. 서버리스 구축
서버리스 아키텍처
- 서버리스 아키텍처 -
서버리스 아키텍처 |
정의 |
애플리케이션을 개발하고 배포하기 위한 혁신적인 접근 방식 중 하나로 전통적인 서버 기반의 모델과는 다르게 서버 관리에 대한 부담을 최소화하고 개발자가 코드 작성에 집중할 수 있도록 하는 방식 |
특징 |
- 서버 없음 (Serverless): 서버리스 아키텍처에서는 서버를 명시적으로 관리하지 않으며
개발자는 코드를 업로드하고 실행하는 플랫폼에 대해 걱정하지 않아도 됨
- 이벤트 기반 (Event-Driven): 서버리스 애플리케이션은 이벤트에 응답하는 방식으로 동작하며
파일이 업로드되었을 때, HTTP 요청이 발생했을 때 등과 같은 이벤트에 대한 함수를 작성하고 실행 가능
- 자동 확장 (Auto-Scaling): 서버리스 플랫폼은 필요에 따라 자동으로 확장하고 축소 가능
트래픽이 많아지면 자동으로 함수 인스턴스를 늘리고, 트래픽이 감소하면 인스턴스를 축소하여 비용을 절약
- 컴퓨팅 단위로 비용 지불 (Pay-As-You-Go): 서버리스 모델에서는 함수 실행에 대한 비용만 지불하고
함수가 실행되지 않으면 비용이 발생하지 않으며 사용량에 따라 비용이 발생하는 페이-어-고 모델을 적용
- 함수 기반 (Function-as-a-Service - FaaS): 서버리스에서는 주로 작은 단위의 함수로 애플리케이션을 구성하여
필요할 때마다 실행되며, 각 함수는 독립적으로 배포
|
내가 만든 함수들로 서비스를 구현해주는 것이 "서버리스" 아키텍처
- AWS의 서버리스 -
AWS 서버리스 |
정의 |
서버에 대한 고민 없이 애플리케이션을 구축하고 실행 |
특징 |
- AWS는 코드 실행, 데이터 관리 및 애플리케이션 통합을 위한 기술을 서버를 관리할 필요 없이 제공
- 자동 크기 조정, 기본 제공 고가용성 및 종량제 결제 모델을 제공하여 민첩성을 개선하고 비용을 최적화
- 용량 프로비저닝 및 패치 적용과 같은 인프라 관리 작업이 필요하지 않으므로
고객을 위한 코드를 작성하는 데 집중
- 서버리스 애플리케이션은 AWS Lambda에서 시작되며, 이 이벤트 기반 컴퓨팅 서비스는
200개 이상의 AWS 서비스 및 서비스형 소프트웨어(SaaS) 애플리케이션과 기본적으로 통합
|
AWS 서버리스 서비스 |
정의 |
컴퓨팅, 통합, 데이터 스토어를 포함한 3개 계층에 대한 서버리스 서비스를 개발 |
서비스 |
- 컴퓨팅
- AWS Lambda: 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 이벤트 기반 종량제 컴퓨팅 서비스
- AWS Fargate: ECS 및 EKS와 연동되는 서버리스 컴퓨팅 엔진
- 애플리케이션 통합
- Amazon EventBridge: awS와 기존 시스템에서 이벤트 기반 애플리케이션을 대규모로 구축하는 데
사용할 수 있는 서버리스 이벤트 버스
- AWS Step Functions: 여러 AWS 서비스를 손쉽게 비즈니스 크리티컬 애플리케이션으로
차례로 배열할 수 있게 하는 시각적 워크플로 오케스트레이터
- Amazon SQS: 마이크로서비스, 분산 시스템 및 서버리스 애플리케이션의 손쉬운 분리 및 크기 조정을
지원하는 메시지 대기열 서비스
- Amazon SNS: 애플리케이션 간(A2A) 및 애플리케이션과 사용자 간(A2P) 통신 모두를 위한
완전관리형 메시징 서비스
- Amazon API Gateway: 모든 규모에서 API를 손쉽게 생성 및 게시할 수 있는 완전관리형 서비스
- AWS AppSync: 확장 가능한 GraphQL API를 통해 애플리케이션 개발을 가속화하는 완전관리형 서비스
- 데이터 스토어
- Amazon S3: 모든 양의 데이터를 저장하고 보호할 수 있도록 설계된 객체 스토리지 서비스
- Amazon EFS: 고가용성 공유 스토리지의 설정, 크기 조정 및 비용 최적화를 간편하게 하는
빌더를 위한 완전 탄력적인 서버리스 파일 시스템
- Amazon DynamoDB: 모든 규모에서 10밀리초 미만의 성능을 제공하는 키-값 및 문서
데이터베이스 서비스
- Amazon RDS Proxy: Amazon Relational Database Service(RDS)를 위한 관리형 데이터베이스 프록시로,
애플리케이션의 확장성 및 보안을 개선
- Amazon Aurora Serverless: 애플리케이션 요구 사항에 따라 자동으로 용량을 확장하고 축소하는
MySQL 및 PostgreSQL 호환 관계형 데이터베이스
- Amazon Redshift Serverless: 데이터 웨어하우스 인프라를 관리하지 않고도 분석을 쉽게 실행하고
크기 조정할 수 있으며 사용한 만큼만 요금을 지불
- Amazon Neptune Serverless: 애플리케이션 요구 사항에 따라 용량을 자동으로 제공하는
온디맨드 방식의 확장 가능한 그래프 데이터베이스
- Amazon OpenSearch Serverless: Amazon OpenSearch Service의 서버리스 옵션으로,
리소스를 프로비저닝하거나 조정하지 않고도 검색 및 로그 분석을 제공하는 데 도움
|
- 서버리스 아키텍처의 원칙 -
AWS 서버리스 |
원칙 |
- 컴퓨팅 서비스를 사용해 요구에 맞게 코드를 실행(서버없이)
- 단일 목적의 상태 없는 함수를 작성(하나의 함수는 하나의 기능 제공)
- 푸시 기반, 이벤트 주도 파이프 라인을 설계
- 강한 프론트엔드를 만들어야 함(React, Angular, Vue..)
- 서트 파티 서비스를 받아들여야 함(소셜 로그인 등)
|
사용자가 다른 형식으로 변환된 비디오를 업로드하는 예시로
푸시 기반 설계의 파이프라인 스타일은 서버리스 아키텍처에서 작동
서버리스 구축
- 백엔드 API 기능을 Lambda 함수와 API Gateway로 구성 -
플라스크 서버가 수행하던 백엔드 API 서비스를 람다 함수로 대체