서버리스 아키텍처란?
- 개발자가 기본 아키텍처를 관리하지 않고 애플리케이션을 빌드하고 관리할 수 있는 소프트웨어 설계 접근 방식으로, Google Cloud, AWS 등의 회사에서 서비스를 진행중이다.
- 이 때, '서버리스(Serverless)'라는 용어가 오해를 살 수도 있으나, 서버리스 아키텍처는 서버가 없다는 의미가 아닌 개발팀의 서버 및 서버 관리 업무를 없애도록 설계되었다는 의미에 더 가까움
서버리스 아키텍처의 필요성
- 개발자 생산성 향상
개발자는 서버 관리에 시간을 들이는 대신 코드 작성과 비즈니스 로직 최적화에 집중할 수 있으므로 생산성이 향상됨
- 효율적인 확장성
클라우드 공급업체는 서버리스 환경에서 Auto Scaling 기능을 제공하므로 서버리스 애플리케이션은 수요 0에서 최대 수요까지 자동으로 확장되어서 개발자가 코드를 작성할 때 사용량을 고려할 필요가 없음
서버리스 아키텍처의 작동방식
- front-end에는 시각적 레이아웃, 버튼, 디스플레이 텍스트 등 최종 사용자가 상호 작용하는 모든 요소가 포함됨
- back-end에는 데이터 저장 및 처리와 같이 사용자가 액세스할 수 없는 기능이 포함됨
- 서버리스 아키텍처에서는,
개발자가 클라우드 제공업체에서 제공하는 클라우드 인프라에 백엔드 코드를 배포함
서버리스 애플리케이션의 핵심은 이벤트(서비스간에 전송되는 메시지)를 게시, 소비 또는 라우팅하는 분리된 소형 서비스에서 구축된 현대적 아키텍처 패턴인 이벤트 기반 아키텍처로, 시스템의 개별 구성 요소를 쉽게 확장하고 업데이트하고 독립적으로 배포할 수 있게 해줌
프로그램에서 작성한 함수를 실행하려면 CPU 및 메모리와 같은 컴퓨팅 리소스가 필요하므로 클라우드 제공업체는 필요한 경우에만 이러한 리소스를 할당하여 서버리스 기능을 실행할 수 있는 임시 환경을 만듦

- 이벤트 기반 서버리스 마이크로서비스

서버리스 아키텍처의 유형
-
서비스형 기능
서비스형 기능(FaaS)은 개발자가 사용자 지정 백엔드 함수를 작성하고 함수 코드를 클라우드 인프라에 직접 배포하는 데 사용할 수 있는 서버리스 아키텍처이며 함수가 직접 호출되면 클라우드 제공업체는 기존 활성 서버에서 함수를 실행하거나 필요한 경우 새 서버를 가동한다.
-
서비스형 백엔드
서비스형 백엔드(BaaS)를 통해 개발자는 API를 사용하여 백엔드 기능에 액세스할 수 있으며 API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다.
출처: https://aws.amazon.com/ko/?nc2=h_lg, https://cloud.google.com/?hl=ko