고동기술 블로그

Supabase(1) - Supabase는 어떻게 기존 백엔드를 대체할까?

arrigo dong
arrigo dongMar 22, 2024

최근 개발자 커뮤니티에서 Supabase가 큰 주목을 받고 있습니다. Supabase는 오픈 소스 백엔드 서비스로, 기존의 백엔드 개발 방식을 혁신적으로 대체할 수 있는 솔루션으로 떠오르고 있죠. Supabase가 이리 핫한 이유가 무엇일까요??

1. 간편한 백엔드 개발

Supabase의 가장 큰 장점은 백엔드 개발을 매우 간편하게 만들어준다는 것입니다. 일반적으로 백엔드 개발은 데이터베이스 설계, API 개발, 인증 및 권한 관리 등 복잡한 과정을 필요로 합니다. 하지만 Supabase를 사용하면 이러한 과정을 최소화할 수 있습니다.

Supabase는 PostgreSQL 데이터베이스를 기반으로 하며, 간단한 설정만으로도 RESTful API와 실시간 구독 기능을 제공합니다. 또한, 사용자 인증과 권한 관리 기능도 기본적으로 포함되어 있어, 별도의 개발 없이도 안전하고 효율적인 백엔드 시스템을 구축할 수 있습니다.

2. 풍부한 기능과 확장성

Supabase는 단순히 백엔드 개발을 간소화하는 것에 그치지 않습니다. 풍부한 기능과 확장성을 갖추고 있어, 다양한 프로젝트에 적용할 수 있습니다.

예를 들어, Supabase는 파일 스토리지 기능을 제공하여 사용자가 업로드한 이미지나 동영상 등을 쉽게 관리할 수 있습니다. 또한, Edge Functions를 통해 서버리스 함수를 실행할 수 있으며, 이를 통해 백엔드 로직을 유연하게 확장할 수 있습니다.

뿐만 아니라 Supabase는 다양한 클라이언트 라이브러리를 지원하므로, 프론트엔드 개발자들도 손쉽게 Supabase와 연동할 수 있습니다. JavaScript, TypeScript, Python, Dart 등 다양한 언어를 지원하고 있어, 개발자들은 자신에게 익숙한 언어로 Supabase를 활용할 수 있습니다.

3. 강력한 권한 관리 (RLS (row-level security))

백엔드를 만든다면 실제로 하는 일이 무엇일까요?? 대부분 Application Server에서는 사용자의 권한을 확인하고 그에 따른 데이터 삽입, 수정, 읽기, 삭제작업을 수행합니다. 즉 데이터를 다루는 작업, 사용자에 권한에 맞는 데이터 관리가 대부분입니다. Supabase는 이러한 과정을 데이터에 대한 권한을 설정하는 방식으로 해결하고 있습니다. RLS를 이용하여 데이터베이스에 대한 권한을 설정하여 Application Server없이 데이터를 가져 올 수 있게 해줍니다.

전통적인 백엔드 vs Supabase

전통적인 백엔드 서버는 Database, Web Application Service, File Storage, 인증 서비스를 전부 따로 관리해야한다.
전통적인 백엔드 서버는 Database, Web Application Service, File Storage, 인증 서비스를 전부 따로 관리해야한다.

사용자들이 글을 작성하고, 사진을 공유하며, 다른 사용자와 소통할 수 있는 소셜 미디어 애플리케이션을 개발한다고 가정해봅시다. 이 애플리케이션의 백엔드 개발을 위해 다음과 같은 작업들이 필요할 것입니다.

1. 데이터베이스 설계 및 구축

  • 사용자 정보, 게시물, 댓글, 좋아요 등의 데이터를 저장할 데이터베이스 테이블 설계
  • 데이터베이스 서버 (MySQL, PostgreSQL 등) 설치 및 구성
  • 데이터베이스 연결 및 쿼리 테스트

2. API 개발

  • 사용자 등록, 로그인, 프로필 조회/수정 등의 사용자 관련 API 개발
  • 게시물 작성, 조회, 수정, 삭제 등의 게시물 관련 API 개발
  • 댓글 작성, 조회, 수정, 삭제 등의 댓글 관련 API 개발
  • 좋아요 추가/취소, 좋아요 수 조회 등의 좋아요 관련 API 개발
  • API 문서 작성 및 관리

3. 사용자 인증 및 권한 관리

  • 사용자 등록 및 로그인 기능 구현 (이메일/비밀번호, 소셜 로그인 등)
  • 사용자 세션 관리 및 인증 토큰 발급
  • 사용자 역할 (일반 사용자, 관리자 등) 및 권한 설정
  • 인증 및 권한 관련 API 개발 (토큰 검증, 권한 확인 등)

4. 파일 업로드 및 관리

  • 사용자가 업로드한 이미지 파일 처리 및 저장
  • 파일 업로드, 다운로드, 삭제 등의 파일 관련 API 개발
  • 파일 스토리지 (로컬 디스크, AWS S3 등) 연동 및 관리

