SQL 데이터베이스를 즉시 백엔드로 바꿔주는 도구 (Directus)

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00자, 똑같은 백엔드를 몇 번이나
00:00:04다시 만드셨나요?
00:00:07CRUD, 인증, 관리자 패널, 파일 업로드까지요.
00:00:10많은 경우 개발이라고 생각하는 것이 사실은 단순한 반복 작업일 때가 많습니다.
00:00:15기존 SQL 데이터베이스에 도구 하나만 연결해서 전체 백엔드를 얻을 수 있다면 어떨까요?
00:00:21그게 바로 SQL 데이터베이스 콘텐츠 관리를 위한 실시간 API 및 앱 대시보드인 Directus입니다.
00:00:25많은 개발자가 그동안 너무 어렵게 일해왔다는 사실을 깨닫기 시작했습니다.
00:00:30단 몇 분 만에 이 모든 것이 어떻게 작동하는지 보여드리겠습니다.
00:00:33[음악]
00:00:38우리 대부분에게 가장 큰 백엔드 문제는 복잡함이 아니라 반복입니다.
00:00:42새로운 문제를 해결하는 것이 아니라 같은 코드를 계속해서 연결하고 있을 뿐이죠.
00:00:44그리고 그것은 정말로 우리의 시간을 갉아먹습니다.
00:00:46Directus는 그 모든 과정을 생략해 줍니다.
00:00:50Postgres, MySQL 또는 Oracle 데이터베이스에 직접 연결됩니다.
00:00:53마이그레이션도, 다른 곳에 스키마를 다시 구축할 필요도 없습니다.
00:00:57즉시 REST 및 GraphQL API를 얻을 수 있고,
00:01:01필드 수준의 권한 설정, 실시간 구독,
00:01:05워크플로 및 자동화, 파일 처리, 그리고 깔끔한 관리자 UI까지 제공됩니다.
00:01:08여기서 멋진 점은 데이터베이스가 그대로 유지된다는 것입니다.
00:01:10별도의 복제 레이어가 아닙니다.
00:01:12이것은 들리는 것보다 훨씬 더 중요한 의미가 있습니다.
00:01:13이제 보여드리겠습니다.
00:01:17워크플로 속도를 높여주는 오픈 소스 도구와 코딩 팁을 좋아하신다면,
00:01:18꼭 구독해 주세요.
00:01:20항상 새로운 영상이 올라옵니다.
00:01:24자, 이제 완전히 깨끗한 Directus 설치 상태에서 시작해 보겠습니다.
00:01:27데이터베이스 테이블도 없고, 미리 로드된 것도 없습니다.
00:01:32계정을 만든 직후의 완전히 빈 캔버스 상태입니다.
00:01:34이미 존재하는 것에 연결하는 대신,
00:01:39단 1분 만에 전체 주문 관리 앱을 만들어 보겠습니다.
00:01:45먼저 컬렉션을 만들고 이름을 'Orders'라고 짓겠습니다.
00:01:45그게 끝입니다.
00:01:51이제 앱에 데이터를 저장할 공간이 생겼으니 세부 사항을 추가할 수 있습니다.
00:01:54필요한 것들을 선택해서 덮어씌울 텐데요,
00:01:58고객, 날짜 등 필요한 모든 정보들입니다.
00:02:00그다음 이런 앱에 필요할 것 같은
00:02:03다른 필드들을 수동으로 추가할 수 있습니다.
00:02:08고객 이름, 이메일, 그리고 키와 값을 추가할 수 있는
00:02:10드롭다운 형태의 상품 필드를 만들 수 있습니다.
00:02:13금액과 상태 필드도 마찬가지로 만들 수 있죠.
00:02:16각 필드는 우리가 저장할 데이터에 대한 상세 정보를 추가합니다.
00:02:18여기서 무엇이 빠졌는지 주목해 보세요.
00:02:19바로 SQL입니다.
00:02:20SQL이 전혀 없습니다.
00:02:22마이그레이션도 없습니다.
00:02:25스키마 파일을 작성하려고 탭을 전환할 필요도 없습니다.
00:02:28Directus에서 즉시 바로 저장됩니다.
00:02:32이제 콘텐츠 뷰로 들어가서 주문을 추가해 보겠습니다.
00:02:35테스트용 계정으로 첫 번째 주문을 추가합니다.
00:02:36하나 더 추가하고요.
00:02:39세 번째 주문까지 추가할 수 있겠죠?
00:02:42시스템에 세 개의 서로 다른 주문이 들어왔습니다.
00:02:45이제 실제로 다뤄볼 만한 데이터가 생겼습니다.
00:02:49하지만 지금은 모든 것이 열려 있어서 누구나 무엇이든 할 수 있습니다.
00:02:50이걸 해결해 보죠.
00:02:51어떻게 해결할까요?
00:02:53네, 바로 권한 설정을 통해서입니다.
00:02:55공개(public) 역할로 이동합니다.
00:02:58우리가 만든 'orders' 컬렉션을 찾아서
00:03:00읽기(read) 권한을 켭니다.
00:03:03그리고 나머지는 모두 꺼져 있는지 확인합니다.
00:03:05생성, 수정, 삭제 권한은
00:03:06이제 모두 사라졌습니다.
00:03:10이제 우리가 원하는 대로 더 안전하게 제어됩니다.
00:03:12자, 이제 정말 멋진 부분을 보여드릴게요.
00:03:16자동화를 구현하고 이와 관련된 플로우를 구축할 수 있기 때문입니다.
00:03:19이쪽으로 가서 새 플로우를 생성하겠습니다.
00:03:22아주 간단하게 이름을 지어볼까요?
00:03:24'새 주문 알림'으로 하겠습니다.
00:03:26목적이 분명한 간단한 이름이죠.
00:03:31그리고 'orders' 컬렉션의 모든 항목을 선택합니다.
00:03:33이제 트리거를 만들 수 있습니다.
00:03:37트리거로는 특히 'orders' 컬렉션에
00:03:39새 항목이 생성될 때를 연결합니다.
00:03:43이제 새 주문이 들어올 때마다 어떤 동작이 일어날 것입니다.
00:03:44작업(operation)을 하나 추가하겠습니다.
00:03:46이메일을 보낼 건데요.
00:03:47제목을 쓰고 제 이메일 주소를 넣겠습니다.
00:03:49그리고 본문에는 주문 데이터를 불러오도록 설정합니다.
00:03:52새 주문이 들어올 때마다 해당 데이터를 이메일로 발송하게 됩니다.
00:03:56이제 이 작업을 저장하고 플로우를 저장하면 끝입니다.
00:04:00자, 이걸 보세요.
00:04:02다시 돌아가겠습니다.
00:04:03처음 시작할 때 Docker Compose 파일에 테스트를 위해 Mailpit을 추가해 두었습니다.
00:04:07이메일 발송 기능을 테스트하기 위한 아주 간단한 방법이죠.
00:04:11이전처럼 주문을 하나 더 만들어 보겠습니다.
00:04:14특별한 건 없지만, 이번엔 결과가 다릅니다.
00:04:16자동으로 플로우가 트리거되고 상세 내용이 담긴 이메일이 발송됩니다.
00:04:20따로 작성한 백엔드 로직이 없습니다.
00:04:22복잡하게 이것저것 연결할 필요도 없었죠.
00:04:25처음엔 아무것도 없었습니다. 테이블도, 백엔드도, 구조도 없었죠.
00:04:30하지만 단 몇 분 만에 데이터 권한과
00:04:33가장 멋진 부분인 자동화까지 갖춘 작동하는 앱이 되었습니다.
00:04:35이것이 Directus를 정말 멋지게 만드는 점입니다.
00:04:38N8N이나 Zapier가 내장된 시각적 데이터베이스 로직의 결합체 같기도 하지만,
00:04:43사실 그런 도구들과 경쟁하는 서비스는 아닙니다.
00:04:45그럼 Directus의 정체는 정확히 무엇일까요?
00:04:47SQL 데이터베이스 위에 얹혀서 작동하는 오픈 소스 데이터 플랫폼입니다.
00:04:52데이터베이스 옆에 따로 존재하는 것이 아니라,
00:04:53그 바로 위에 자리 잡습니다.
00:04:55이런 '데이터베이스 우선' 모델이 핵심입니다.
00:04:58그게 우리에게 실제로 무엇을 의미할까요?
00:04:59몇 가지 장점이 있습니다.
00:05:01먼저 특정 플랫폼에 종속되지 않습니다(No lock-in).
00:05:03순수 SQL이 그대로 남아 있어 기존 레거시 시스템과도 잘 작동합니다.
00:05:07그래서 사람들이 SaaS 백엔드나 내부 도구, 헤드리스 CMS 구축,
00:05:13또는 제어된 데이터가 필요한 AI 에이전트 등에 이를 사용합니다.
00:05:15모든 것을 새로 쓰지 않고 오래된 시스템을 현대화하려 할 때 유용하죠.
00:05:19데이터베이스가 실제 엔진 역할을 하고,
00:05:21Directus는 대시보드와 제어 기능을 제공할 뿐입니다.
00:05:24처음 보면 Strapi, Payload, Hasura 같은 도구들과
00:05:28비슷해 보일 수 있지만, 사실 해결하려는 문제가 다릅니다.
00:05:33Strapi와 Payload는 코드 우선 방식입니다.
00:05:36코드에서 스키마를 정의하고 구조를 다시 구축해야 하죠.
00:05:40물론 잘 작동하지만, 추가적인 작업이 필요합니다.
00:05:42Directus는 워크플로를 약간 바꿉니다.
00:05:45스키마가 이미 존재하므로 새로 만드는 대신 그냥 연결만 하면 됩니다.
00:05:50완전히 다른 작업 방식이죠.
00:05:52Hasura는 빠른 GraphQL에 좋지만, Directus는 그보다 훨씬 광범위합니다.
00:05:58API는 물론이고,
00:05:59관리자 워크스페이스, 권한 관리, 파일, 자동화 기능까지 모두 얻을 수 있습니다.
00:06:05그리고 많은 개발자가 사용해 보고 가장 만족하는 부분은 권한 설정입니다.
00:06:10단순히 규칙 몇 개를 말하는 게 아닙니다.
00:06:12플러그인 없이도 가능한 진정한 제어권을 의미합니다.
00:06:15단순히 백엔드가 필요한 것이라면 선택지는 많습니다.
00:06:18하지만 백엔드를 다시는 처음부터 만들고 싶지 않다면 이야기가 달라집니다.
00:06:23물론 완벽한 도구는 없지만, 이건 정말 훌륭합니다.
00:06:26제가 특히 멋지다고 생각한 점은 무엇일까요?
00:06:28권한 설정이 그냥 바로 작동한다는 점입니다.
00:06:29정말 최고죠.
00:06:30플로우(Flows)는 우리가 하는 단순 반복 업무를 많이 줄여줍니다.
00:06:32UI는 매우 깔끔하고 빠르며, Docker로 배포하기도 쉽습니다.
00:06:37게다가 확장성도 매우 뛰어납니다.
00:06:39좋은 점이 많지만, 당연히 단점도 존재합니다.
00:06:43고급 플로우를 구성하는 데 시간이 꽤 걸릴 수 있다는 점이겠죠.
00:06:46N8N 같은 도구를 써보셨다면 무슨 뜻인지 아실 겁니다.
00:06:49문서화가 완벽하지 않을 때도 있습니다.
00:06:51직접 호스팅한다면 인프라 관리도 직접 해야 하죠.
00:06:54또한 복잡한 설정은 로컬 환경에서 까다로울 수 있습니다.
00:06:57Directus는 특정 종류의 반복적인 백엔드 작업을 제거해 줍니다.
00:07:00그럼 Directus를 쓸 가치가 있을까요?
00:07:02우리 중 많은 사람에게 답은 '예'일 것입니다.
00:07:03진행 중인 작업에 따라 다르겠지만, 이미 SQL 데이터가 있거나
00:07:07기본적인 백엔드를 반복해서 만드는 것에 지쳤다면,
00:07:11분명히 실질적인 가치가 있습니다.
00:07:13시간을 아껴주고 유지보수를 줄여주며 데이터 제어권도 유지할 수 있습니다.
00:07:17다시 한번 말씀드리지만, 오픈 소스입니다.
00:07:19우리가 직접 제어할 수 있죠.
00:07:20그럼 언제 사용하지 않는 게 좋을까요?
00:07:22엄격한 TypeScript 기반의 거대한 모노레포 환경이라면 아닐 수도 있습니다.
00:07:26기존 데이터베이스가 없는 경우도 마찬가지겠죠.
00:07:29처음부터 모든 것을 코드로 정의하고 싶다면
00:07:33Payload 같은 도구가 훨씬 더 합리적일 것입니다.
00:07:34하지만 '잠깐, 이걸 그냥 내 데이터베이스 위에 얹기만 하면 된다고?'라는 생각이 든다면,
00:07:38네, 맞습니다.
00:07:39시도해 볼 만한 가치가 충분합니다.
00:07:41이런 오픈 소스 도구와 코딩 팁이 마음에 드셨다면,
00:07:45Better Stack 채널을 꼭 구독해 주세요.
00:07:46다음 영상에서 뵙겠습니다.

