Serverless를 활용한 Backend API 개발
개요
Serverless 상품인 Cloud Functions 와 Samsung Cloud Platform의 서비스들을 조합하여, 서버에 대한 고민 없이 손쉽게 Backend API를 개발할 수 있습니다. Cloud Functions는 클라우드 환경에서 함수 형태의 애플리케이션을 빠르게 만들어서 실행하기 위한 서비스입니다. 실행할 전체 애플리케이션이나 서버 네트워크 등의 인프라를 고민하지 않고 문제해결에 필요한 코드만을 작성하여 배포할 수 있어 개발 생산성을 높일 수 있습니다.
Python, Node.js, PHP, Java, GO 등 개발 언어를 선택하여 사용할 수 있으며, 코드를 실행하기 위해 필요한 자원이 동적으로 할당되고 규모에 따라 유연하게 확장됩니다.
아키텍처 다이어그램
- PostgreSQL(DBaaS) 상품 서비스를 신청하여 애플리케이션을 위한 Data 를 구성한다.
- 애플리케이션 데이터를 빠르게 조회할 수 있도록 메모리 DB인 CacheStore 서비스를 신청하여 구성한다.
- 사진 이미지와 같은 정적 파일을 저장할 수 있는 Object Storage 상품 서비스를 신청하여 구성한다.
- 애플리케이션 개발을 위한 서버 구성 필요 없이 개발 코드로만 개발하여 PostgreSQL(DBaaS), CacheStore(DBaaS), Object Storage로 사용자가 요청한 데이터를 처리할 수 있도록 Cloud Functions으로 개발하여 서비스 한다. 사용자는 Cloud Functions 상품에서 제공하는 코드 작성 IDE 도구를 활용하여 애플리케이션 코드를 작성하여 Function으로 등록하면 사용자가 Request가 발생할 때 마다 호출되어 Backend 애플리케이션이 구동된다.
- Backend에서 개발된 애플리케이션을 사용자의 Web UI 또는 모바일로 노출하기 위한 API Gateway 상품 서비스를 신청하여 구성하고, Cloud Functions에서 개발된 API를 API Gateway에 등록하여 애플리케이션 서비스를 구성한다.
사용 사례
Mobile Backend
모바일 애플리케이션을 위한 Backend API 개발에 Cloud Functions 서비스를 활용할 수 있습니다. 서버를 프로비저닝하거나 관리할 필요가 없이, 코드를 작성하고 등록하는 것 만으로 즉시 실행 가능하여 빠르게 API 개발이 가능합니다. 코드를 배포하고 실행하기 위한 인프라가 자동화하여 관리되므로 개발자는 서비스를 구축하는데 집중할 수 있습니다. API Gateway 등 Samsung Cloud Platform 서비스와 연계하여 손쉽게 서비스를 확장 할 수 있습니다.
이벤트 알림 기능 개발
시스템의 개발/운영 시 필요한 다양한 알림(빌드 성공/실패, 서버 재기동 등) 기능 개발에 Cloud Functions 서비스를 활용할 수 있습니다. Cloud Functions 서비스를 활용하면 알림 기능에 필요한 이벤트 처리(Trigger, Process, Send)를 손쉽게 개발할 수 있으며, 이벤트 알림이 필요한 경우에만 자원이 동적으로 할당되고 이벤트 규모에 따라 자원이 확장되므로, 효율적인 자원 사용이 가능합니다.
선결 사항
없음
제약 사항
단위 Function을 구동하기 위한 최대 Memory에는 제한이 있으며, 단일 호출 건 최대 구동 시간에 대한 제한이 있습니다.
사용자VPC 내 구성되어 있는 어플리케이션이나 Database Service를 Function에서 호출하기 위해서는 PrivateLink Service를 통해서 연계할 수 있습니다.
API Gateway에서 사용자가 생성한 Function을 선택하여 자동 연계 가능합니다.
고려 사항
Cloud Functions는 이벤트에 응답하고 다른 서비스에 연결할 수 있게 해주는 Trigger와 Binding을 기반으로 한 프로그래밍 모델을 지원합니다 이러한 프로그래밍 모델에서 개발되는 애플리케이션은 상태 값을 저장하지 않는 구조여야 하며, 초기 구동 시간을 고려하여 적절한 사이즈로 Function이 개발되어야 합니다. 또한 Latency에 민감한 서비스에는 권장하지 않습니다.
관련 서비스
본 가이드에서 설명하는 기능 또는 구성과 연결되는 Samsung Cloud Platform의 서비스 목록입니다. 서비스 선택 및 설계 시에 참고하세요.
| 서비스군 | 서비스 | 상세 설명 |
|---|---|---|
| Compute | Cloud Functions | 서버리스 컴퓨팅 환경에서 애플리케이션 코드를 실행하는 서비스 |
| Storage | Object Storage | 데이터 저장 및 검색에 용이한 객체 스토리지 |
| Network | VPC Private Link Endpoint | 사용자 VPC를 인터넷에 노출하지 않고 VPC와 SCP 서비스간에 Private한 통신을 제공하는 서비스 |
| Database | PostgreSQL(DBaaS) | 오픈소스 PostgreSQL을 간편하게 생성하고 관리하는 서비스 |
| Database | CacheStore(DBaaS) | 빠른 데이터 처리 능력의 Key-value 인메모리 데이터 스토어 |
| Application Service | API Gateway | API를 손쉽게 관리 및 모니터링하는 서비스 |
