2019년 8월 26일 월요일

Apps script 이용해서 Firebase에 데이터 업로드 하기.

Apps script로 데이터 관리하기!! 

이번에 새로운 파일럿 프로젝트를 들어가면서 개발자 한명 !! 이서 모든걸 관리해야하는 상황 이 왔습니다. 
그 개발자가 바로 저였습니다. :(

그래서 일단 요구사항에 대해 생각 해보도록 하였습니다.

* Something storage for saving information.
* Web Hosting.
* Frontend page.
* Serving something for communicate between Database and Frontend.
* Authentication. 

음.. 그럼 필요한게

* Backend
* Frontend
* Infra
* Database
* Database Tools.

이정도 인것 같은데, 이걸 다 혼자 할 경우 Timeline에 원하는 기능을 만들지 못할것 같다는 생각을 했습니다.

그럼 어떻게 해야 줄일수 있을까? 생각하다가 담으로 생각한게 그럼 Infra를 줄여보자라고 생각해서

Serverless로 API쪽 개발을 하고 Frontend랑 묶어주자!! 라는 생각이 들었습니다. 

그 이후에 그럼 Database Scheme는 어떻게? 제일 편한건 Mysql인데 이걸 쓰면 되나? 그럼 관리는? 

디비는 어떻게 보여주지? 어드민은? 그냥 Client로 접근하라고 할까? 그럴경우 SQL을 가르쳐줘야하는데, 모를텐데 이런 생각이 들었습니다. 
결국 주저리 주저리 했지만, 제가 정한 최종 스펙은,

* Something storage for saving information. -> Firebase database, Apps scripts, Google Spread sheets
* Web Hosting. -> Firebase hosting
* Frontend page. -> React
* Serving something for communicate between Database and Frontend. -> Firebase Lib
* Authentication.  -> Firebase 

일다 관리해야하는게 Firebase와 Apps Script 두개로 줄었고, Spread sheets에 저 보다 운영하시는 분들이 훨씬 잘 쓰시니깐 운영 코스트가 줄거라고 생각 했습니다.

나중에 지금 보다 더 개발을 빨리 할수 있는 개발자가 되면 그때는 Backend를 꼭 Golang을 이용한 개발을 하고, 블로그도 써볼까 합니다.

ㅠㅠ 슈퍼 개발자면 가능할텐데.... 지금은 슈퍼가 아니라서 SUPER ~~ 

Apps scripts

Apps scripts는 구글이 만든 scripts 언어로 구글 Platform내에서 사용할수 있는 프로그램 언어를 말합니다. ? 맞나? 무튼 이걸 통해 Google에서 제공하는 문서 editor에서 custom function을 만들수 있습니다.

Firebase

정확한 명칭은 잘 모르겠는데, Google 이 지원하는 Saas 형태의 서비스 입니다. 
구글 계정을 통해 관리 되며, 왠만한 기능들은 Firebase 내에 추가 되어있습니다. 저는 여기서 Static Hosting, Database, Authentication 기능을 사용할 예정입니다.

서두가 너무 길었네요. 이제 Apps scripts를 사용하면서 발생한 문제 및 해결 방법을 적을 까 합니다.

개발 순서의 경우

해당 링크에 있는 코드를 따라서 했습니다. 
간단하게 과정에 대해서 정리 하면

  • Apps script를 통해 Spread sheets에 메뉴 버튼 추가. 
  • 메뉴 버튼 내에 세개의 기능을 하는 버튼 추가
    • Prepared data
      Firebase내에 들어갈 데이터 포맷 세팅 및 샘플 데이터 추가.
    • Get data from firebase
      Firebase에 있는 데이터 읽어서 Sheets에 데이터 보여주기.
    • Add data to firebase
      Sheets에 있는 데이터 읽어서 Firebase 에 업데이트 하기.

여기에 있는 코드를 넣고, 안에 있는 내용에 대해서 수정하는 방식으로 작업했습니다.

하다가 시간을 잡아 먹은 부분은

P1. 메뉴 버튼 클릭 시 권한 오류 발생.


이 경우에는 https://developers.google.com/apps-script/guides/client-verification 링크로 들어가서 그냥 권한을 허용하는걸로 수정했습니다. 처음에는 필요한 권한에 대해서 계속 추가하다가 이게 일일이 하기에는 시간도 많이 들고, 일단 시간도 없는 관계로 허용하도록 변경하였습니다.

P2. Secure Firebase Data access



해당 링크에서 보면 ScriptApp.getOAuthToken(); 를 통해 token을 가져와서 Firebase에 사용하는데 그때 Pase token 에러가 발생하더라구요. 
그래서 저는 이 방식 대신 Firebase 에서 Secret key 를 발급 받아서 직접 사용하는 방식으로 해결 했습니다.

이렇게 할 경우에 마지막으로 보여지는 화면은


이렇게 데이터 세팅이 가능한 Excel  페이지가 만들어졌습니다. 일단 이 기능을 통해서 Database에 대한 관리에 대한 코스트는 마무리 되었고, 더 복잡한 기능 및 다른 데이터에 대한 추가 수정 삭제가 필요할 경우, Apps scripts를 다시 이용해서 사용할것 같습니다.

* 저의 경우에는 ID를 excel에 적도록 해서, 업데이트 기능을 제공했고, 추가, 삭제의 경우 모든 Firebase 데이터를 sheets 에 있는 걸로 업데이트 하는 형태로 지원했습니다. 데이터가 많아질 경우 수정이 필요할것 같은데, 그전까지는 버틸수 있을것 같습니다.






댓글 없음:

댓글 쓰기