Key Takeaway

Directus는 기존 SQL 데이터베이스 위에 직접 설치되어 코드 작성 없이 API, 관리자 패널, 권한 제어 및 워크플로 자동화를 즉시 제공함으로써 백엔드 개발의 반복적인 작업을 제거합니다.

Highlights

Directus는 Postgres, MySQL, Oracle 등 기존 SQL 데이터베이스에 직접 연결하여 REST 및 GraphQL API를 즉시 생성합니다.

데이터베이스 스키마를 별도의 레이어에 복제하지 않고 기존 엔진을 그대로 활용하는 데이터베이스 우선(Database-first) 방식을 채택합니다.

SQL 작성이나 마이그레이션 과정 없이 GUI를 통해 컬렉션 생성, 필드 정의, 권한 설정을 단 몇 분 만에 완료할 수 있습니다.

특정 플랫폼에 종속되지 않는 오픈 소스 플랫폼으로 기존 레거시 시스템을 유지하면서 백엔드 기능을 현대화하는 데 적합합니다.

조건부 트리거와 이메일 발송 같은 비즈니스 로직을 코드 작성 없이 시각적인 플로우(Flows) 도구로 자동화합니다.

Timeline

반복적인 백엔드 개발의 비효율성 해결

  • CRUD, 인증, 파일 업로드와 같은 백엔드 핵심 기능 구현은 단순 반복 작업에 가깝습니다.
  • 기존 SQL 데이터베이스를 그대로 유지하면서 그 위에 Directus를 연결해 전체 백엔드 시스템을 확보합니다.
  • 데이터 복제 없이 실시간 API와 필드 수준의 정밀한 권한 설정을 즉시 적용합니다.

