[Coolify 특집] 월 6천 원으로 구축하는 나만의 클라우드 실험실 3편: 데이터 아키텍처 전략

[Coolify 특집] 월 6천 원으로 구축하는 나만의 클라우드 실험실 3편: 데이터 아키텍처 전략

“효율적인 1인 개발을 위한 DB 설계: 한 지붕 아래 여러 서비스가 사는 법


1. 인프라의 마지막 숙제: RAM의 역습

1편에서 헤츠너(Hetzner)라는 가성비 좋은 땅을 확보했고,
2편에서 쿨리파이(Coolify)라는 자동 시공사를 세웠습니다.

이제 제 실험실은 코드를 푸시할 때마다 컨테이너를 척척 만들어냅니다.
그런데 서비스가 하나둘 늘어날수록, 자꾸만 서버의 냉장고 용량,
RAM을 들여다보게 되더군요.

📊 4GB RAM의 현실

  • Coolify 자체 엔진: 약 1GB
  • 메인 페이지 백엔드 앱: 약 300MB
  • 그리고 가장 큰 변수, DB(Database)

저는 통계 분석용으로 Umami,
메인 페이지 관리를 위한 Admin 페이지를 운영하고 있었습니다.
문제는 둘 다 PostgreSQL을 필요로 했다는 점이었죠.

처음엔 단순하게 생각했습니다.

“서비스가 두 개니까 PostgreSQL도 두 개 띄우면 되겠지?”

하지만 DB 컨테이너를 두 개 띄우는 순간,
4GB RAM의 절반 가까이가 사라지는 걸 보고 바로 깨달았습니다.

‘DB 컨테이너 1개 = 서비스 1개’
이 공식은 저 같은 1인 개발자에게는 너무 비싼 선택이었습니다.

제가 원하는 건 딱 하나였습니다.

“가장 적은 자원으로, 가장 많은 실험을 돌리는 것.”

2. 깨달음의 순간: 하나의 아파트, 여러 개의 방

해결책은 의외로 단순했습니다.

DB 컨테이너는 하나만 두고,
그 안에 논리적인 ‘방(Database)’을 여러 개 만들자.

💡
“PostgreSQL 서버는 하나만 실행하고,
그 안에 Umami용 DB와 서비스용 DB를 따로 만들면 되잖아?”

Coolify에서 하나의 DB를 사용하는 다양한 서비스 세팅
  • shared-db(Postgres:17) → 하나의 아파트 건물
  • umami_db → 101호
  • asasyl_db → 201호

이 구조의 장점

  • 효율성: DB 엔진이 하나만 돌아가니 메모리 사용량 최소화
  • 격리성: 101호에서 무슨 일이 벌어져도 201호에는 영향 없음
  • 관리 편의성: 백업·복구 대상이 명확해짐

⚡ 실수에서 얻은 교훈: DB를 통째로 날려먹다

사실 이 구조에 도달하기 전, 큰 실수를 한 번 했습니다.

덕지덕지 생긴 DB를 지우려다가 쿨리파이 DB를
통째로 삭제 + 리빌드해버린 겁니다…😅

쿨리파이는 날아갔지만, 대신 하나를 배웠습니다.

“인프라는 언제든 부술 수 있어야 한다.
대신, 구조는 더 단단해야 한다(눈물)”

그래서 다시 세울 때,
아예 처음부터 공용 DB 전략으로 방향을 고정했습니다.


3. 실전 전략: 공용 DB에 방 여러 개 만들기

1단계: Coolify에 공용 PostgreSQL 설치

쿨리파이에서 PostgreSQL을 딱 한 번만 설치합니다.
이름은 예를 들어 shared-db.

이 컨테이너는 쿨리파이 네트워크(coolify) 안에 안전하게 존재합니다.


2단계: SSH로 접속해서 DB 생성 (진짜 치트키)

웹 터미널로는 답답할 때가 많았습니다.
하지만 SSH로 서버에 접속하면, 모든 문제가 단번에 풀립니다.

# 서버에 SSH 접속 후, DB 컨테이너 안으로 진입
docker exec -it <shared-db_컨테이너_이름> psql -U postgres

# DB 생성
CREATE DATABASE umami_db;
CREATE DATABASE asasyl_db;

이 두 줄의 SQL이
RAM 낭비를 근본적으로 차단해줍니다.


3단계: 환경 변수로 각 서비스 연결하기

이제 각 서비스에게
“너는 몇 호에 살아”라고 알려주기만 하면 됩니다.

메인 페이지용 DB 환경변수 설정
서비스환경 변수 Key예시 Value
UmamiDATABASE_URLpostgres://.../umami_db
Admin / Main AppDATABASE_URLpostgres://.../asasyl_db

👉 핵심 포인트

  • Host / Port / User는 동일
  • 맨 뒤 DB 이름만 다름

4. 자동화와 효율성, 두 마리 토끼를 잡다

이 구조 덕분에,
제가 꿈꾸던 가볍고 유연한 클라우드 실험실이 완성됐습니다.

✔ 자원 효율

  • 메모리 사용량이 눈에 띄게 감소
  • 동일 서버에서 10~15개 서비스 실험 가능

✔ 코드의 단순화

  • 모든 앱은 DATABASE_URL만 바라봄
  • DB 이전 시에도 코드 수정 없이 환경 변수만 변경

✔ 확장성

  • 새 서비스가 필요하다면?
    • CREATE DATABASE ghost_db;
    • 환경 변수 연결

초보 연구원의 마지막 실험 기록

이번 실험을 통해 확실히 느꼈습니다.

배포 자동화보다 중요한 건,
보이지 않는 효율 — 데이터 구조다.

서버가 멈출까 전전긍긍하던 시기는 끝났습니다.
이제 월 6천 원짜리,
깨끗하고 단단하며 영리한 나만의 클라우드 실험실 위에서
마음껏 실험할 수 있게 되었습니다.

이제 남은 질문은 하나 뿐 입니다.

“이 인프라 위에서,
어떤 재미있는 서비스를 만들어낼 것인가?”

쿨리파이Coolify가 건네준 열쇠로,
여러분만의 창의성을 마음껏 열어보세요.


#Coolify #Hetzner #PostgreSQL #DB아키텍처 #1인개발 #셀프호스팅 #가성비클라우드 #인프라실험