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다음 영상에서 뵙겠습니다.