노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


Firebase and backend logic ( 번역 )


- Question 

Parse에서 다른 서비스를 고려중이다. Firebase에 어떻게 백엔드 로직을 만들 수 있나?

서버측(또는 트리거)에서 모든 값을 검증하는 것을 원한다.

생각하는 방식은

1) nodejs server를 만든다. 물론 express를 사용한다.

2) (비지니스) 로직를 다루는 미들웨어를 만든다.

3) App에서 Rest요청을 보낸다. 그것은 미들웨어를 작동시킨다.

4) firebase의 nodejs sdk를 사용해서 http request의 파라미터에 따라 값을 변경한다

5) app firebase handler에서 변경된 내용을 감지하도록 구현한다.

* 1번에서 전송하면, node server에서 http req를 받아 firebase에 업뎃하고,

2,5,1번에게 반영된다.


다른 좀 더 쉬운(방법)게 있나요? parse에서 클라우드 코드를 사용했고, (비지니스)로직은 클라이언트 측보다 서버측에 있길 원한다.


- Answer 1

Firebase Application의 일반적인 (시스템)구성은 "Where does Firebase fit In your app?"이라는 블로그 포스트에 아주 잘 정의가 되어 있다.

Pattern1 : 100% Firebase-powered apps

많은 Firebase중심의 app은 오직 client code로만 구성이 된다.


Pattern2 : Firebase-powered app with server code

오직 client code만으로 불가능한 경우에 해당한다. ( 3rd party API등을 사용)


Pattern3 : Existing app with Firebase-powered features

큰 사이트등을 위한 일반적인 패턴이다.

( 기존에 있던 모든 기능을 갖는 app을 재작업하려는 계획이 없을때등 )


원하는 (시스템)구성은 Pattern3에 가장 근접하다. client측 code는 Firebase나 node.js서버 양족으로 직접 통신을 한다.


또한 높게 추천하는 것은 Pattern2를 고려 하라는 것이다. 클라이언트와 서버 사이의 모든 상호작용은 firebase를 통하는 것이다. 이 구성의 아주 좋은 예제는 Flashlight search integration이다.


- monitor multiple Firebase paths and index data in real time

- communicate with client completely via Firebase

(client pushes search terms to search/request and read results from search/result )

- clean up old, outdated requests


클라이언트가 search query를 firebase database에 쓴다. 서버가 요청을 대기하고, 쿼리를

수행하고 결과를 (firebase) database에 써 준다. 클라이언트는 결과를 기다린다.


간단하기 서버에 사용되기 위한 (코드) 윤곽

이 마지막 접근 방식은 Client가 Server와 절대로 직접 통신하지 않는다. 걱정해야 하는 모든 잠재적인 문제들을 제거한다. 이런 이유로 이런 방식을 종종  server대신에 "bots"으로 언급한다.


- Answer 2

이렇게 하는 것이

- 모든 입력은 검증하는 ".validate rules" 를 사용하라. 이것을 위해 서버는 필요가 없다.

- 만약 실행해야 하는 작업이 있다면, Firebase Queue를 사용하라


만약 이와 같이 사용하지 않는 다면, 2가지 문제점이 생길거다.

- 직접 포스트한것 만을 사용하려면, 서버에서 권한 객체를  취하는것이 약간 까다로워진다.

-  만약에 단순하게  firebase app을 변화를 감지하고 반응하는 인스턴스로 사용하면(위의 Pattern 2), 아마도 확장성 문제를 갖게 될 것 이다.
백엔드가 확장되서 2개의 인스턴스가 되면, firebase편집은 그것들의 trigger task가 될 것이다.  각 인스턴스는 변경되었다는 통보를 받게되고, 동일 task가 서로 실행되어,
결과 객체에 추가/교체를 서로 하고, 요청 객체를 서로 삭제하려고 할 것 것이다.

이런 문제점들을 피하기 위해 Firebase Queue를 사용해라.



REF :

http://stackoverflow.com/questions/35360421/firebase-and-backend-logic



추가 링크

Mobile App Backend Services

https://cloud.google.com/solutions/mobile/mobile-app-backend-services


-mobile app을 위해서 backend를 만들때 고려할 부분들

Limit on-device data storage
Synchronize data across multiple devices
Handle the offline case gracefully
Send notifications and messages
Minimize battery drain


- design patters , Cloud Platform을 사용하는 다양한 방법



블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,