Firebase 기술 스택

우리가 Ayrshare을 시작했을 때, 우리는 서버 설정, SSL 인증서, 오픈 포트 등을 피하기 위해 인프라 시설을 서비스 플랫폼으로 사용하는 데 열중했다. 출시 시간이 다 되었다. 그렇지?여러 플랫폼 중에서 Firebase을 선택했습니다.이것은 우리에겐 아주 쉬운 결정이다. 왜냐하면 우리는Firebase를 바탕으로 개발하고 심지어 판매 응용 프로그램에 대해 매우 만족하기 때문이다.Firebase가 아니라면 두 번째 선택은 Netlify입니다.

오늘과 내일의 요구


우리가 묻는 첫 번째 질문은, "우리가 오늘 무엇을 필요로 합니까?"몇 가지 기준으로 귀결되는 경우:
  • 인증, 주요 네트워크
  • 과 SSO 지원
  • 관리형 정적 단일 페이지 어플리케이션(React)
  • 은 로그인 페이지를 호스팅합니다.우리는 보통 React에서 로그인 페이지를 구축하는 것을 좋아하지 않는다.
  • 데이터베이스, noSQL
  • 백엔드에서 NodeJ를 실행하고 서버가 없는
  • 이 가장 좋습니다.
  • 이벤트 추적, 예를 들어 구글 분석
  • 이메일 서비스
  • 결제 서비스
  • 둘째, 우리는 "내일 우리가 무엇을 필요로 할 수 있습니까?"라고 물었다.
  • iOS 및 Android 애플리케이션
  • 모바일 어플리케이션 푸시 알림
  • ml(머신러닝)
  • ml

    우리 창고


    우리는 많은 플랫폼을 구축했다. AWS, Heroku, 우리의 책상 아래 (농담이 아니라), 그리고 디지털 바다.우리는 궁극적으로Firebase를 선택했다. 왜냐하면 그것은 우리의 많은 수요를 만족시켰기 때문이다. 그러나 모든 수요는 틀림없다.

    Firebase는 SPA React 위탁 관리와 Firestore이 noSQL 데이터베이스로서 좋은 선택이다.Firebase에는 구글 분석이 내장되어 있다.또한 Firebase의 authentication UI 시스템을 사용하면 구글, 페이스북, GitHub 등 주요 SSO 공급업체와 안전한 등록과 로그인 과정을 통합할 수 있습니다.
    WordPress에 구축된 소개 페이지는 Siteground에 호스팅됩니다.Word Press에는 좋은 템플릿과 플러그인이 많은데,React에서 바퀴를 다시 만들 이유가 없다고 생각합니다.우리가 고려한 또 다른 선택은 Gatsby이 단독 Firebase 프로젝트에 위탁 관리하는 것이다.
    전자 우편을 보내려면 전자 우편 공급자가 필요합니다. 우리는 우편총을 사용하는 것에 습관이 되어 있습니다.Firebase는 최근 Extensions 사전 구축 클라우드 기능을 출시했습니다.우리가 가장 좋아하는 것은 클라우드 컴퓨팅 기능에서 전자메일을 보내는 데 도움이 되는 Email Trigger extension이다.
    지불 시스템에 대해 우리는 Stripe을 선택했다.Stripe에는 NPM package이 있어 통합이 비교적 쉽습니다.
    마지막으로 게시 전에 link shortener을 추가하기로 결정했는데 이는 트위터 등 제한 문자를 인터넷에 올릴 때 매우 유용하다.처음에 우리는 비트를 쓸 계획이었다.그러나 그것은 곧 우리가 사용자에게 받는 비용보다 더 비싸질 것이다.우리는 최종적으로Firebase의 Dynamic Links을 선택했는데 이것은 구글이 구글에 대한 대체품이다.독일 로이드 선급사.동적 링크 real power는 모바일 응용 프로그램에 적용되지만 RESTful API 호출을 사용하려면 링크 단축기로 사용할 수도 있습니다.

    Firebase 클라우드 함수 및 API


    Ayrshare는 API의 첫 번째 플랫폼으로 구축되었기 때문에 건장한 API 시스템을 갖추는 것이 매우 중요하다.각 API 엔드포인트를 위한 클라우드 함수는 유연성도 보안도 보장되지 않습니다.그러나 클라우드 기능에 Express을 추가할 수 있습니다. 이것은 API를 구축하고 공개하는 우수하고 전투 테스트를 거친 프레임워크입니다.
    예를 들어, 다음과 같은 보안 및 API 촉진 팩을 추가할 수 있습니다.
    const express = require("express");
    const cors = require("cors");
    const bodyParser = require("body-parser");
    const helmet = require("helmet");
    const rateLimit = require("express-rate-limit");
    
    Express를 추가하면 '프로그램' 을 http 함수로 추가하고 내보낼 수 있습니다.
    const app = express();
    exports.api = functions.https.onRequest(app);
    
    그리고 전형적인express 함수를 추가합니다.
    app.get("/fun", (req, res) => {
      console.log("hello fun");
      return res.send('"Hi fun");
    });
    

    미래를 전망하다


    앞으로 인스타그램이 게시할 수 있는 모바일 앱, 특히 알림을 전송할 수 있는 앱을 개발할 계획이다.이전의 프로젝트에서 우리는 Firebase’s Cloud Messaging (FCM) 시스템을 사용했는데 그것이 간단하고 믿을 만하며 무료라는 것을 발견했다!
    만약 우리가 정말로 앞을 본다면, 우리는 이상적인 발표 시간에 대한 ML 분석을 추가하고 싶다.현재의 Firebase ML 제품은 그다지 적합하지 않은 것 같지만, 장래에는 어울릴지도 모른다.

    금리 제한에 대한 설명


    우리는 Reddit에서 흥미로운 토론을 진행하여 빠른 금리 제한을 사용하는 문제를 토론하였다.자세한 내용은 위의 코드를 참조하십시오.
    우리는 express rate limit을 사용하여 모든 IP의 API 요청을 관리합니다. 이렇게 하면 사용자가 1분에 1000개의 요청을 보내지 않습니다.메모리 상태 저장소의 빠른 속도로 기본값을 제한하면 클라우드 함수가 코드를 다시 초기화할 때마다(차가운 시작) 모든 모듈이 다시 불러오고 메모리의 속도 계수는 0에서 시작합니다.예를 들어 속도 제한을 시간당 20개의 요청으로 지정하고 사용자가 제한에 도달했지만 냉가동이 발생하면 사용자는 이 시간 안에 20개의 전화를 더 걸 수 있다.
    정확한 방법은 외부 메모리를 사용하여 속도 제한 추적을 하는 것이다.다행히도 일부 소프트웨어 패키지는 Redis, MemcacheMongoDB과 통합되어 있습니다.

    작성자 정보


    제프리 본(Geoffrey Bourne)은 개발자, 최고기술책임자(CTO), 몇몇 회사의 창시자, 그리고 개발자로서 20여 년 동안 기술자로 일했다.최근 회사 Ayrshare을 보세요. API를 통해 소셜 미디어를 자동화합니다.
    Original Article

    좋은 웹페이지 즐겨찾기