
들어가며
MVP 라는 용어가 있다. 그 뜻은 당신이 속한 집단에 따라 다르게 쓰이겠지만, 주로 일정에 쫓겨 버그투성이 코드를 리팩터링하지 못하고 출시해야 되거나, 혹은 출시하지 못하게 될 것이라는 의미이다. 당신이 Lean한 조직에 속하게 되거나, 신규 프로젝트에 참여한다고 가정하자. 먼저 MVP를 개발한 뒤, 그것으로 데이터를 수집하고 이후 고도화하는 경우가 많을 것이다. 한정된 자원을 가진 상태에서, 성공할지 말지 모르는 프로젝트에 모든 자원을 쏟아부을 수는 없다.
사이드 프로젝트의 경우도 마찬가지다. 수익이 전혀 나지 않을 프로젝트에 참가할 인원을 구하는 것부터 쉽지 않으며(특히 당신이 주니어라면), 어렵게 구한 팀원이 충분한 열정과 끈기를 가지고 프로젝트를 완수하지 않는 경우도 심심치 않게 나타날 것이다. 혹은 그냥 필자처럼 여러 신기술을 학습해보기 위해 혼자 토이 프로젝트를 진행해보다가 포기하는 것을 좋아할 수도 있다. 당신이 앞의 상황들 중 하나에 해당한다면, 백엔드를 파이어베이스로 대체하는 것을 강력히 추천한다.
물론 개인의 성장에 있어 가장 좋은 방법은 직접 백엔드를 학습하여 서버를 구축하는 것이다. JS를 공유하는 Node js도 있고, 학습하기 쉬운 Python의 Flask나 Fast API, 마스코트가 귀여운 Golang을 사용해서 서버를 구축할 수도 있다. 하지만 대부분의 소규모 프로젝트의 경우, 그렇게 복잡한 서버까지는 필요하지 않다. 초기에는 서비스를 사용하는 유저 수도 적을 것이고, 각 유저들이 서버에 보내는 요청도 적을 것이다. 이런 상황에서 백엔드 구축을 위한 학습을 하는 것은, 프론트엔드에 사용할 자원을 낭비하는 일이 될 수도 있다. 그리고, 파이어베이스는 그런 리소스들을 아껴줄 것이다.
파이어베이스의 대표 기능
- 실시간 데이터베이스: 페이지를 새로고침하지 않고도 실시간으로 업데이트되는 웹사이트를 구축할 수 있는 실시간 데이터베이스를 제공한다. 세부적으로 두 종류로 나뉜다.
- 호스팅: CDN에서 웹사이트 및 정적 콘텐츠를 호스팅할 수 있는 호스팅 서비스를 제공한다.
- 인증: 사용자 인증 및 권한 부여 기능을 빠르고 쉽게 구현할 수 있는 인증 서비스를 제공한다.
- 저장소: 별도의 서버 없이 이미지 및 동영상과 같은 사용자 생성 콘텐츠를 저장하고 제공할 수 있는 클라우드 저장소를 제공한다.
내가 꼽는 장점
- 기본적으로 무료로 사용할 수 있으므로 비용 없이 실험해 볼 수 있다. 플랜을 변경하면 Cloud Function과 같은 강력한 기능에 액세스할 수도 있다.
- 백엔드 구축 혹은 그것을 위한 학습, EC2등의 클라우드 환경 설정 역시 필요 없다.
- 사용하기 쉬운 API를 제공하고 잘 문서화되어 있으며 많은 예제가 있다.
- 웹 말고도 다양한 언어를 지원하기 때문에 이후 다른 언어를 공부할 때에도 사용할 수 있다.

마치며
앞으로 계속 강조하겠지만, 이것은 절대 파이어베이스가 만능이며, 백엔드가 더 이상 필요하지 않은 구시대의 산물임을 주장하는 글이 아니다. 파이어베이스는 소규모 프로젝트를 빠르고 쉽게 구축할 수 있는 많은 이점을 제공하지만 더 크고 복잡한 프로젝트에는 쓰기 어렵다. 고려해야 할 몇 가지 잠재적인 단점으로는 항상 공개된 API키, 제한된 확장성, 백엔드 인프라에 대한 통제력 부족, 클라우드 자체의 단점 등이 있다. 보안이나 서버측 작업이 많이 필요한 서비스에 대해서는 부적절한 선택이 될 것이다.
그럼에도 이렇게 추천하는 이유는, 프론트엔드 개발자가 파이어베이스를 배우면 혼자서도 할 수 있는 일이 배 이상 늘어나기 때문이다. 특히 주니어 프론트 개발자의 토이 프로젝트에 필요할 간단한 CRUD 정도라면 파이어베이스를 통해 간단히 구현 가능하다.
본 시리즈를 통해 많은 주니어 프론트 개발자가 파이어베이스를 접하길 바란다.