대부분의 백엔드 개발 문제는 복잡성이 아니라 같은 코드를 반복해서 연결하는 과정에서 발생합니다. Directus는 데이터베이스를 그대로 둔 채 관리 UI와 API 레이어를 얹는 방식을 사용하여 이 문제를 해결합니다. 개발자는 마이그레이션이나 스키마 재구축 없이 즉시 REST 및 GraphQL API를 사용할 수 있는 환경을 갖추게 됩니다.

SQL 없이 진행하는 앱 스키마 및 데이터 구축

  • GUI 환경에서 컬렉션을 생성하고 필드를 추가하는 것만으로 데이터베이스 구조가 즉시 업데이트됩니다.
  • 고객 정보, 이메일, 상품 드롭다운, 상태 값 등 다양한 필드 유형을 수동 코딩 없이 구성합니다.
  • 스키마 파일을 작성하거나 탭을 전환할 필요 없이 변경 사항이 데이터베이스에 바로 저장됩니다.

주문 관리 앱을 예로 들면 Orders 컬렉션을 만들고 필요한 세부 필드를 선택하는 과정이 1분 내외로 소요됩니다. SQL 명령어를 입력하지 않고도 데이터 저장 공간이 생성되며 콘텐츠 뷰를 통해 즉시 데이터를 입력하고 관리할 수 있습니다. 이는 개발자가 스키마 설계와 실제 구현 사이의 간극을 줄이는 데 도움을 줍니다.

