문서를 수정하려면 로그인이 필요합니다.

DocumentDB의 설치, 계정 생성과 보안, Next.js 연동 및 활용법

최근 수정 시각: 2025-09-04 15:10:31

DocumentDB 개요 및 기술적 특징

DocumentDB는 리눅스 재단이 관리하는 오픈소스 문서형 데이터베이스 프로젝트로, PostgreSQL을 기반으로 개발되고 있으며 MongoDB와의 호환성을 목표로 하고 있습니다[2][1][3][4].

프로젝트 개요

DocumentDB는 처음 마이크로소프트에서 2025년 초에 공개한 후, 리눅스 재단으로 이관되어 AWS와 구글 등 주요 클라우드 기업들도 공동 참여하는 오픈소스 프로젝트로 성장했습니다. 이 프로젝트의 목적은 클라우드와 AI 시대에 맞는 공급업체 중립적인(벤더 락인 해소) 문서형 DB 표준을 만들고, 유연한 JSON 기반 데이터 처리, AI·벡터 검색 등 최신 워크로드에 적합한 엔진을 제공하는 것입니다.

기술적 특징 및 호환성

DocumentDB의 가장 큰 특징은 PostgreSQL 생태계 위에 BSON(Binary JSON) 지원 확장을 얹은 구조라는 점입니다. 기존 PostgreSQL의 백업, 도구, 확장성은 그대로 이용할 수 있으면서도, NoSQL 방식의 문서 쿼리와 색인, 의미 기반 질의 등 다양한 최신 기능을 사용할 수 있습니다.

  • 특히 MongoDB와의 호환성을 최우선 개발 목표로 삼고 있으며,
    • MongoDB 드라이버 및 툴과의 호환 API(Gateway)를 별도로 구현 중입니다.
    • 사용자는 기존 MongoDB 앱/도구 대부분을 별도 변경 없이 DocumentDB에 적용할 수 있게 될 예정입니다.

계정 생성 및 보안

계정 생성

  • DocumentDB(PostgreSQL 기반)는 기본적으로 관리 사용자(root 또는 admin)를 생성하며, 추가 사용자는 DB 콘솔이나 db.createUser 명령을 통해 생성할 수 있습니다.
  • AWS 계정과 연동하는 경우, IAM(AWS Identity and Access Management) 역할을 활용하여 계정을 생성할 수 있습니다.
  • 예시: IAM 역할 기반 사용자 생성
use $external;
db.createUser({
  user: "arn:aws:iam::123456789012:role/teleport-docdb-user",
  mechanisms: ["MONGODB-AWS"],
  roles: [{ role: "root", db: "admin" }]
});
  • 일반 비밀번호를 사용하는 사용자도 생성할 수 있으며, 권한(role)는 최소 권한 원칙에 따라 부여해야 합니다[2][1].

보안 설정

  • 계정 및 비밀번호는 AWS Secrets Manager와 연계해 관리할 수 있으며, 기본적으로 7일마다 자동 교체 설정이 가능합니다.
  • 네트워크 단에서는 VPC 보안 그룹/서브넷을 통해 데이터베이스 접근을 제한합니다. 예를 들면, 인바운드 규칙에서 27017 포트만 특정 서비스로 열도록 설정합니다[5][6][7].
  • SSL을 통한 암호화 접속이 기본이며, 접속 인증서(CA 번들)를 적용해야 정상적으로 DocumentDB에 연결할 수 있습니다[5].
  • IAM 기반 접근은 MONGODB-AWS 인증 방식으로 추가 보안 계층을 적용할 수 있습니다[2].

DocumentDB 설치 및 확장 연동

PostgreSQL 설치

  • 리눅스에서 일반적으로
sudo apt update
sudo apt install postgresql

명령어로 설치 후, psql로 접속해 정상 동작 확인[6].

DocumentDB 확장 설치

  • 확장 소스코드 다운로드 및 빌드
git clone https://github.com/documentdb/documentdb-extension.git
cd documentdb-extension
make
sudo make install
  • PostgreSQL에서 확장을 활성화:
CREATE EXTENSION documentdb;
  • 설치 상태는 아래 명령으로 확인:
SELECT * FROM pg_extension;
-- 또는 \dx
  • 확장 삭제는 DROP EXTENSION documentdb; 적용[8].

Next.js 프로젝트 연동

MongoDB 호환 드라이버 설치

  • DocumentDB 사용을 위해 Next.js 13 이상 app 라우팅에서 mongodb 패키지를 사용
npm install mongodb

연결 예제 코드 (app 라우팅, ESlint 제외 없음)

  • /util/database.js
import { MongoClient } from 'mongodb';
const url = '문서DB 연결 URL'; // 예: 'mongodb://localhost:27017'
const options = { useNewUrlParser: true };

let connectDB;
if (process.env.NODE_ENV === 'development') {
  if (!global._mongo) {
    global._mongo = new MongoClient(url, options).connect();
  }
  connectDB = global._mongo;
} else {
  connectDB = new MongoClient(url, options).connect();
}
export { connectDB };
  • 페이지 예제
import { connectDB } from "@/util/database";

export default async function Page() {
  const db = (await connectDB).db("forum");
  const posts = await db.collection("post").find().toArray();
  return (
    <div>
      {posts.map(post => <div key={post._id}>{post.title}</div>)}
    </div>
  );
}
  • 실제 운영환경에서는 연결 URL·인증·Pool 관리 등을 적절히 구성 필요[9].

전체 요약

DocumentDB는 PostgreSQL 기반으로 리눅스 재단 관리 하에 오픈소스로 개발되고, IAM 역할 및 비밀번호 방식 모두 지원하며, AWS Secrets Manager 연동으로 보안성을 높일 수 있습니다. 실시간 데이터 변경 구독(Subscription)은 이벤트 알림은 지원하지만, MongoDB Change Streams 방식의 데이터 실시간 push 구독 기능은 아직 공식 구현 전입니다. 확장 설치부터 Next.js와 연동까지 MongoDB와 거의 동일한 방식으로 사용할 수 있어 기존 앱도 쉽게 마이그레이션이 가능합니다[1][2][3][4][5][6][7].


문서를 수정하려면 로그인이 필요합니다.