기본 콘텐츠로 건너뛰기

라벨이 realtime database인 게시물 표시

[Firebase] 데이터 정합성을 위한 Cloud Function 적용 사례 - 2

Firebase Cloud Functions를 적용하게 되었던 배경을 이전 글에서 소개해드린 바가 있습니다. 그 글에 이어 Cloud Functions 적용기를 간단히 소개하고자 합니다. 순서는 다음과 같습니다. 1. Cloud Functions 개발 환경 구축 2. Cloud Functions 코드 작성 3. Deploy 좀더 상세한 내용을 원하시면 하기 링크를 참고하시기 바랍니다. (본 글에서 다루는 내용보다 상세한 내용을 담고 있습니다.) https://firebase.google.com/docs/functions/get-started https://firebase.google.com/docs/functions/database-events 1. Cloud Functions 개발 환경 구축 먼저 Cloud Functions을 시작하기 위해서는 별도 개발 환경을 구축해야 합니다. Cloud Functions은 Node.js를 기반으로 동작하는 것 같습니다. 따라서 다음 단계가 선행되어야 합니다. Node.js 설치 (v6.11.1 recommend) npm 설치 Firebase CLI 설치 Node.js와 npm을 설치했다면 다음 명령어로 Firebase CLI를 설치할 수 있습니다. npm install -g firebase-tools Firebase CLI까지 설치가 되었다면 이제 Firebase Cloud Functions 프로젝트를 생성해야 합니다. 제가 개발 중인 프로젝트는 Android 모바일 어플리케이션이었습니다. 하지만 지금 작성하고자 하는 코드는 Android 앱이 아닌 Google Cloud 서버에 로드되어 동작할 코드이기 때문에 별도 프로젝트를 생성해야 합니다. 1.1 먼저 다음 명령어를 통해 Firebase tool 사용을 위한 인증을 완료합니다. firebase login 1.2 원하는 경로에 원하는 이름으로 Directory를 생성하고, 다음 명령어로 초기화합니다. ...

[Firebase] 데이터 정합성을 위한 Cloud Function 적용 사례 - 1

현재 Firebase의 다양한 기능들을 적용하여 모바일 어플리케이션을 개발하고 있습니다. 아시다시피 Firebase는 인증, 데이터베이스, 스토리지와 같은 여러 핵심적인 서버 기능들을 제공하고 있죠. 덕분에 Client 코드만으로도 충분히 Serverless한 서비스를 개발하고 있습니다. 개발을 하면서 Firebase 위력에 하루 하루 감탄/감사(?)하고 있죠. 그런데 지금 제가 진행하고 있는 프로젝트에서는 위 기능들만으로는 조금 부족했습니다. Firebase Realtime Database는 Json을 베이스로 하기 때문에 기본적으로 일반 관계형 데이터베이스와는 다른 DB 설계를 생각해야 했고요. 이로 인해 데이터 정합성 문제가 발생했습니다. 결론적으로는 Firebase Cloud Function을 통해 해결할 수 있었고 본 글은 Cloud Function의 적용 사례를 소개하는 글입니다. 우선 본 장에서는 Firebase를 사용하면서 어떤 문제 상황을 마주했고, 이를 해결하기 위해 선행적으로 어떤 대안들을 생각했었는지, 그리고 결국에는 왜 Cloud Function을 최종 대안으로 선택했는지 소개하고자 합니다. 일반적으로 관계형 데이터베이스에서는 데이터 중복 저장은 가급적 피해야하고, 이를 달성하기 위해 정규화라는 개념이 적용됩니다. 하지만 Firebase Realtime Database는 관계형 데이터베이스가 아닌 Mongo DB와 같은 Document Store입니다. 우선 제 입장에서 이런 구조는 익숙하지 않은 형태의 데이터베이스였고, 처음 이것을 접했을 때에는 가급적 관계형 데이터베이스와 유사하게 데이터 구조를 가져가려고 노력했습니다. 하지만 이는 생각처럼 쉽지 않았고, 결국 성능을 위해 일부 데이터를 중복 저장하기로 결정했습니다. [이해를 돕기 위한 예제 소개] 본 글에서는 우리가 직면한 문제를 소개하기 위해 User, Group의 예를 사용합니다. User: 사용자의 정보를 담은 객체 G...

[Android] Firebase Realtime Database 소개 - CRUD 예제

Firebase는 여러 막강한 기능들을 제공하고 있습니다. 너무도 막강해서 마치 마법같이 느껴지고 이러한 기능을 제공하는 구글에 감탄하게 됩니다. 그 첫 번째 감동으로 Realtime Database에 대해 간단히 소개합니다. Firebase Realtime Database를 간단히 소개하자면 Cloud Database라고 할 수 있습니다. Cloud Database이기 때문에 플랫폼 종속성이 없습니다. 실제 Firebase의 다른 모든 기능들이 Android, IOS, Web, Server 플랫폼에서 자유롭게 사용 가능하죠. 그럼 Cloud이기 때문에 온라인이 아닌 상황(인터넷 접속이 안되는 상황)에서는 사용이 불가하냐? 그것도 아닙니다. 데이터를 디스크에 유지하므로 오프라인일 때에도 문제없이 사용가능합니다. 이후 네트워크에 연결되면 데이터를 자동으로 동기화시켜주기 때문에 네트워크에 대한 걱정은 접으시기 바랍니다. 개인적으로 저 역시 Android/Firebase를 이제 입문하여 학습/적용하는 단계이기 때문에 자세한 내용은 알지 못합니다만 한가지 의문점이 생깁니다. 과연 SQLite를 사용한 내부 데이터 저장소를 앞으로도 사용할 필요가 있을까? 특히나 요즘 같이 빵빵한 네트워크 환경, 고성능의 디바이스, 무엇보다 빅데이터 분석을 통한 차별화된 서비스 제공 등을 고려하면 서버로의 데이터 취합은 필수로 보입니다. 그리고 빠른 트렌드 변화에 유연하게 대응하기 위해서는 실제 물리 서버 구축보다는 Cloud를 이용하는 것이 강점이 될 것이고요. 그런 점에서 구글에서 제공하는 Firebase Realtime Database는 개발자들에게 큰 무기가 되지 않나 싶습니다. 다만 한가지 염두에 두어야 할 점은 Realtime Database는 익히 알고 있는 관계형 데이터베이스(RDBMS)는 아니라는 것입니다. Realtime Database에서는 데이터들이 아래와 같이 json 형식으로 저장되기 때문에 관계...