5. 백엔드 서버 배포 및 운영

  • 백엔드 서버 환경 (Node.js, Django 등) 구성 및 설정
  • 데이터베이스 연결 및 API 서버 배포
  • 서버 모니터링 및 로그 관리
  • 보안 이슈 대응 및 서버 유지보수

이러한 작업들은 백엔드 개발자가 다루어야 할 주요 업무입니다. 각 작업은 전문적인 지식과 경험을 필요로 하며, 개발 과정에서 상당한 시간과 노력이 투입됩니다.

Supabase로 개발한다면?

앞서 살펴본 소셜 미디어 애플리케이션 시나리오를 Supabase로 어떻게 대체할 수 있는지 단계별로 알아보겠습니다.

1. 데이터베이스 설계 및 구축

  • Supabase 대시보드에서 새로운 프로젝트 생성
  • 사용자, 게시물, 댓글, 좋아요 등의 테이블 생성
    • Supabase는 PostgreSQL 데이터베이스를 기반으로 하므로, SQL 문법을 사용하여 테이블 정의
  • 테이블 간 관계 설정 (외래 키 등)
  • 데이터베이스 스키마 및 권한 설정

Supabase를 사용하면 별도의 데이터베이스 서버 설치 및 구성 없이, 웹 대시보드에서 손쉽게 데이터베이스를 관리할 수 있습니다. 또한 다른 nocode 데이터베이스와 달리 SQL을 쓸 수 있다는 것은 커다란 장점입니다.

2. API 개발

  • Supabase는 데이터베이스 테이블을 기반으로 자동으로 RESTful API를 생성
    • 사용자 테이블 → 사용자 관련 API
    • 게시물 테이블 → 게시물 관련 API
    • 댓글 테이블 → 댓글 관련 API
    • 좋아요 테이블 → 좋아요 관련 API
  • API 문서는 자동으로 생성되며, Supabase 대시보드에서 확인 가능
  • 필요한 경우 추가적인 API 로직은 SQL 쿼리나 Edge Functions를 통해 구현

Supabase의 자동 API 생성 기능으로 인해, 대부분의 CRUD 작업을 위한 API 개발이 불필요해집니다.

3. 사용자 인증 및 권한 관리

  • Supabase Auth를 사용하여 사용자 인증 기능 구현
    • 이메일/비밀번호 인증, 소셜 로그인 (Google, Facebook 등) 지원
    • 사용자 세션 및 인증 토큰 자동 관리
  • Supabase의 Row Level Security (RLS)를 통해 사용자 권한 관리
    • 테이블 수준에서 사용자 역할 및 권한 설정
    • 인증된 사용자만 데이터에 접근할 수 있도록 제한
      • 자신의 게시물의 수정 삭제는 게시물 제작자 id와 같아야 한다.
      • 댓글 삭제는 댓글 제작자와 게시물 제작자가 한다.

Supabase의 내장 인증 및 권한 관리 기능으로, 별도의 인증 서버 구축 없이도 안전한 애플리케이션을 개발할 수 있습니다.

4. 파일 업로드 및 관리

  • Supabase Storage를 사용하여 파일 업로드 및 관리
    • 사용자가 업로드한 이미지 파일을 Supabase Storage에 저장
    • 파일 업로드, 다운로드, 삭제 등의 작업을 Supabase API를 통해 처리
  • 파일 관련 메타데이터는 데이터베이스에 저장하여 관리

Supabase Storage를 사용하면, 별도의 파일 서버 구축 없이도 파일 관리 기능을 쉽게 구현할 수 있습니다.

5. 백엔드 서버 배포 및 운영

  • Supabase는 클라우드 기반 서비스로, 별도의 서버 배포 및 운영이 필요 없음
  • Supabase 대시보드에서 프로젝트 설정 및 모니터링 가능
  • 데이터베이스 백업, 보안 업데이트 등은 Supabase에서 자동으로 처리

Supabase를 사용하면, 백엔드 인프라 관리에 대한 부담을 크게 줄일 수 있습니다.

결론

소셜 미디어 애플리케이션 시나리오를 통해 Supabase가 전통적인 백엔드 개발을 어떻게 대체할 수 있는지 확인해보았습니다. Supabase는 데이터베이스 관리, API 개발, 사용자 인증, 파일 스토리지 등 백엔드 개발의 주요 작업들을 간소화하고 자동화합니다. 이를 통해 개발자들은 복잡한 백엔드 인프라 구축에 대한 부담을 줄이고, 애플리케이션 로직 개발에 더욱 집중할 수 있습니다.

Supabase의 직관적인 인터페이스와 강력한 기능들은 백엔드 개발의 생산성을 크게 향상시킵니다. 또한 Supabase의 실시간 기능과 확장성은 모던한 웹 애플리케이션 개발에 최적화되어 있습니다.

전통적인 백엔드 개발 방식에서 벗어나, Supabase와 함께 더욱 효율적이고 생산적인 개발 경험을 시작해보세요. Supabase가 여러분의 아이디어를 더욱 빠르고 간편하게 실현할 수 있도록 도와줄 것입니다.