일상/IT

상위 데이터베이스 스키마 변경 도구의 발전

얇은생각 2023. 9. 29. 07:30
반응형

데이터베이스 스키마 마이그레이션은 CLI에서 GUI, GitOps 및 Database-as-Code로 크게 발전했습니다. 이제 데이터베이스 스키마 마이그레이션 도구의 진화를 살펴보겠습니다.

데이터베이스 스키마 마이그레이션은 애플리케이션 개발 과정에서 가장 위험한 영역일 수 있습니다. 데이터베이스 스키마 마이그레이션 도구는 고통을 완화하기 위해 존재하며 기본 CLI 도구에서 GUI 도구, 단순한 SQL GUI 클라이언트, 올인원 협업 데이터베이스 플랫폼에 이르기까지 많은 발전을 이루었습니다.

 

 

명령줄 클라이언트(CLI) - MySQL / PSQL

MySQL과 psql은 각각 MySQL과 PostgreSQL의 네이티브 CLI입니다. 명령줄에서 MySQL 또는 PostgreSQL 서버로 직접 명령 또는 쿼리를 보낼 수 있습니다.

CLI 인터페이스는 단순하지만 초보자에게는 위협적인 경우도 있지만, Timescale의 State of PostgreSQL 2022 설문조사 결과에 따르면 pgAdmin, DBeaver와 같은 GUI 도구를 능가하는 PostgreSQL과 상호작용하기 위한 가장 인기 있는 도구는 PSQL입니다.

상위 데이터베이스 스키마 변경 도구의 발전 1

 

 

GUI

PPMyAdmin, PGAdmin

phpMyAdmin과 pgAdmin은 고전적인 SQL 클라이언트입니다. phpMyAdmin은 MySQL 및 MySQL 호환 데이터베이스(예: MariaDB)를 관리하기 위한 이미 확립된 도구이며, pgAdmin은 PostgreSQL 대응 도구로, 이제 pgAdmin은 CLI 도구와 비교하여 SQL 쿼리를 실행하고 실행하기 위한 UI를 제공하여 사용자 친화적입니다.

 

 

DBeaver

DBeaver의 첫 번째 릴리스는 2010년에 출시되었으며, 이 오픈 소스 SQL 클라이언트는 전체 범위의 데이터베이스(SQL, NoSQL 및 클라우드 DB)를 지원하며, OpenAI의 GPT 기능을 통합하여 자연어를 SQL로 변환할 수 있도록 함으로써 AI 영역의 최신 동향을 파악합니다.

 

 

나비캣

Navicat은 2001년에 처음 출시되었는데, 당시에는 MySQL만 지원하다가 나중에 데이터베이스를 추가하게 되었습니다. Navicat의 UI는 조금 구식으로 보이지만 완벽한 기능을 갖추고 있으며 데이터베이스 운영 시 전반적인 환경을 원활하게 제공합니다. 

GUI 기반 SQL 클라이언트는 CLI 기반 SQL 클라이언트를 보완하는 좋은 기능입니다. 기본적으로 동일한 방식으로 작동합니다. 데이터베이스에 연결하여 일부 SQL을 실행할 수 있습니다. 반대로 데이터베이스 변경 관리 및 데이터 보안 측면에서 빠르고 편리합니다. 이 게시물은 Navicat을 예로 들어 자세히 설명합니다.

 

 

Gitops / Database-As-Code

데이터베이스 스키마 변경사항을 보다 효율적으로 관리하고 소스 제어하기 위해 여러 도구가 코드 변경 프로세스를 데이터베이스 변경사항(Database-as-Code)에 도입했습니다.

 

리퀴베이스

Liquibase는 데이터베이스 변경을 추적, 관리 및 적용하는 오픈 소스 라이브러리로 2006년에 시작했습니다. 재미있는 사실: Liquibase는 2012년에 Datical이라는 회사에 인수되어 Datical로 브랜드가 바뀌었지만, 2020년에 다시 이름을 바꾸었습니다. ( 현명한 움직임, 포럼에서 Datical을 언급한 사람을 본 적이 있습니까?). 

Liquibase의 주요 제품은 개발자 팀이 CLI를 통해 데이터베이스 스키마 마이그레이션을 CI/CD 워크플로우에 통합할 수 있는 Java 기반 CLI입니다.

 

플라이웨이

플라이웨이는 Liquibase와 여러 면에서 유사점을 공유합니다. 그들은 오래전부터 자리를 잡았고 고객 기반을 가지고 있으며 오픈 소스 프로젝트입니다. 핵심 제품은 CLI와 Java 라이브러리입니다.

Flyway의 배후에 있는 상업적 실체는 Redgate(2019년 인수)입니다. 커뮤니티, 팀, 엔터프라이즈의 세 가지 에디션이 있습니다. 오픈 소스와 상용 서비스 사이에 명확한 경계를 표시했다는 것을 알 수 있습니다. Flyway의 웹 사이트는 전반적으로 캐주얼한 느낌을 주는 반면, Redgate의 훨씬 전문적인 느낌을 줍니다.

Liquibase와 Flyway는 막상막하입니다. 주요 차이점은 Liquibase가 더 기업 지향적인 반면 Flyway는 더 개발자 지향적이라는 각각의 위치에 있습니다.

 

 

스퀴치

Sqitch는 2012년부터 시판되고 있는 상용 서비스가 없는 순수 오픈 소스 프로젝트로, 순수 CLI이며 UI가 없습니다. 