정밀한 권한 제어와 시각적 워크플로 자동화

  • 공개 역할이나 특정 사용자 그룹별로 읽기, 쓰기, 수정 권한을 세부적으로 제어합니다.
  • 새 데이터 생성과 같은 트리거를 설정하여 자동화된 비즈니스 로직 플로우를 구축합니다.
  • 별도의 백엔드 로직 작성 없이 새 주문 발생 시 이메일 알림을 보내는 기능을 구현합니다.

권한 설정 메뉴에서 특정 컬렉션의 읽기 권한만 허용하고 나머지를 차단하는 방식으로 보안을 강화합니다. 플로우 기능을 활용하면 데이터베이스 내부 사건을 트리거로 삼아 외부 알림이나 데이터 처리를 자동화할 수 있습니다. 테스트 도구인 Mailpit을 연동하여 실제 이메일이 발송되는 과정을 확인함으로써 별도의 코딩 없이도 복잡한 로직이 작동함을 증명합니다.

Directus의 아키텍처 특징 및 타 도구와의 차이점

  • SQL 데이터베이스 옆이 아니라 바로 위에서 작동하는 데이터베이스 우선 모델을 따릅니다.
  • Strapi나 Payload 같은 코드 우선 방식 도구와 달리 기존 스키마를 연결하는 데 특화되어 있습니다.
  • 플러그인 설치 없이도 API, 관리자 워크스페이스, 파일 처리 기능을 통합 제공합니다.

