서비스형 함수
1. 개요
서비스형 함수(FaaS)는 사용하지 않을 때는 지원 인프라의 전원을 끄고 요금이 발생하지 않도록 하는 "온디맨드" 기능을 통해 일괄 처리, 스트림 처리, ETL, IoT 서비스, 모바일 및 웹 애플리케이션 등 다양한 분야에서 활용된다. FaaS는 기존 애플리케이션의 API 생성에도 사용된다.
FaaS 아키텍처의 안티 패턴으로는 함수가 지나치게 세분화되어 발생하는 "모래알 안티 패턴"이 있으며, 이는 통신 오버헤드 증가, 운영 복잡성 증가, 응집력 감소로 이어진다. FaaS는 특정 클라우드 제공 업체에 종속될 수 있으며, 육각형 아키텍처를 통해 이식성을 높일 수 있다.
PaaS와 비교했을 때, FaaS는 서버 프로세스를 끊임없이 실행할 필요가 없어 더 높은 확장성과 낮은 비용을 제공하지만, 초기 요청 처리 시간이 더 오래 걸릴 수 있다.
| 유형 | 클라우드 컴퓨팅 서비스 |
|---|---|
| 종류 | 서버리스 컴퓨팅 |
| 설명 | 서버 관리를 추상화하고 이벤트에 의해 트리거되는 함수 실행을 제공하는 클라우드 컴퓨팅 서비스 |
| 관련된 개념 | 마이크로서비스, 클라우드 네이티브 애플리케이션, DevOps |
| 주요 특징 | 서버 관리 추상화 이벤트 기반 트리거 사용량 기반 요금 자동 확장 |
|---|---|
| 장점 | 개발 생산성 향상 운영 비용 절감 확장성 및 가용성 향상 |
| 단점 | 콜드 스타트 디버깅 및 모니터링의 복잡성 벤더 종속성 |
| 실행 모델 | 이벤트 기반 |
|---|---|
| 프로그래밍 모델 | 함수형 프로그래밍 |
| 지원 언어 | 자바 파이썬 Node.js Go C# |
| 주요 제공업체 | AWS Lambda Google Cloud Functions Azure Functions IBM Cloud Functions Alibaba Cloud Function Compute Netlify Functions Vercel |
|---|
| 일반적인 활용 사례 | 웹 애플리케이션 백엔드 모바일 애플리케이션 백엔드 데이터 처리 및 분석 실시간 스트리밍 처리 챗봇 IoT (사물 인터넷) 애플리케이션 |
|---|
| 참고 자료 | 마틴 파울러의 "서버리스 아키텍처" (외부 링크) PiCloud 서버리스 컴퓨팅 플랫폼 출시 (TechCrunch 기사) (외부 링크) AWS Lambda 출시 (Amazon Web Services 릴리스 정보) (외부 링크) |
|---|
-
클라우드 플랫폼 -
마이크로소프트 애저
마이크로소프트 애저는 전 세계 데이터 센터를 통해 600개 이상의 서비스를 제공하는 마이크로소프트의 클라우드 컴퓨팅 플랫폼으로, 다양한 컴퓨팅, 데이터베이스, 스토리지, AI, IoT 기능과 개발자 지원 서비스를 제공하지만 복잡한 가격 모델과 서비스 장애 및 보안 문제가 우려된다. -
클라우드 플랫폼 -
헤로쿠
헤로쿠는 James Lindenbaum, Adam Wiggins, Orion Henry에 의해 개발되어 세일즈포스닷컴에 인수된 클라우드 플랫폼 서비스이며, 다양한 프로그래밍 언어와 데이터베이스를 지원하고 여러 서비스를 제공하며, 보안 침해와 무료 플랜 중단, 플랫폼 재구축을 겪었다. -
서비스형 -
서비스형 게임
서비스형 게임은 게임을 지속적인 서비스로 제공하는 비즈니스 모델로, MMO 구독 모델에서 시작하여 모바일 게임 시장과 함께 확산되었지만, Pay-to-win 논란, 뽑기 시스템의 도박성 등 법적, 윤리적 문제점도 제기되고 있다. -
서비스형 -
클라우드 데이터베이스
클라우드 데이터베이스는 클라우드 컴퓨팅 환경에서 제공되는 데이터베이스 서비스로, 가상 머신 이미지 방식과 서비스형 데이터베이스 모델로 나뉘며, SQL/NoSQL 데이터베이스를 지원하고 확장성, 고가용성 등의 특징을 가진다.
2. 사용 사례
FaaS는 사용하지 않을 때는 지원 인프라의 전원을 끄고 요금이 발생하지 않도록 하는 "온디맨드" 기능과 관련이 있다. FaaS는 일괄 처리, 스트림 처리, 추출-변환-적재(ETL), 사물 인터넷(IoT) 서비스, 모바일 앱리케이션 및 웹 애플리케이션 등 다양한 분야에서 활용될 수 있다.
2.1. 데이터 처리
FaaS는 일괄 처리, 스트림 처리, ETL 등의 데이터 처리 작업에 적합하다.
2.2. IoT, 모바일 및 웹 애플리케이션
사물 인터넷(IoT) 서비스, 모바일 앱리케이션 및 웹 애플리케이션 개발에도 FaaS가 활용될 수 있다.
3.1. 모래알 안티 패턴
모래알 안티 패턴은 서비스형 함수(FaaS) 아키텍처에서 흔히 나타나는 안티 패턴 중 하나로, 소프트웨어 아키텍트 마크 리차즈가 명명했다. 이 안티 패턴은 함수가 지나치게 세분화되어 사소한 작업이나 과도하게 특정한 작업만 수행할 때 발생한다.
모듈성은 FaaS의 주요 장점이지만, 극심한 분할은 다음과 같은 문제를 야기할 수 있다.
* 통신 오버헤드 증가: 지나치게 세분화된 함수는 다른 함수 또는 서비스와 빈번하게 상호 작용해야 하는 경우가 많아 대기 시간이 길어진다.
* 운영 복잡성 증가: 지나치게 많은 수의 함수는 관리 및 운영을 어렵게 만든다.
* 응집력 감소: 함수가 너무 작게 쪼개지면 전체 시스템의 응집력이 떨어져 유지보수가 어려워진다.
이러한 문제로 인해 시스템이 긴밀하게 결합될 수 있다.
모래알 안티 패턴을 피하려면, 함수가 의미 있는 비즈니스 로직을 캡슐화하고 세분성과 응집력 사이의 균형을 유지해야 한다.
4.1. 해결 방안
육각형 아키텍처 같은 방법을 통해 워크로드의 이식성을 높일 수 있다.
5. PaaS와의 비교
서비스형 플랫폼(PaaS)과 FaaS는 모두 개발자로부터 서버를 숨긴다는 공통점을 가지고 있지만, PaaS는 서버 프로세스를 항상 실행하는 반면 FaaS는 필요할 때만 실행하여 비용은 절감되지만 초기 요청 처리 시간이 길어질 수 있다는 차이점이 있다.
5.1. 실행 방식
서비스형 플랫폼(PaaS) 애플리케이션 호스팅 서비스는 개발자로부터 "서버"를 숨긴다는 점에서 FaaS와 유사하지만, 일반적으로 외부 요청을 수신하는 서버 프로세스를 적어도 하나 이상 항상 실행한다.
반면, FaaS는 서버 프로세스를 끊임없이 실행할 필요가 없다. 초기 요청 처리는 애플리케이션 호스팅 플랫폼보다 시간이 더 오래 걸릴 수 있지만(최대 수 초), 캐싱을 통해 후속 요청은 수 밀리초 내에 처리할 수 있다. 개발자는 함수 실행 시간에 대해서만 비용을 지불하므로(프로세스 유휴 시간 없음), 더 높은 확장성으로 더 낮은 비용을 달성할 수 있다(지연 시간 증가의 대가로).
5.2. 확장성
서비스형 플랫폼(PaaS) 애플리케이션 호스팅 서비스는 개발자로부터 "서버"를 숨긴다는 점에서 FaaS와 유사하다. 하지만 이러한 호스팅 서비스는 일반적으로 외부 요청을 수신하는 서버 프로세스를 적어도 하나 이상 항상 실행한다. 확장성은 더 많은 서버 프로세스를 부팅하여 달성되며, 개발자는 이에 대한 비용을 직접 지불한다. 결과적으로 개발자는 확장성을 직접 확인해야 한다.
반면, FaaS는 서버 프로세스를 끊임없이 실행할 필요가 없다. 초기 요청 처리에는 애플리케이션 호스팅 플랫폼보다 시간이 더 오래 걸릴 수 있지만(최대 수 초), 캐싱을 통해 후속 요청은 수 밀리초 내에 처리될 수 있다. 개발자는 함수 실행 시간에 대해서만 비용을 지불하므로(프로세스 유휴 시간 없음), 더 높은 확장성과 더 낮은 비용을 달성할 수 있다(지연 시간 증가의 대가로).
5.3. 비용
서비스형 플랫폼(PaaS) 애플리케이션 호스팅 서비스는 개발자로부터 "서버"를 숨긴다는 점에서 FaaS와 유사하다. 하지만 이러한 호스팅 서비스는 일반적으로 외부 요청을 수신하는 서버 프로세스를 적어도 하나 이상 항상 실행하며, 확장성은 더 많은 서버 프로세스를 부팅하여 달성된다. 개발자는 이에 대한 비용을 직접 지불한다.
반면, FaaS는 서버 프로세스를 끊임없이 실행할 필요가 없다. 개발자는 함수 실행 시간에 대해서만 비용을 지불하므로(프로세스 유휴 시간 없음), 더 높은 확장성으로 더 낮은 비용을 달성할 수 있다(지연 시간 증가의 대가로).
5.4. 지연 시간
서비스형 플랫폼(PaaS) 애플리케이션 호스팅 서비스는 개발자로부터 "서버"를 숨긴다는 점에서 FaaS와 유사하다. 하지만 이러한 호스팅 서비스는 일반적으로 외부 요청을 수신하는 서버 프로세스를 적어도 하나 이상 항상 실행한다. 반면, FaaS는 서버 프로세스를 끊임없이 실행할 필요가 없다. 초기 요청 처리에는 애플리케이션 호스팅 플랫폼보다 시간이 더 오래 걸릴 수 있지만(최대 수 초), 캐싱을 통해 후속 요청은 수 밀리초 내에 처리될 수 있다.