Intro

업무를 하다 보면 예상치 못한 기술적 문제가 발생하는 경우가 종종 있습니다. 최근에 겪은 사례를 하나 공유해 보려 합니다. 원격지에 위치한 개발 서버와 DB 서버를 사용해야 했는데, 두 서버의 접속 방식이 서로 달라 곤란한 상황이 발생했습니다.

개발 서버는 방화벽 설정을 통해 접속할 수 있었고, DB 서버는 VPN을 통해서만 접근할 수 있는 구조였습니다. 문제는 VPN을 실행하면 개발 서버에 접속할 수 없고, 반대로 VPN을 종료하면 DB 서버에 접근할 수 없다는 점이었습니다. 결과적으로 DB 툴과 개발 서버 내 서비스를 번갈아 사용하기 위해선 VPN을 계속 켜고 끄는 번거로운 단계가 필요했습니다.

DB 툴과 개발 서버를 계속해서 교차로 사용해야 하는 상황에서 VPN을 켜고 끄는 작업을 반복하는 것은 너무 비효율적이라고 생각했습니다. 이 문제를 해결할 방법을 고민하던 중, 떠오른 아이디어는 바로 “웹 버전의 DB 툴을 개발 서버에 설치하면 어떨까?” 였습니다.

개발 서버는 DB 서버와 통신이 가능하기 때문에, 개발 서버에 웹 기반으로 동작하는 DB 툴을 설치하면 VPN 연결 없이도 개발에 필요한 모든 서버와 연결할 수 있는 작업 환경을 만들 수 있다고 생각한 것이었죠.

이 아이디어를 바탕으로 설계한 구성도는 아래와 같습니다.

cloudbeaver

cloudbeaver 소개

CloudBeaver(클라우드비버)는 “Cloud Database Manager”로, 쉽게 말해 웹에서 사용할 수 있는 DB 툴입니다. 오픈소스 DB 툴로 잘 알려진 DBeaver의 확장된 형제 서비스라고 볼 수 있습니다.

CloudBeaver는 Java를 기반으로 개발되었으며, 웹 인터페이스는 TypeScript와 React로 구현되었습니다. 라이선스는 Apache 2.0을 따르고 있어, 오픈소스 소프트웨어로 자유롭게 사용할 수 있습니다.

cloudbeaver github

cloudbeaver 설치 준비

이번 포스팅에서는 cloudbeaver를 도커를 통해 서비스되도록 할 것입니다. 이를 위해 Docker와 Docker Compose 패키지가 사전에 설치되어 있어야 합니다. 아래는 제가 사용한 실제 환경입니다.

OS : Ubuntu 22.04
docker : 27.3.1
docker-compose : 2.29.7

참고 - 리눅스에 docker 설치
참고 - 리눅스에 docker compose 설치

cloudbeaver 설치하기

(1) docker image pull

1
docker pull dbeaver/cloudbeaver:24.3.0

(2) docker compose 작성

1
vi ./docker-compose.yml
1
2
3
4
5
6
7
8
services:
  cloudbeaver:
    image: dbeaver/cloudbeaver:24.3.0
    ports:
      - <PORT>:8978
    volumes:
      - /opt/cloudbeaver/workspace
    restart: always

<PORT> 는 cloudbeaver를 서비스할 서비스 포트를 입력하면 됩니다.

(3) docker container run

1
docker compose up -d

cloudbeaver 사용하기

(1) cloudbeaver 접속하기

웹 브라우저를 통해 cloudbeaver가설치된서버IP:<서비스PORT> 로 접속합니다. 접속하면 위와 같은 첫 화면을 볼 수 있는데요, NEXT 버튼을 클릭해줍니다.

이 페이지에서는 관리자(Admin) 계정 설정을 비롯한 기본적인 cloudbeaver 서비스 설정을 할 수 있습니다. 빨간색 박스들은 필수적이거나 꼭 확인하면 좋을 설정들입니다.

-Server Name : cloudbeaver 서버 이름. 임의로 작성.
-Server URL : 서비스 URL 작성 (IP:PORT 혹은 Domain/service 형식)
-Session lifetime : 세션 수명
-ADMINISTRATOR CREDENTIALS : 관리자 계정 설정
-Enable private connections : 유저들이 비공개 연결 생성하는 걸 허용할 것인가

여기까지가 기본적인 설정입니다. FINISH 버튼을 눌러 설정을 완료해줍니다.

(2) 메뉴 바 안내

기본적인 사용법은 여타의 DB 툴과 비슷하며, dbeaver와는 매우 유사합니다. dbeaver에서 몇 가지 기능이 빠진 것만을 제외한다면요.

(3) 계정 및 로그인 기능

cloudbeaver에는 사용자별로 계정 생성이 가능합니다. 그리고 계정에 로그인하여 생성한 DB 연결들은 해당 계정에 저장이 되어, 다음에 로그인할 때에도 번거로운 연결작업 없이 바로 DB에 접속할 수 있습니다.

관리자 계정으로 로그인한 뒤, Administration 메뉴에서 계정 관리를 할 수 있습니다.

Reference

cloudbeaver wiki
docker hub - cloudbeaver