자바 기반의 Liquibase 및 Flyway와는 달리 Sqitch는 Perl을 사용하여 개발됩니다. 또한 Sqitch는 데이터베이스 스키마 변경을 관리하는 방법에 대한 철학을 가지고 있습니다. Liquibase 및 Flyway 모두 파일 명명 규칙을 사용하여 스키마 마이그레이션(구성에 대한 컨벤션)을 주문합니다.

Sqitch는 사용자가 Sqitch 계획에서 순서를 지정할 수 있도록 명시적인 접근 방식을 채택합니다.

 

 

아틀라스

Atlas는 Ariga가 개발한 오픈 소스 도구이며 "데이터베이스 스키마 as-code"라는 용어를 홍보합니다.

HACL(HashiCorp Configuration Language)을 기반으로 Atlas HCL을 개발하였으며, Hacker News에 처음 등장하면서 "데이터베이스 마이그레이션을 위한 Terraform"이라고 명명하였습니다.

. Atlas는 최신 프로그래밍 언어 Go(Java를 사용하는 Liquibase/Flyway와 달리)를 사용하고 CLI(Lucibase/Flyway/Sqitch와 유사)를 중심으로 하지만 가벼운 UI도 가지고 있습니다. Atlas Cloud는 오픈 소스 버전의 상용 제품입니다.

 

 

올인원: GUI + Gitops / Database-As-Code + 협업

프리즘

Prisma와 같은 ORM은 코드가 데이터와 상호 작용하는 방식의 도메인을 대상으로 합니다. 비록 이것은 백엔드 주제에 가깝지만, Prisma는 프론트엔드 루트를 가진 ORM입니다. 프런트엔드 엔지니어는 아마도 SQL에 가장 능숙하지 않을 것입니다. 데이터베이스 스키마 관리의 장벽을 낮추기 위해 Prisma는 DSL을 발명하여 데이터 모델을 정의합니다.

DSL은 상태 기반(선언형)으로, Liquibase/Flyway/Sqitch와는 달리 증분 변경 대신 데이터베이스 스키마의 종료 상태를 설명합니다. 이러한 방식으로 Prisma는 전체 애플리케이션 개발 주기에 걸쳐 데이터베이스 관리를 보다 포괄적으로 볼 수 있습니다.

Prisma ORM은 오픈 소스이며 무료로 사용할 수 있으며, 데이터 플랫폼은 몇 가지 고급 기능을 갖춘 클라우드 기반 협업 플랫폼을 제공합니다(단순한 ORM 및 스키마 마이그레이션 툴 이상의 야심이 있음은 분명합니다).

 

바이트베이스

Bytebase는 변경, 쿼리 및 보안에서 비주얼 웹 기반 협업 작업 공간을 통한 거버넌스에 이르기까지 데이터베이스 관리 시나리오를 다루는 오픈 소스 데이터베이스 DevOps 툴입니다. 

Bytebase는 개발자와 DBA가 협력하여 동일한 인터페이스를 통해 데이터베이스 변경 작업을 수행할 수 있는 웹 기반 UI를 제공합니다.

 

코드로서의 데이터베이스

Bytebase는 개발자들의 작업 습관을 더 잘 수용하기 위해 GitLab, GitHub와 같은 코드 저장소에 기능을 통합했습니다. GitOps 워크플로우를 사용하면 개발자들은 익숙한 코드 저장소에 데이터베이스 변경 파일을 제출할 수 있으며, 검토가 완료되고 repo에 전념하면 Bytebase에 의해 배포가 자동으로 트리거됩니다. 여러 도구를 전환할 필요가 없습니다!

 

팀 협업 및 관리 

워크스페이스와 프로젝트의 두 가지 수준에서 구성원에 대해 서로 다른 역할을 정의할 수 있습니다. 팀 구성원이 서로 다른 프로젝트에 대해 서로 다른 사용 권한을 갖도록 구성원에게 서로 다른 역할을 할당하거나, 이 특정 프로젝트를 담당하는 특정 DBA 또는 QA를 지정하는 등 각 프로젝트에 대한 승인 워크플로우를 구성할 수 있습니다.

Prisma와 Bytebase의 차이점은 대상 고객에게 있습니다. Prisma는 주로 프론트엔드/풀스택 개발자를 대상으로 하는 반면, Bytebase는 백엔드 및 DBA에 더 중점을 둡니다. 두 제품 모두 Prisma는 단일 프로젝트에서 개발자 간의 협업에 초점을 맞추고 있으며, Bytebase는 전체 엔지니어링 조직, 즉 개발자 및 DBA/Platform Engineering/Ops 팀을 대상으로 합니다.

 

 

요약 

상위 데이터베이스 스키마 변경 도구의 발전 2

 

데이터베이스를 개별적으로 운영하는 경우 Navicat과 같은 기존 CLI 또는 GUI SQL 클라이언트로 충분합니다. 코드 저장소와의 통합을 선호하는 경우 Liquibase 및 Flyway와 같은 솔루션이 있습니다. 그러나 Jira 또는 GitLab과 유사한 GUI 및 프로젝트 협업 기능의 경우 Prisma 및 Bytebase 옵션이 있습니다. Bytebase는 데이터 보안과 거버넌스를 보장하고 데이터베이스를 보다 안전하게 변경할 수 있는 유일한 도구입니다.

반응형