서버리스를 도입하게 된 계기는
서비스에 직접적으로 영향이 가는 API에서 광고 도메인을 분리하기로 결정이 되었고,
분리를 위한 아키텍처 구조는 서버리스를 사용하여 별도 자원 추가 없이 생성하기로 하였다.
최종적으로 사용한 아키텍처 구조는
Serverless Framework + AWS Lambda + AWS Api-Gateway 언어는 Node.js로 구성하였다.
블로그 포스팅의 목적인
서버리스(Serverless) ?
기존의 방식은 서비스를 배포하려면 항시 서버가 필요했고, 서버에 대한 개선 및 유지보수에 대한 인프라적인 문제가 존재한다.
이러한 문제를 해결하기 위해 생성된 것이 서버리스(Serverless)이다.
Serverless 라는 단어만 보면 서버가 없는건가 ? 라는 의문이 든다.
하지만 서버리스는 서버가 없는 것이 아니라 개발자가 인프라적인 부분에 집중하지 않아도 된다라는 의미가 더 크다.
기존에는 EC2 인스턴스로 서버를 생성하여 서비스를 배포하는 방식이었다면 Api-Gateway & Lambda를 이용하여 서비스를 배포하는 것이다.
요청을 보내는 Api-Gateway와 실질적인 비즈니스 로직을 실행하는 Lambda만 있으면 서버 생성이 가능하다.
Api-Gateway는 Lambda 함수를 호출하는 방식 중, 외부 서비스에서 호출하기 위해 이용하는 것으로, URL 라우트 역할을 수행하게 된다.
서버리스 프레임워크 (Serverless Framework) ?
서버리스 프레임워크는 한마디로 서버리스 아키텍처를 편하게 사용하여 개발할 수 있도록 제공해주는 프레임워크이다.
AWS 배포 시, 실제로는 서버리스 프레임워크 내, serverless.yml에 정의된 리소스들을 CloudFormation 템플릿으로
변환 후, CloudFormation을 통해 필요한 함수나 리소스를 생성해주게 된다.
CloudFormation ?
CloudFormation은 AWS에 대한 기본 서비스 호출을 실행하여 리소스를 생성해준다.
리소스 생성 시, 수행 권한(IAM)에 포함된 작업만 수행할 수 있다.
예를들어, CloudFormation을 사용하여 EC2 인스턴스를 생성하려면 인스턴스 생성 권한이 필요하고,
인스턴스가 포함된 스택을 삭제하는 경우에도 종료에 대한 권힌이 필요하다.
CloudFormation은 모두 템플릿으로 선언되며 EC2 인스턴스 생성을 위한 템플릿을 선언하게 되면
EC2 인스턴스 생성 API를 호출하여 유형을 지정하게 된다.
.json, .yaml 파일 형식으로 CloudFormation 템플릿을 생성 및 수정할 수 있으며,
서버리스 프레임워크에 serverless.yaml 파일을 통해 템플릿을 생성 및 수정할 수도 있다.
서버리스 (Serverless) 의 이점 ?
가장 큰 이점은 비용이다.
기존 EC2를 통한 서버 생성은 서버 사용량과 무관하게 비용이 발생되지만,
Lambda 함수의 경우 사용한 만큼만 과금하게 된다.
즉, 서버리스는 대용량 데이터 처리 기능이나 무거운 작업이 아닌 단순 요청, 응답을 처리하는 RestFul 방식의 API 서비스를 구축할 경우 서버 운영 비용을 크게 절감할 수 있다.
'배움 기록_실무 ✏️' 카테고리의 다른 글
AWS Simple Queue Service (SQS) (0) | 2023.02.23 |
---|---|
정적 메서드(static method) (0) | 2022.10.17 |
static의 모든 것 (0) | 2022.10.10 |
AWS Database Migration Workshop (1) | 2022.05.25 |
구글 OAuth2 인증 방식 (0) | 2022.03.29 |