요즘 나는 덤벨과 맨몸운동, 그리고 유산소 운동을 자주 하는 중이다.
그러던 어느날, 점진적 과부하를 위해 운동일지를 틈날 때마다 기록하는 것이 좋겠다고 생각했고, 마침 친구와 함께 리액트 스터디를 진행중이었으므로 리액트로 운동일지 다이어리를 만들어보면 어떨까 생각하게 됐다.
FE를 리액트로, BE는 무엇으로 할까 고민하던 차에,
이번 기회에 firebase를 한 번 써보기로 했다.
Firebase에는 정말 다양한 기능들이 있다.
Authentication(인증 권한), Cloud Storage(데이터베이스), Hosting(호스팅), ML(머신러닝) 등 백엔드에서 처리해주는 기능들이 되게 많다.
특히 인증 기능은 소셜로그인(google, github 계정 연동)도 지원하며, 기능을 빌려오는 데 5~10분 정도밖에 걸리지 않는다고 한다. 스프링시큐리티로는 꽤나 고생했던 기억이 있는데 다행이다ㅎㅎ...
주의할 점은, firebase가 AWS EC2와 마찬가지로 완전히 무료는 아니라는점!
그런데, 사실상 소규모 프로젝트에선 무료라고 봐도 상관없는 점이, 프로젝트 DB 유저가 10,000명 이하일 경우는 무료, 초과일 경우 비용이 부과된다. Storage용량은 text는 1GB, 이미지는 5GB까진 무료이며, 초과할 경우 text는 GB당 18센트, GB당 $0.026이며, 읽기/쓰기/삭제의 경우도 꽤나 넉넉한 케이스까진 무료이기 때문에 걱정할 필요는 없어보인다.
내가 공부하려는 것은 firebase DB이다.
굉장히 단순하다고 홍보하긴 하지만, 오늘 세팅을 시도해본 결과 생각보다 환경설정은 쉽지 않아 노마드코더 강의를 보면서 공부해볼 예정이다.
참고로, firebase와 유사한 AWS에서 개발한 amplify라는 것도 있다.
https://aws.amazon.com/ko/amplify/
이것 또한 backend와 hosting 기능을 대신 처리해주는 Firebase와 거의 판박인 기능들을 제공해준다.
현재로썬 firebase가 역사도 길고, 편리성이나 접근성이 좋아 더 많이 사용한다고 한다.
그렇다면 이제 Backend는 필요없는 시대가 온걸까?
어떻게 보면 그렇게 생각할 수도 있다.
그러나, firebase나 amplify를 이용하여 본격적인 비즈니스 프로젝트를 사용하는 것은 흔히 권장하는 방법이 아니라고 한다.
Firebase나 Amplify를 이용한다는 것은 Backend 로직이나 DB, Server를 자신의 것이 아닌 결국 구글이나 AWS에 빌려서 쓰는 셈이나 마찬가지이기 때문이다.
결국 firebase, amplify의 DB, backend를 빌려쓰는 것은 간단한 프로젝트일 때만 하는 것을 추천한다.
그럼 나는 왜 Firebase를 쓰는걸까?
원래는 운동일지 다이어리 프로젝트 FE는 react로, BE는 Spring boot를 이용한 Java로 진행해볼까 생각했다.
나는 백엔드 개발을 희망하는 학생이고, 친구는 React를 공부중인 상황이기 때문에 찰떡처럼 맞지 않을까 싶었는데도, firebase를 선택한 이유는 아래와 같다.
- 백엔드(로직, 인증, 검증, DB 처리)에 시간쓰기보단, 프론트(react)에 집중하여 공부하기 위해서
- 프로젝트 규모가 비교적 작고 간단하며, 작은 프로젝트로 github 협업 경험을 쌓아보기 위해서
- 이 때 아니면 Firebase를 언제 써보겠나 싶어서
- 실시간으로 운동일지를 기록하고 열람하고 싶어 hosting을 간단하게 하기 위해서
사실 hosting은 AWS로 연습해보고 싶은데, 지금 내가 해외결제가 가능한 카드가 없다 ㅎㅎ
아무튼 이번 기회에 firebase + react 경험도 쌓고,
협업 경험도 쌓아볼 수 있는 좋은 기회가 올 것 같다.