# 관리형 애드온: Postgres 및 Redis

Source: https://support.kapsulehost.com/ko-kr/site-addons

Addons 탭을 사용하면 사이트를 위한 서버를 직접 구축하거나 유지 관리할 필요 없이 관리되는 PostgreSQL 데이터베이스나 관리되는 Redis 인스턴스를 사이트에 연결할 수 있습니다. KapsuleHost가 이를 프로비저닝하고, 연결 문자열을 제공하며, 제거할 때 깔끔하게 정리합니다.

## Addons는 어디에 있는가

**웹사이트**를 열고, 사이트를 클릭한 다음, 사이트의 왼쪽 메뉴에서 **앱** 그룹을 열고 **애드온**를 선택합니다. 페이지 제목은 **관리되는 애드온**입니다.

카탈로그에는 두 가지 옵션이 있습니다:

| 애드온 | 일반적인 용도 |
|---|---|
| PostgreSQL | MySQL을 사용하지 않는 애플리케이션을 위한 주요 데이터 저장소 |
| Redis | 캐싱, 세션 저장, 백그라운드 작업 큐 |

이들은 표준 호스팅 사이트와 함께 제공되는 MySQL 데이터베이스와는 별개입니다. 그 데이터베이스는 **데이터베이스** 탭에 있으며 별도의 프로비저닝이 필요 없습니다. [SSH 터널을 통한 데이터베이스 연결](https://support.kapsulehost.com/ko-kr/database-ssh-tunnel)을 참고하세요.

![KPanel에서 사이트의 관리되는 애드온 페이지](https://support.kapsulehost.com/help/screenshots/site-addons.3f3b5ee3.webp)

## 애드온 요청하기

1. **관리되는 데이터베이스 추가** 섹션에서 애드온을 찾습니다.
2. **사이트에 추가**를 클릭합니다.

요청은 즉시 기록되며, 애드온이 **자신의 애드온**에 **PENDING** 배지와 *프로비저너 대기 중*이라는 메모와 함께 나타납니다. 페이지는 15초마다 자동으로 새로고침되므로 열어둔 채로 기다려도 됩니다.

백그라운드 작업이 몇 분마다 대기 중인 요청을 가져와 사이트 전용 데이터베이스와 사이트 전용 사용자를 생성하고, 암호화된 연결 문자열을 다시 기록합니다. 이후 상태는 **ACTIVE**로 바뀝니다.

> **Note:** 애드온을 요청하거나 제거하려면 **sites:write** 권한이 필요합니다. 읽기 전용 팀원은 어떤 애드온이 존재하는지와 그 상태를 볼 수 있지만, 버튼은 숨겨져 있습니다.

### 사이트당 각각 하나씩

하나의 사이트는 PostgreSQL 애드온 하나와 Redis 애드온 하나를 가질 수 있습니다. 같은 유형을 두 번째로 요청하면 이미 프로비저닝되어 있다는 메시지로 거부되며, 카탈로그는 설치가 끝난 옵션을 숨깁니다. 두 가지가 모두 설치되면 카탈로그 섹션에는 **설치 가능한 모든 애드온이 설치되었습니다**라고 표시됩니다.

## 상태 읽기

| 상태 | 의미 |
|---|---|
| PENDING | 요청됨, 프로비저너 대기열에 있음 |
| PROVISIONING | 현재 생성 중 |
| ACTIVE | 사용 준비 완료 |
| FAILED | 프로비저닝이 완료되지 않음, 이유가 해당 행에 표시됨 |
| DELETED | 제거됨, 더 이상 목록에 표시되지 않음 |

**FAILED** 행은 일반적인 메시지 대신 실제 오류 텍스트를 바로 아래에 표시합니다. 그 이유로 직접 조치할 수 없다면, 지원 티켓에 그 내용을 그대로 인용하세요. [지원 티켓 열기](https://support.kapsulehost.com/ko-kr/opening-a-support-ticket)를 참고하세요.

## 연결 문자열 가져오기

애드온이 **ACTIVE** 상태가 되면, 해당 행에는 비밀번호가 점으로 가려진 마스킹된 연결 문자열이 표시되므로, 자격 증명을 노출하지 않고도 호스트와 데이터베이스 이름을 한눈에 확인할 수 있습니다.

**연결 복사**를 클릭하면 전체 연결 문자열이 클립보드에 복사됩니다. 이 문자열은 해당 요청 한 건에 대해서만 서버 측에서 복호화되며 페이지에는 결코 출력되지 않으므로, 화면 공유나 스크린샷으로는 유출되지 않습니다. 문자열을 드러낼 때마다 사이트의 감사 기록에 기록되며 [사이트 활동 로그](https://support.kapsulehost.com/ko-kr/site-activity-log)에서 확인할 수 있습니다.

이 문자열은 각 엔진에서 사용하는 일반적인 URL 형식으로 되어 있으며, 이 사이트를 위해 생성된 호스트, 포트, 사용자, 비밀번호, 데이터베이스 이름을 담고 있습니다.

## 애플리케이션에서 사용하기

연결 문자열을 애플리케이션이 설정을 읽어오는 위치에 붙여 넣으세요. Node.js 사이트의 경우, 적절한 위치는 **production** 환경의 `DATABASE_URL` 또는 `REDIS_URL`과 같은 키 아래의 [Secrets](https://support.kapsulehost.com/ko-kr/site-secrets) 탭입니다.

> **Warning:** 커밋하는 파일에 연결 문자열을 하드코딩하지 마세요. 이 문자열에는 실제 작동하는 비밀번호가 포함되어 있습니다. git 원격 저장소에 올라가면 유출된 것으로 간주해야 하며, 패널에서는 자격 증명을 그 자리에서 교체할 수 없으므로 유일한 실질적 해결책은 애드온을 삭제하고 새로 요청하는 것입니다.

## 애드온 제거하기

해당 행에서 **Delete**를 클릭합니다. KPanel은 확인을 요구하며 무슨 일이 일어나는지 명확히 알립니다: 관리되는 데이터베이스가 제거되며, 데이터는 복구할 수 없습니다.

해당 행은 즉시 삭제된 것으로 표시되며, 프로비저너가 다음 실행 때 기본 데이터베이스와 사용자를 정리합니다. 이 정리 과정의 일부로 기존 연결은 종료됩니다.

> **Important:** 관리되는 애드온을 삭제할 때 백업은 생성되지 않으며, 되돌릴 방법도 없습니다. 보관하고 싶은 데이터가 있다면 애드온이 아직 활성 상태이고 연결 문자열이 여전히 작동할 때 `pg_dump` 또는 `redis-cli --rdb`로 먼저 덤프해 두세요.

## 옵션 중에서 선택하기

**PostgreSQL을 사용하세요**: 애플리케이션이 관계형 데이터베이스가 필요하고 Postgres에 맞춰 작성된 경우입니다. 강력한 제약 조건, 트랜잭션, JSON 컬럼, 그리고 따로 추가해야 했을 전체 텍스트 검색 기능을 갖추고 있습니다.

**Redis를 사용하세요**: 사라져도 괜찮은 데이터를 위해 사용합니다. 캐시된 조각, 요청 제한 카운터, 세션 저장, 작업 큐 등입니다. 빠르지만 휘발성이 있는 저장소로 취급하고, 정식 기록 시스템으로는 사용하지 마세요.

**내장된 MySQL 데이터베이스를 사용하세요**: WordPress와 이미 MySQL용으로 작성된 모든 것을 위해 사용합니다. WordPress 사이트에 Postgres 애드온을 추가해도 아무 소용이 없는데, WordPress는 이와 통신할 수 없기 때문입니다.

## 문제 해결

**애드온이 오랫동안 PENDING 상태입니다.** 프로비저너는 즉시가 아니라 일정에 따라 실행됩니다. 페이지는 자동으로 새로고침되므로 열어둔 채로 나중에 다시 확인해 보세요. 몇 번의 실행 후에도 변화가 없다면, 사이트 도메인과 애드온 유형을 포함해 지원 티켓을 열어 주세요.

**프로비저닝에 FAILED가 발생했습니다.** 해당 행의 오류를 읽어 보세요. 실패한 애드온을 삭제하고 다시 요청하면 안전합니다. 실패한 행에는 작동 중인 데이터베이스가 전혀 없었기 때문입니다.

**연결 복사를 클릭해도 아무 일도 일어나지 않습니다.** 일부 브라우저는 탭이 포커스되어 있지 않을 때 클립보드 쓰기를 차단합니다. 먼저 페이지를 클릭한 다음, 버튼을 다시 클릭해 보세요.

**애플리케이션이 연결할 수 없습니다.** 다음 세 가지를 순서대로 확인하세요: 애드온 상태가 **ACTIVE**인지, 문자열을 다시 입력하지 않고 복사해서 사용했는지, 그리고 애플리케이션이 이전 배포에서 남은 오래된 값이 아니라 실제로 설정한 값을 읽고 있는지입니다. 새 설정이 적용되려면 보통 재시작이 필요합니다.

**재배포 후 연결이 거부됩니다.** 설정에 있는 연결 문자열이 이 페이지에 있는 것과 여전히 일치하는지 확인하세요. 애드온을 삭제하고 다시 요청하면 새로운 사용자와 새로운 비밀번호가 생성되므로, 이전 문자열은 더 이상 작동하지 않습니다.

## 다음으로 가 볼 곳

- [사이트를 위한 앱 비밀 정보 저장하기](https://support.kapsulehost.com/ko-kr/site-secrets), 연결 문자열을 보관해야 할 올바른 위치입니다.
- 내장된 MySQL 데이터베이스를 위한 [SSH 터널을 통한 데이터베이스 연결](https://support.kapsulehost.com/ko-kr/database-ssh-tunnel)입니다.
- 나머지 사이트 수준 설정을 위한 [사이트 설정](https://support.kapsulehost.com/ko-kr/site-settings)입니다.
