Cityscoot의 로우코드 백엔드 스토리
안녕하세요 여러분, 저는 Cityscoot에서 2년 동안 제품 관리자로 근무했습니다. 이것은 이 도메인에 대한 나의 첫 번째 기사입니다. 여기서 직면한 몇 가지 경험을 공유하고 피드백을 주세요!
나는 최근에 아마도 많은 제품 관리자가 자신의 회사에서 경험한 상황에 직면했는데, 그것은 프로젝트에 사용할 수 있는 리소스가 부족하다는 것입니다. 제 경우에는 webapp 프로젝트를 위한 백엔드 개발 부분이 부족했습니다.
문제의 프로젝트는 balancetonscoot.com 으로, 도시에 잘못 주차된 모페드(특히 자유롭게 떠다니는 모페드)에 익명으로 신호를 보내 회사가 위험해지거나 압수되기 전에 픽업할 수 있도록 하는 플랫폼입니다. 정보는 공개되거나 시청 또는 다른 플랫폼(예: Dansmarue)과 같은 압류와 공유되지 않으므로 지연 및 처벌 도구가 아닌 자유 부동 운영자의 내부 운영을 최적화하는 도구가 됩니다.
우리의 자원 부족으로 돌아가서, 스프린트 전에 자원이 확보되고 모든 것이 개발 준비가 되어 있어야 하기 때문에 이론적으로 이런 일이 발생해서는 안 된다는 것을 알고 있습니다. 음, 그것이 이론이지만 때때로 인생은 일어나고 우리는 다른 방식으로 앞으로 나아갈 필요가 있습니다.
제품 관리자로서 스프린트를 정의하고 프런트엔드 개발자가 준비되었지만 몇 가지 엔드포인트와 몇 가지 기본 데이터 및 비즈니스 로직을 생성할 백엔드가 없으면 신속하고 검소하게 해결 방법을 찾아야 합니다.
다행스럽게도 우리는 2023년에 접어들었고 이러한 상황에서는 어떤 코드 및 로우 코드 도구도 매우 유용하지 않습니다. 오늘 저는 오픈 소스 데이터베이스인 Supabase와 결합된 Node-red라는 로우 코드 백엔드 도구를 사용하여 매우 제한된 리소스로 기록적인 시간에 제품을 출시한 경험을 공유하고 싶습니다.
사용 사례에 대해 자세히 알아보기 전에 Node-Red의 기본 원칙을 빠르게 소개하겠습니다.
노드레드 x 수파베이스
Node-Red는 2013년 IBM에서 편집한 로우 코드 오픈 소스 흐름 프로그래밍 도구로, 백엔드 로직을 관리하기 위한 자체 호스팅 브라우저 기반 인터페이스를 제안합니다. 인터페이스가 가장 멋진 것은 아니지만 실용적이고 매우 효과적입니다.
Node-red는 원래 Internet of Things 백엔드 애플리케이션을 위한 것이었지만 사용자 정의 node.js 미니 기능을 코딩할 수 있는 개방성과 기능 덕분에 모든 기능을 갖춘 백엔드 애플리케이션을 쉽게 구축할 수 있습니다. Zapier, Make 또는 N8N과 같은 다른 도구에 비해 웹에 Node-Red와 관련된 리소스나 기사가 많지는 않지만 최소한의 기술 배경이 있고 갈 수 있다면 시작하는 것이 그리 어렵지 않습니다. 다른 대안보다 사용자 정의 비즈니스 논리에 더 깊이 있습니다.
따라서 기본적으로 Node-red에서 개발할 백엔드 앱은 흐름 기반 프로그래밍 의 논리를 따릅니다 . 모든 것은 노드를 기반으로 하며 정보를 포함하는 메시지는 한 노드에서 다음 노드로 순서대로 이동합니다.
노드는 입력을 받아 이를 변환하고 메시지를 출력하는 기능 블록입니다. 오픈 소스이고 커뮤니티가 매우 활발하기 때문에 일반적으로 거의 모든 서비스에 사용할 수 있는 노드가 있으며 사전 정의된 기능을 통해 개발 속도를 높일 수 있습니다. 예를 들어 데이터베이스 연결(Postgre, Firebase), 메시지 플랫폼 연결(Slack, WhatsApp)을 위한 노드가 있습니다. 추가 사용자 정의가 필요한 경우 언제든지 고유한 node.js 기능을 구현할 수 있습니다.
먼저 다른 자동화 솔루션보다 Node-Red를 사용하기로 했습니다. 자체 호스팅 및 오픈 소스이기 때문입니다(그래서 무료로 사용할 수 있습니다). 두 번째는 빠른 프로젝트를 위한 간단한 백엔드 서비스와 API를 쉽게 만들 수 있기 때문입니다. 그러나 더 복잡한 흐름과 논리를 구성하기 위해 훨씬 더 밀어붙일 수 있습니다.
훌륭합니다. 데이터베이스에 효율적으로 연결할 수 있습니다(백엔드 웹 서비스를 완료하는 데 중요함). 하지만 어떤 데이터베이스를 선택해야 할까요?
저는 최근에 Supabase가 Firebase for PostgreSQL의 훌륭한 대안이라는 것을 알게 되었습니다 . Firebase는 프로토타입을 만들기에 적합하지만 즉시 사용할 수 있는 NoSQL 데이터베이스만 제안합니다.
Supabase에는 원시 데이터를 읽고 쓰기만 하면 되는 애플리케이션에 매우 유용한 사전 빌드된 API가 있으며 프리 티어는 프로젝트를 시작하는 데 상당히 관대합니다.
기본 웹 서비스 예제
다음은 내 앱에 필요한 것입니다.
- 이미지를 S3 버킷에 저장하고, PostgreSQL 데이터베이스에 데이터를 저장하고, 슬랙 메시지를 보내는 POST 엔드포인트(입력 내용에 따라 다름)
- 콘텐츠를 내 앱으로 반환하기 위한 GET enpoint(PostreSQL DB에서)
POST 위임
AWS S3 버킷에 이미지 업로드.
node-red에는 AWS 서비스에 사용할 수 있는 사전 빌드된 노드가 있지만 일부 구현이 마음에 들지 않아 잘 문서화되고 관리되는 AWS Node.js SDK를 사용하여 자체 node.js 함수를 빌드하기로 결정했습니다.
- 소스 노드(1단계): 필요한 json 정보를 가져오고 구문 분석하는 POST 엔드포인트.
- 2단계: 키 및 보안을 확인하고 고유하고 의미 있는 파일 이름 및 메타데이터 생성(확인이 통과되지 않으면 오류 응답 보내기)
- 3단계: 파일을 S3에 업로드합니다.
- 4단계: http 응답으로 성공 또는 실패를 처리하거나 흐름을 계속합니다.
그런 다음 수파베이스 데이터베이스에 이미지와 데이터를 기록할 순간입니다.
- 1단계: PostgreSQL 노드의 입력에 필요한 형식과 일치하도록 흐름의 메시지 리팩터링
- 2단계: SQL 요청을 작성하고(저장할 개체를 반복하여) 변환을 적용합니다(여기서는 예를 들어 정규식을 적용합니다).
- 3단계: Supabase로 만든 PostgreSQL 데이터베이스에 데이터를 삽입합니다. 메시지의 형식이 이전 단계로 잘 지정되었으므로 여기서는 데이터베이스 액세스를 구성하는 것 외에는 수행할 작업이 없습니다.
- 싱크 노드(4단계): http 응답을 클라이언트에 반환합니다.
- 보너스 단계: 실시간으로 Slack 알림을 제공하는 로직과 이러한 방식으로 관리하는 데 관련된 답변을 필터링하는 기능 노드를 추가했습니다. PostgreSQL의 경우 Slack 사전 빌드 노드는 이전에 메시지 형식을 지정하도록 요청합니다.
GET 엔드포인트를 사용하면 Supabase에서 직접 정보를 더 쉽게 검색할 수 있습니다. 앱은 이를 사용하여 표시할 일부 데이터를 검색합니다.
- 소스 노드(1단계): GET 엔드포인트
- 2단계: SQL 쿼리를 주입하고 결과를 반환하는 Postgre 노드
- 싱크 노드(3단계): 응답을 다시 보냅니다.
모든 기능을 갖춘 웹 앱: balancetonscoot.com
우리는 Node-red 및 Supabase를 사용하여 전통적인 프런트 개발과 로우 코드 백엔드를 결합하여 극도로 제한된 리소스로 기록적인 시간 내에 balancetonscoot.com을 출시할 수 있었습니다 .
명확한 성공 스토리와 앱은 작년부터 파리 시민들이 매일 사용하며 Cityscoot가 더 잘 운영되고 공공 공간의 사용과 공동 시민의 삶을 개선하도록 돕습니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































