FireBase & Cloudinary

Southbig·2022년 9월 6일
0

FireBase란?

모바일 서버를 개발하기 위해서는 인증, 데이터베이스, 푸시 알람, 스토리지, API 등 모든것을 개발해야 했다
하지만 모바일 서버는 이런 모든 것을 구성하는데 구성하는 범위가 매번 새로운 앱들과 차이 나지 않기 때문에 리눅스를 설치하고, FTP를 설치하고, 데이터베이스를 설치하고, 노드 서버나 스프링 서버를 올리고, 방화벽을 올리고, 도메인을 구입하는 등 이런 반복적인 작업을 앱 개발 할 대마다 하는 것은 엄청난 시간낭비다

FireBase는 이 모든 플렛폼을 프로젝트 구축 시 자동적으로 만들어 준다
또한 서버를 구축하기 위해서 리눅스 명령어를 알 필요도 없으며 도메인을 구입할 필요도 없고 개발하는 동안에는 서버를 구입할 필요도 없다

FireBase라는 플랫폼을 사용하면 프론트엔드 개발자와 백엔드 개발의 경계가 모호해 질 것이다

FireBase의 대표적인 기능

인증, 데이터베이스, 스토리지, 원격 구성, 푸시 알람

FireBase의 장점

1. 인증 시스템을 지원, 인증은 Firebase 에서 로그인을 담당한다

로그인을 담당하는 부분은 직접 서버로 개발할 경우 엄청나게 복잡하다
그 이유는 인증된 사용자인지 확인하는 세션처리에서 그 세션으로 데이터베이스, 저장소에 접근해도 문제가 없는지 확인하는 보안처리, 비밀번호 찾기, 아이디 찾기, 비밀번호 바꾸기, 이메일 인증 등 복잡한 것을 구축해야 한다
하지만 FireBase는 이 모든것들을 지원합니다

2. FireBase는 NoSQl 기반의 3세대 데이터베이스다

현재 많이 사용되는 오라클이나, MySQL 같은 관계형 데이터베이스보다, FireBase는 Document 형식의 빠르고 간편한 NoSQL기반의 데이터베이스를 도입했다
또한 FireBase는 다른 데이터 베이스 들과 다르게 RTSP(Real Time Stream Protocol) 방식의 데이터베이스를 지원하고 있다

실시간 스트리밍 프로토콜(Real Time Streaming Protocol, RTSP)은 스트리밍 미디어 서버를 제어할 목적으로 엔터테인먼트, 통신 시스템에 사용하도록 설계된 네트워크 제어 프로토콜이다
이 프로토콜은 종단점(end point)들 간에 미디어 세션을 확립하고 제어하기 위해 사용된다. 미디어 서버의 클라이언트들은 play, record, pause 등 VHS 스타일의 명령을 발행하여 서버→클라이언트(주문형 비디오/VOD) 또는 클라이언트→서버(녹음)의 실시간 미디어 스트리밍 제어를 용이하게 만들어준다
- 위키백과 -
RTSP 위키백과

RTSP는 말그대로 실시간으로 데이터들을 전송해주는 방식
이 방식을 사용하면 소켓 기반 서버를 만들어서 통신하는 것 보다 비약적으로 코드 양이 줄게되어 코드 몇 줄로도 원하는 구성을 만들 수 있다고 한다

소켓을 사용하신분들은 알겠지만, 소켓을 사용하기엔 어려움없이 사용할 수 있지만 소켓을 파다 보면 꽤 복잡하다는 것을 알게 될것이다, 구현하다보면 양방향 통신에 코드가 길어 질수 밖에 없다

3. 원격 구성을 지원, 원격구성이란 원격으로 앱의 환경 상태를 구성하는 것을 말합니다

앱의 배경화면, 테마폰트를 바꾼다던가, 업데이트창, 알림창을 띄운다던가 앱의 환경을 원격으로 구성할 때 사용하는 기능이다

4. 콘솔을 제공