Directus는 데이터베이스를 엔진으로 삼고 자신은 대시보드와 제어 기능만 제공하는 구조입니다. 이로 인해 특정 벤더에 종속되는 현상이 없으며 기존의 오래된 시스템을 현대화하는 데 유리합니다. 코드 기반으로 스키마를 정의해야 하는 다른 CMS와 달리 이미 존재하는 데이터 구조를 그대로 활용할 수 있다는 점이 가장 큰 차별점입니다.

도구 도입의 장단점 및 적합한 사용 사례

  • 깔끔한 UI와 손쉬운 Docker 배포, 뛰어난 확장성이 주요 장점으로 꼽힙니다.
  • 고급 플로우 구성의 난이도와 인프라 직접 관리의 부담은 단점이 될 수 있습니다.
  • 반복적인 백엔드 구축을 피하고 데이터 제어권을 유지하려는 경우에 가장 가치가 높습니다.

반복적인 CRUD 작업에서 벗어나고 싶은 개발자에게 Directus는 실질적인 시간 절약 효과를 제공합니다. 다만 모든 것을 코드로 엄격하게 정의해야 하는 대규모 모노레포 환경이나 기존 데이터베이스가 없는 경우에는 적합하지 않을 수 있습니다. 오픈 소스 기반이므로 사용자가 직접 시스템을 제어하며 필요에 따라 유연하게 배포하고 운영할 수 있습니다.

Community Posts

View all posts