서버리스란?
1. 물리 장비
물리머신 상에서 워크로드를 운영했음, 이 경우 소프트웨어를 자체적으로 보유한 서버에 직접 설치하여 운영, 이런 물리 서버를 운영하는 경우 서버를 구매하고 배송받는 데도 시간이 오래 걸리지만, 설치하고 운영하는 데도 오랜 시간이 소요됨, 또한 급격한 트래픽 변화에 즉각적으로 대응하는 것이 어려웠음
- 추측에 기반한 계획 필요
- IDC에서 수년간 운영
- 높은 투자 비용
- 낮은 혁신 요인
- 수개월의 배포 기간
2. 가상 머신(VM)
그 다음에는 클라우드 환경으로 이동하여 Amazon EC2와 같은 가상머신을 이용하는 형태로 변화, 하드웨어를 직접 관리하지 않고, 요청에 맞게 인스턴스를 유연하게 확장하고 축소하는 스케일링이 가능해짐
- 하드웨어 독립성
- 더 빠른 프로비저닝 속도(분/시간)
- 초기 비용 투자 필요
- 스케일 가능
- 탄력적인 자원
- 더 빠른 속도와 민첩성
- 유지 관리 비용 감소
3. 기본적인 컨테이너화
그 다음 단계로 각 서비스를 컨테이너화시켜 시스템 간 결합도를 낮추고 컴퓨팅 환경에 대한 종속성을 낮추게 됨
컨테이너를 사용하게 되면 더 쉽고 빠르게 배포할 수 있지만, 여전히 인프라를 구성하고 운영체제를 업데이트하거나 패치를 진행해야 함
- 플랫폼 독립성
- 일관된 런타임 환경
- 더 높은 자원 활용도
- 더 쉽고 빠른 배포
- 격리 및 샌드박싱
- 더 빠른 배포 속도
4. 서버리스
서버리스란 서버관리/패치/스케일링/가용성을 고려하지 않고 코드 작성에만 집중할 수 있게 함
- 지속적인 스케일링
- 내장된 내결함성
- 사용량에 따른 비용
- 최소한의 유지보수
- 함수 및 컨테이너
컴퓨팅이 진화할 수록 추상화 수준이 높아지고 비즈니스 로직 집중도 또한 높아짐, 서버리스 서비스란 개발팀이 비즈니스 문제를 해결하는 코드 작성에 집중할 수 있도록 함. 이렇게 할 수 있는 이유는 차별화되지 않는 운영작업을 클라우드 공급자에게 넘겨 애플리케이션의 관리 및 확장을 간소화하기 때문

서버리스를 사용하는 이유?
1. 불필요한 인프라 프로비저닝 및 관리(서버 프로비저닝, 패치 등)
2. 자동 확장
3. 사용한 만큼만 지불
4. 높은 가용성과 내결함성, 안정성
클라우드 아키텍쳐에서는 애플리케이션 배포를 여러 가용 영역에 분산하고 단일 장애 지점을 제거하는 것이 중요, 서버리스 기술을 활용하면 AWS가 높은 가용성과 내결함성을 갖추도록 인프라를 관리해 줌
이로 인해 이용자들은 차별화된 서비스를 구축하는 데 집중할 수 있음
이러한 요인으로 인해 비용을 절감하고 빠른 민첩성과 혁신을 필요로 하는 스타트업에서 서버리스 기능을 활용할 수 있음

AWS서버리스 서비스는 컴퓨팅에 국한되지 않고, 스토리지/애플리케이션 통합/스트리밍 서비스까지 제공 가능함

이러한 방식의 아키텍쳐 구성을 통해 이용자들은 서버를 관리할 필요 없이, 애플리케이션은 자동으로 확장되며, 고가용성을 지니게 되고, 유휴 용량에 대한 비용을 지불할 필요가 없음
1. AWS Amplify를 통해 HTML,CSS,Javascript 등 정적 웹 리소스를 호스팅
- AWS에 대한 지식이 없더라도 풀스택 웹 및 모바일을 몇시간 안에 구축할 수 있도록 지원하는 도구 및 서비스 센터
- 인증, 데이터, 스토리지 및 기타 기능이 포함된 웹, IOS, Android용 백엔드를 몇 분 안에 생성할 수 있으며, 설계부터 코드에 이르는 Figma 통합을 통해 프론트엔드 UI를 구축 가능함
- 몇 번의 클릭으로 UI를 백엔드에 연결할 수 있으며, 몇 번의 클릭으로 웹 앱을 AWS 컨텐츠 전송 네트워크인 CDN에 호스팅할 수 있음