콘솔이라는 용어는 쉽게 말해서 서버 관리자 페이지라고 생각하면 된다
앱의 서버를 만들게 되면 리눅스, FTP, MySQL(데이터베이스), Node.JS 서버 혹은 Spring 서버, 푸시보내기 API만 구축할 것이 아니라 이 모든 것을 관리할 수 있는 관리자 페이지가 필요하다
회사나 조직에 있는 사람들이 리눅스나 데이터베이스, 서버를 다룰 줄 안다면 관리자 페이지가 필요없을 수도 있지만 그렇경우가 많지않고 또한 접근 보안을 위해서 관리자 페이지를 만들어야 한다
그럼 앱을 만들기 위해서 앱개발자 뿐아니라 서버 개발자까지 필요해진다

안드로이드 앱하나를 만들기위해 배보다 배꼽이 더 커져버릴수 있다
하지만 FireBase는 이 모든 것을 지원해준다

즉, 각각의 앱들을 만들기 위해 최소한의 기본으로 제공되야하는 기능들이 있는데 그것들을 FireBase에서 해결해준다

5. Analytics를 제공한다

Analytics 단어 그대로 통계를 말하며 정확히는 다수의 사용자가 앱을 어떻게 사용하는지 통계 정보를 가지고 있고, 대시보드를 통하여 관리자에게 보여준다
앱의 현재 접속자부터 오류통계, 사용자 유지율, 고객들의 앱 업데이트 상태, 사용자들이 특정 페이지에 머문 시간, 이벤트 등을 추적할 수 있다
이런 데이터들을 수집해서 사용자가 어떤 페이지에서 흥미를 잃었는지, 어떤 페이지가 인기가 많은지 등을 찾아낼 수 있으며 맞춤 마케팅을 할 수 있다

FireBase의 단점

1. 느려짐 ?

Firebase를 많이 사용한 유저들이 하는 말은 서버의 응답속도가 종종 느려진다는 것이다
가령 Firebase로 채팅 앱을 만들었는데 메시지가 늦게 간다던가 혹은 Firebase인증을 성공하고 나서 로그인을 하고 메인화면에서 데이터베이스에 접근할 때 서버가 응답하는데 시간이 조금 걸리는 경우가 있다
이것은 Firebase의 고질적인 문제이며 유료로 전환해도 서버응답이 지연되는 부분은 해결디지 않는다
그 이유는 서버가 해외에 있기 때문에 종종 처리 속도에 지연이 발생된다
Firebase가 국내에서 많이 쓰인다면 구글이 아시아쪽 서버를 구축해 줄것이며
아마 응답이 빨라 질 것이다

2) 쿼리가 굉장히 빈약하다 (데이터베이스에서 데이터 찾기가 어렵다)

Firebase의 데이터베이스인 FireStore(신버전 데이터베이스)나 RealTimeDatabase(구버전 데이터베이스) 모두 쿼리가 굉장히 빈약하다
SQL에 익숙한 사람들은 Firebase 데이터베이스를 사용하게 되면 굉장히 당황해 할 수도 있다
그 흔한 OR 문으로도 검색되지 않으며 LIKE 문도 존재하지 않아서 비슷한 글자나 데이터를 검색할 수 없다
그래서 Firebase를 사용하는 사용자들은 이 모든 데이터를 받아와서 안드로이드 기기에서 필터링해주는 방법을 권장하고 있다

3. 용량

Database의 최대 용량이 1GB로 제한되어 있어 대규모 프로젝트나 빅데이터를 다루는 서비스를 개발하기에는 적합하지 않다

Cloudinary란?

SaaS 기술 회사이며, 클라우드 기반 이미지 및 비디오 관리 서비스를 제공한다
이를 통해 사용자는 웹 사이트 및 앱에 대한 이미지와 비디오를 업로드, 저장, 관리, 조작 및 전달할 수 있다

여기서 SaaS는 클라우드 서비스의 한 종류로(IaaS, PaaS, SaaS) 서비스형 소프트웨어라고 하며 소프트웨어 및 관련 데이터는 중앙에 호스팅하고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하는 형태의 소프트웨어 전달 모델이다

즉,
Cloudinary는 클라우드 기반의 이미지 및 비디오 관리 서비스이며, 강력하면서 쉬운 API를 제공하고 있어 조금만 익숙해지면 컨텐츠를 매우 효율적으로 관리할 수 있다 그리고 무엇보다 무료로 시작할 수 있어 스타트업에서 도입하기에 부담이 없다


간단한 프로젝트를 통하여 firebase와 Cloudinary를 사용하여 로그인 및 파일 업로드 정도 해볼 생각이다

profile
즐겁게 살자

0개의 댓글