Flutter + Firebase Serverless
하나의 서비스를 만든다고 생각해 봅시다. 사용자가 이용할 수 있는 프런트엔드 (앱, 웹 등)이 필요하고 거기에 데이터를 제공하는 백엔드가 있어야 하며 백엔드가 데이터를 읽고 쓸 수 있는 데이터베이스가 필요합니다. 또한 서비스를 운영하려면 인프라 엔지니어가 필요할 것입니다. 풀 스택 개발자 하나면 충분하겠고 만약 없다면 최소 3명, 백엔드 개발자가 인프라까지 가능하다면 최소 2명이 필요합니다. 하지만 개인적인 토이 프로젝트나 빠르게 검증을 해야 하는 MVP(Minimum Viable Product) 성격의 경우에는 과도한 리소스가 될 수도 있습니다.
AWS의 등장으로 본격적인 Cloud의 시대가 열리고 2010년대에 들어서는 Serverless라는 키워드가 대두되기 시작하면서 1인 개발자 (주로 앱 개발자들)에게 있어서는 벡엔드 개발자에 의존하거나 백엔드 개발에 부담을 덜 느끼며 개발을 할 수 있는 환경이 구성되었습니다. 따라서 1인 개발자가 빠르게(비교적) 프로덕트를 개발할 수 있는 시대에 이미 와 있는 것이죠.
많은 개발자들은 효율을 중시합니다. 어떻게 하면 적은 인력으로 최선의 퍼포먼스를 낼 수 있는지 항상 고민합니다. 그것이 코드로 되었든 혹은 자동화가 되었든 많은 시도가 이루어졌고 많은 프레임워크들이 개발되어있습니다. 특히 앱은 AOS(안드로이드)와 iOS(아이폰)이라는 양대상맥의 플랫폼이 대립되어 하나의 서비스도 두 개의 플랫폼으로 개발해야 하는 상황이었습니다. 비즈니스 로직은 같은데 개발 공수가 두 배 이상으로 들게 되니 하이브리드에 대한 니즈는 당연히 있을 수밖에 없었을 거라 생각합니다. 여러 가지 하이브리드 프레임워크들이 있지만 굳이 설명은 하지 않겠습니다. 이 글의 목적은 작은 프로젝트를 통해 Serverless를 체험해 보는 것입니다. (개인적으로 와인을 좋아하고 모임을 하고 있어 간단하게 와인 모임 앱을 만들어 보려 합니다)
1. Flutter - AOS와 iOS 프런트엔드를 만들 프레임워크
2. Firebase - 앱 개발 플랫폼 (데이터베이스, 벡엔드, 분석, 성장 등)
1. Database - 데이터 저장을 위해 사용합니다.
2. Cloud Function - 백엔드에서 데이터베이스, 인증등에 접근해 요청을 처리하는 역할을 합니다.
3. Hosting - https 통신을 Cloud Function에 연결하는 역할을 합니다.
흔히 알고 있는 백엔드 서버에서의 API의 엔드포인트를 Cloud Function으로 만드는 게 주요 포인트입니다. 서버 코드를 배포하는 것이 아닌 함수를 배포하는 것으로 Serverless의 핵심이라고 볼 수 있습니다. Firebase SDK와 인증 정보를 이용하므로 database나 자체 제공하는 인증에 대해서도 자유롭게 접근할 수 있으며 필요한 함수만 만들어 배포하면 되니 생상성 측면에서 많은 이득이 생기게 됩니다.
Flutter
Firebase
https://firebase.google.com/docs/firestore/client/libraries?hl=ko
준비물들을 챙기고 개발환경이 설정됐습니다. Serverless에 중점을 둔 글이다 보니 Flutter로 프런트엔드를 구성하는 내용은 생략하고 다음 글에서는 데이터베이스 생성과 Cloud Function과의 연동 그리고 Hosting을 이용한 프런트엔드에서 API 호출에 대해 다루어보겠습니다.