- 위 기능 중 Amplify Hosting은 빠르고 안전하며, 신뢰할 수 있는 정적 및 서버 측 렌더링 앱을 위한 완전관리형 CI/CD 호스팅 서비스
React, Angular, Vue.js등 최신 웹 프레임워크를 제공
사용자의 Git 저장소를 Amplify Hosting에 연결하여 빌드 서비스를 구축하면 Code Commit을 통해 변경사항이 발생할 때마다 자동으로 앱이 배포됨(오오!!)
2. Amazon API Gateway를 통해 백엔드 서비스의 데이터, 비즈니스 로직, 또는 기능에 액세스할 수 있는 관문 역할
- Amazon API Gateway는 개발자가 어떤 규모에서든 API를 손쉽게 생성하고 게시, 유지관리, 모니터링할 수 있는 완전관리형 서비스
- 말 그대로 API 서비스를 제공, API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직, 기능에 액세스할 수 있는 정문 역할을 수행함, API 게이트는 람다 함수를 호출하거나 다른 AWS 서비스와 통합할 수 있으며, 기타 외부 API를 호출하는 일종의 프록시 역할을 수행할 수 있음
- API Gateway는 수십만 개의 동시 API 호출을 수락하고 처리하기 위한 모든 작업을 처리함
- 트래픽 관리, 권한부여, 액세스 제어, 조절, 모니터링, API 버전 관리 등의 작업들을 처리함
- API Gateway는 요청/응답 기반의 RESTful API와 양방향 통신이 가능한 Web socket API를 지원

- RESTful API는 HTTP프로토콜을 기반으로 REST API, HTTP API 두가지 옵션으로 제공
- HTTP API는 최소한의 기능으로 설계되어 더 낮은 가격으로 사용할 수 있음
- REST API는 HTTP API보다 더 많은 기능을 지원함(API키, 클라이언트 제한, 요청 검증 등 여러 기능이 필요한 경우 REST API를 사용할 수 있으며, REST API에 포함된 기능이 필요하지 않으면 HTTP API를 선택할 수 있음)
- Web Socket API는 양방향 통신이 가능하고 상태 저장이 가능, 채팅 어플리케이션이나 협업 플랫폼, 금융거래 플랫폼과 같은 실시간 애플리케이션을 구축할 때 사용됨
3. 서버리스 컴퓨팅 서비스인 AWS Lambda를 이용하여 백엔드 API로부터 데이터를 전송하고 수신함
- AWS 람다는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스
- 람다가 지원하는 언어인 node.js, Python, Java, Go 등의 언어로 코드를 작성하면 됨
- Lambda는 이벤트가 발생했을 때 호출되어 실행됨(예를 들어, 데이터 상태가 변화하거나, 서비스 엔드포인트로부터 요청을 수신한 경우, 특정 리소스의 상태가 바뀐 경우 람다 함수를 호출할 수 있음)
- Lambda가 실행되면 데이터를 저장하거나 또 다른 AWS 서비스를 호출하거나 기타 백엔드 작업을 수행함

4. Amazon DynamoDB는 NoSQL 데이터베이스 서비스로 애플리케이션 데이터를 저장함

- NoSQL은 쉽게 확장되며 유연한 스키마에 데이터를 저장하는 DB 기술
- 흔히 NoSQL이란 용어는 비관계형이라는 용어와 같은 의미로 사용되는데, NoSQL 데이터베이스는 키-값 쌍, 문서, 그래프, 열 등 성능과 규모 확장에 최적화된 다양한 데이터모델을 제공함
- Dynamo DB는 키-값 쌍 데이터를 저장하는 거의 무제한의 확장성을 갖춘 서버리스 성능을 지님
- Dynamo DB를 사용하면 서버를 프로비저닝하거나 패치를 적용할 필요가 없음
- 소프트웨어를 설치, 관리, 운영할 필요가 없음
'AWS > AWS builders' 카테고리의 다른 글
| Track2) FMOps/LLMOps와 MLOps 차이점 비교 및 생성형 AI 운영하기(작성중) (0) | 2024.02.23 |
|---|---|
| (AWS기초) Amazon EC2로 첫 워크로드 시작하기 (2) | 2024.01.18 |
| (AWS기초) Amazon VPC와 On-premise 연결하기 (0) | 2024.01.18 |
| (AWS기초)초보자를 위한 컨테이너 시작하기 (0) | 2024.01.18 |
| AWS 기초 (2) | 2024.01.18 |