Skip to main content

ubuntu 서버에 CouchDB 설치하기

·510 words·3 mins
미뇽
Author
미뇽
안녕하세요! 기술로 세상을 이롭게 만들고 싶은 개발자 미뇽입니다.
Table of Contents

수많은 데이터베이스 중에서도, 이번에는 특별한 매력을 가진 Apache CouchDB를 알아보고, 우리가 이전에 배운 도커 컴포즈를 이용해 가장 간편하고 현명한 방법으로 설치해 보겠습니다.

CouchDB란 무엇이며, 왜 사용할까요?
#

CouchDBApache Software Foundation에서 개발하는 NoSQL 데이터베이스입니다. NoSQL은 전통적인 관계형 데이터베이스(RDBMS, 예: MySQL)의 테이블 구조가 아닌, 보다 유연한 방식으로 데이터를 저장하는 데이터베이스를 말합니다. CouchDB는 데이터를 JSON 문서(Document) 형태로 저장하는데, 이는 마치 서류 캐비닛에 파일을 정리하는 것과 비슷합니다.

그렇다면 수많은 데이터베이스 중에서 CouchDB를 주목하는 이유는 무엇일까요?

독보적인 데이터 동기화 기능 (Multi-Master Replication)

CouchDB의 가장 강력한 특징입니다. 여러 대의 CouchDB 서버 혹은 클라이언트(모바일 기기 등)가 있을 때, 네트워크 연결이 끊겼다가 다시 연결되어도 알아서 데이터를 서로 복제하고 동기화합니다. 오프라인 상태에서도 앱이 정상적으로 작동해야 하는 ‘오프라인 우선(Offline-First)’ 모바일 앱이나, 전 세계에 분산된 서버들이 데이터를 공유해야 하는 서비스, IoT 기기 데이터 수집 등에서 막강한 성능을 발휘합니다.

웹 친화적인 구조 (HTTP API)

CouchDB는 모든 통신을 웹 표준인 HTTP 프로토콜 위에서 수행합니다. 즉, 웹 브라우저나 curl 같은 간단한 명령어로도 데이터의 조회, 입력, 수정, 삭제(CRUD)가 모두 가능합니다. 이는 웹 개발자에게 매우 직관적이고 다루기 쉬운 환경을 제공합니다.

유연한 데이터 모델

엄격한 스키마(데이터 구조)를 미리 정의할 필요가 없습니다. 프로젝트를 진행하면서 필요한 필드를 자유롭게 추가하거나 변경할 수 있어, 변화가 잦은 초기 스타트업이나 애자일 환경의 프로젝트에 적합합니다.

뛰어난 안정성과 내구성

데이터를 저장할 때마다 이전 버전을 남겨두는 방식을 사용하여, 데이터베이스 파일이 손상되더라도 복구할 수 있는 능력이 뛰어납니다.

솔직히 말해, CouchDB가 MongoDB나 PostgreSQL처럼 시장을 지배하는 주류 데이터베이스는 아닐 수 있습니다. 하지만 위에서 언급한 독보적인 동기화 기능 덕분에, 특정 분야에서는 그 어떤 데이터베이스보다 뛰어난, ‘대체 불가능한 강력한 조연’ 같은 역할을 톡톡히 해내고 있습니다.

Docker Compose로 CouchDB 설치하기
#

이제 docker compose를 이용해 CouchDB를 1분 만에 설치해 보겠습니다. 이 방법은 여러분의 PC를 깨끗하게 유지하면서, 필요할 때마다 명령어 한 줄로 데이터베이스를 실행하고 중지할 수 있는 가장 효율적인 방법입니다.

docker-compose.yml 파일 작성하기
#

프로젝트 폴더를 하나 만들고, 그 안에 docker-compose.yml 이라는 이름의 파일을 생성한 후 아래 내용을 입력하십시오.

version: '3.8'

services:
couchdb:
image: apache/couchdb:3.3.3
container_name: my-couchdb
restart: always
environment:
  - COUCHDB_USER=admin
  - COUCHDB_PASSWORD=password
ports:
  - "5984:5984"
volumes:
  - couchdb-data:/opt/couchdb/data

volumes:
couchdb-data:
  • image: apache/couchdb:3.3.3: CouchDB 공식 이미지를 사용합니다.
  • environment: CouchDB에 접속할 관리자 계정(admin)과 비밀번호(password)를 설정합니다.
  • ports: - "5984:5984": 내 컴퓨터의 5984번 포트를 컨테이너의 5984번 포트와 연결합니다. CouchDB는 5984 포트를 사용합니다.
  • volumes: 컨테이너가 삭제되더라도 데이터베이스의 데이터는 사라지지 않도록 couchdb-data 라는 볼륨에 영구적으로 저장합니다. 이것은 매우 중요한 설정입니다.
실제 운영 환경에서는 절대 이렇게 간단한 비밀번호를 사용해서는 안 됩니다.

CouchDB 실행하기 🚀
#

docker-compose.yml 파일이 있는 폴더에서 터미널을 열고 다음 명령어를 입력하십시오.

docker compose up -d

-d 옵션은 컨테이너를 백그라운드에서 조용히 실행하라는 의미입니다.

설치 확인하기
#

이제 CouchDB가 정상적으로 실행되고 있는지 확인해볼 차례입니다.

웹 관리 도구 접속

웹 브라우저를 열고 http://localhost:5984/_utils/ 주소로 접속하십시오.

CouchDB의 웹 관리 도구인 ‘Fauxton’의 로그인 화면. 사용자 이름과 비밀번호를 입력하는 칸이 보입니다.

docker-compose.yml 파일에 설정했던 사용자 이름(admin)과 비밀번호(password)를 입력하고 로그인했을 때, 데이터베이스 관리 화면이 나타난다면 성공입니다.

터미널에서 curl로 확인

터미널에 다음 명령어를 입력해 보십시오.

curl http://admin:password@localhost:5984/

{"couchdb":"Welcome","version":"3.3.3", ...} 와 같이 CouchDB의 환영 메시지가 JSON 형태로 출력된다면 성공적으로 설치되고 실행 중인 것입니다.

맺음말
#

수고하셨습니다. 여러분은 이제 복잡한 설치 과정 없이, 단 하나의 설정 파일과 명령어 한 줄만으로 강력한 NoSQL 데이터베이스인 CouchDB를 여러분의 개발 환경에 구축했습니다.

이제 여러분의 애플리케이션 컨테이너에서 이 CouchDB 컨테이너로 접속하여 데이터를 저장하고 조회하는 작업을 수행할 수 있습니다. 이것이 바로 여러 개의 컨테이너가 서로 협력하며 하나의 서비스를 만들어나가는, 도커 컴포즈의 진정한 힘입니다.