Revue - Sendy sync: 철도 호스팅

지금쯤이면 Revue Sendy 스크립트 호스팅을 시작할 모든 항목이 준비되어 있어야 합니다.

지금까지 구축한 내용을 간단히 요약해 보겠습니다.
  • We wrote the sync plan
  • We collected and tested all APIs
  • We started the project and added the Revue calls
  • We added the Sendy calls
  • We added the webhook routes

  • 마지막 비트는 모든 것을 함께 가져와 테스트하는 것입니다.

    이 프로젝트는 상당히 단순한 노드 서버에 불과하므로 Railway app을 사용하기로 결정했습니다. 이러한 작은 스크립트를 호스팅하는 무료 및 간단한 방법을 제공합니다.

    스크립트 테스트



    라이브 코드를 시스템에 푸시하기 전에 스크립트를 약간 변경했습니다.

    Note: It's more a safety thing than anything else at this point, and feel free to skip this step.



    API 호출을 수행하는 대신 모든 것이 제대로 작동하는지 모니터링할 수 있도록 응답을 console.log로 변경했습니다.

    fastify.post('/sendy-webhook', async function (request, reply) {
      reply.send({ data: request.body });
    });
    


    그리고 주요 기능은 다음과 같습니다.

    (async () => {
      console.log('recurring script started');
    
      // commented out all the other things
    })();
    


    철도 앱에서 호스팅



    철도 앱은 블록의 새로운 아이이지만 꽤 멋지고 가장 중요한 부분은 무료라는 것입니다.

    따라서 Railway으로 이동하여 새 프로젝트 버튼을 클릭합니다.

    여기에서 GitHub에서 배포하는 옵션을 선택할 수 있습니다.



    다음 단계에서는 GitHub에 로그인하고 인증하도록 요청합니다.

    이 단계를 거치면 작업 중인 프로젝트를 선택합니다.



    다음 화면에서 지금 배포하거나 변수를 추가할 수 있는 옵션이 제공됩니다.
    이미 내 변수를 추가하도록 선택했습니다.



    두 옵션 중 하나를 클릭하면 프로젝트가 시작되고 변수를 추가할 수 있습니다..env 파일에 있는 모든 항목을 로컬로 추가합니다.



    변수를 저장하면 앱이 자동으로 재배포됩니다.

    일단 배포되면 로그를 열고 무슨 일이 일어나고 있는지 확인할 수 있습니다.



    로그는 다음과 같아야 합니다.

    recurring script started
    {"level":30,"time":1655616707625,"pid":1,"hostname":"railway","msg":"Server listening at http://127.0.0.1:3000";}
    


    그러나 이것은 약간의 문제를 야기합니다.
    Railway는 각 프로젝트에 대해 고유한 포트를 생성하고 주소0.0.0.0를 수신 대기합니다.

    앱으로 돌아가 Fastify 서버를 수정해 보겠습니다.

    fastify.listen(
      { port: process.env.PORT || 3000, host: '0.0.0.0' },
      function (err, address) {
        if (err) {
          fastify.log.error(err);
          process.exit(1);
        }
      }
    );
    


    이 코드 조각으로 우리는 항상 Railway가 제공하는 포트를 사용합니다.

    코드를 커밋하고 푸시하면 자동으로 새 배포가 시작됩니다.

    그러나 기본 철도 앱에는 도메인이 제공되지 않으므로 빠르게 도메인을 설정해야 합니다.

    설정 > 도메인으로 이동하여 철도 도메인을 추가합니다.



    이제 웹후크를 테스트하고 이 새 배포의 로그로 이동할 수도 있습니다. 이제 임의의 포트가 표시됩니다.

    그런 다음 API 플랫폼(Insomnia)을 열고 웹후크 엔드포인트를 테스트했습니다.



    그들은 일한다! 훌륭합니다. 우리는 모두 그 쪽에서 설정되었습니다.

    반복 스크립트



    이제 모든 것이 설정되었으므로 주 스크립트를 여러 번 실행하지 않는다는 것을 눈치채셨을 것입니다.

    우리는 이것이 x번마다 실행되기를 원합니다. 제 경우에는 하루에 한 번 정도 생각합니다.

    이를 달성하기 위해 node-cron 을 추가하여 마법을 부립니다.

    그런 다음 다음과 같이 cron 명령을 추가할 수 있습니다.

    cron.schedule('* * * * *', () => {
      console.log('running a task every minute');
    });
    


    서버를 시작하면 1분마다 메시지가 표시되기 시작해야 합니다.

    하지만 매일 밤 새벽 2시에 실행하고 싶어서 이렇게 하나의 명령을 설정했습니다.

    cron.schedule('0 2 * * *', () => {
      // our command
    });
    


    이 명령에서 우리는 현재 IIFE에 있는 모든 것을 넣을 것입니다.

    그리고 그 설정으로 우리는 갈 준비가 되었습니다!

    완성된 코드는 GitHub에서 찾을 수 있습니다.

    마무리



    이제 코드가 완성되었으므로 몇 가지 작업을 수행해야 합니다.
  • 현재 사용자 동기화

  • 사용자를 일회성으로 동기화하는 것이 필수적입니다. 그렇지 않으면 이상한 작업을 수행할 수 있습니다.
    저 같은 경우 Sendy에서 모두 내보내고 Revue에서 수동으로 한 번에 가져왔습니다.
  • 웹후크를 새 URL로 변경합니다
  • .

    웹후크가 설정되지 않은 것을 확인하고 이를 Railway 호스팅 앱에 게시하도록 변경해야 합니다: https://{your_app}.up.railway.app/sendy-webhook .

    읽어주셔서 감사합니다. 연결합시다!



    제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나

    좋은 웹페이지 즐겨찾기