docs: add project docs and test updates
This commit is contained in:
88
docs/기본 개발계획/15-naver-cloud-deployment-outline.md
Normal file
88
docs/기본 개발계획/15-naver-cloud-deployment-outline.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# 네이버 클라우드 서버 사용 시 구성 개요
|
||||
|
||||
실제 서비스 서버는 아직 미정이나, 회의에서 **클라우드(네이버 클라우드) 사용** 방향으로 논의했다는 전제로, 그때 **실제 어떤 식으로 구성하면 되는지** 정리한 문서입니다. (구체 제품·요금은 NCP 정책에 따라 확인 필요.)
|
||||
|
||||
---
|
||||
|
||||
## 1. 전체 구성 개요
|
||||
|
||||
애플리케이션 스택이 **CI4 + PHP 8.4 + MariaDB 11.7 + Apache 2.4** 이므로, 네이버 클라우드에서 아래처럼 나누어 두는 구성을 가정할 수 있습니다.
|
||||
|
||||
```
|
||||
[인터넷]
|
||||
│
|
||||
▼
|
||||
[로드밸런서] ← 선택. 단일 서버면 생략 가능
|
||||
│
|
||||
▼
|
||||
[웹·앱 서버] ← PHP + Apache + CI4 (소스 배포)
|
||||
│
|
||||
▼
|
||||
[DB 서버] ← MariaDB (NCP Managed DB 또는 별도 Server에 설치)
|
||||
```
|
||||
|
||||
- **웹·앱 서버**: PHP 8.4, Apache 2.4, CI4 프로젝트 배포. 세션·파일 업로드는 이 서버(또는 공유 스토리지)에 둠.
|
||||
- **DB 서버**: MariaDB 11.x. 네이버 클라우드 **DB for MySQL** (MariaDB 호환) 사용 시 관리·백업이 편함. 또는 **Server** 한 대에 MariaDB를 직접 설치해 운영할 수도 있음.
|
||||
- **로드밸런서**: 트래픽이 많거나 장애 대비로 웹 서버를 2대 이상 둘 때 사용. 초기에는 1대만 둔다면 생략 가능.
|
||||
|
||||
---
|
||||
|
||||
## 2. 네이버 클라우드(NCP)에서 쓸 수 있는 리소스
|
||||
|
||||
| 용도 | NCP 제품 예시 | 비고 |
|
||||
|------|----------------|------|
|
||||
| 웹·앱 서버 | **Server** (VPC, Linux) | Ubuntu/CentOS 등에 PHP 8.4, Apache 2.4 설치. CI4 소스 배포. |
|
||||
| DB | **DB for MySQL** (MariaDB 호환) 또는 **Server** 1대에 MariaDB 설치 | Managed DB면 패치·백업 자동화. 직접 설치면 비용·제어 유연. |
|
||||
| 로드밸런서 | **Load Balancer** | 웹 서버 다중화 시 사용. |
|
||||
| 스토리지 | **Object Storage** 또는 서버 내 디스크 | 첨부파일·로그 등. CI4 `writable/` 경로는 서버 로컬 또는 공유 볼륨. |
|
||||
| SSL/도메인 | **Certificate Manager** 또는 Let's Encrypt | HTTPS 적용 시. |
|
||||
| 백업 | **Server** 스냅샷, **DB for MySQL** 자동 백업 | 정책에 따라 보관 기간·복구 절차 정의. |
|
||||
|
||||
실제 제품명·요금은 [네이버 클라우드 플랫폼](https://www.ncloud.com/) 문서를 참고하면 됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 3. 서버 1대 구성 예시 (최소 구성)
|
||||
|
||||
초기에 **웹 1대 + DB 1대** 또는 **웹+DB 한 대**로 시작할 때 예시입니다.
|
||||
|
||||
**옵션 A: 웹 서버 1대 + DB for MySQL(MariaDB) 1대**
|
||||
- **Server** 1대: OS(Ubuntu 22.04 등) + Apache 2.4 + PHP 8.4 + CI4 배포.
|
||||
- **DB for MySQL**: MariaDB 호환 엔진 선택, 전용 VPC/Subnet에서 웹 서버만 접속 허용.
|
||||
- CI4 `.env`: `database.hostname` 을 DB for MySQL 엔드포인트로 설정.
|
||||
|
||||
**옵션 B: 웹+DB 한 대 (소규모)**
|
||||
- **Server** 1대: Apache + PHP + CI4 + MariaDB 모두 설치.
|
||||
- 구성이 단순하고 비용 최소. 트래픽·데이터가 적을 때 적합. 백업·스냅샷으로 복구 대비.
|
||||
|
||||
공통으로 필요한 것:
|
||||
- **PHP 8.4**, **Apache 2.4**, **MariaDB 11.x** — 로컬 개발과 동일 버전 권장.
|
||||
- **CI4** `env` 를 `production` 으로, `baseURL`, `database.*`, `session.*` 등 운영값으로 설정.
|
||||
- **디렉터리 권한**: `writable/` 쓰기 가능, `app/Config/` 등은 읽기만.
|
||||
- **방화벽**: 80/443만 개방, 22(SSH)는 지정 IP만. DB 포트(3306)는 웹 서버에서만 접근 가능하도록.
|
||||
|
||||
---
|
||||
|
||||
## 4. 지자체별 “내부 서버 vs 클라우드” 공존
|
||||
|
||||
06 개발계획·25.11.24 메모에 따르면:
|
||||
- **지자체 내부 서버 설치형**을 우선 고려하면서,
|
||||
- **외부 서버/클라우드형**도 지원하는 **유연한 구조**가 영업상 유리하다는 의견이 있었습니다.
|
||||
|
||||
따라서 실제 구성은 다음처럼 나뉠 수 있습니다.
|
||||
|
||||
| 고객/지자체 | 구성 |
|
||||
|-------------|------|
|
||||
| **클라우드 사용** (우리 쪽 또는 지자체 NCP) | NCP Server + DB for MySQL(또는 Server에 MariaDB) 위에 CI4 배포. 위 2~3절 참고. |
|
||||
| **지자체 내부 서버** | 지자체가 제공한 물리/가상 서버에 Apache + PHP + MariaDB 직접 설치 후 동일 CI4 소스 배포. |
|
||||
|
||||
애플리케이션(CI4)은 **웹 서버 + DB 주소만 설정**하면 되므로, “실물 서버”이든 “네이버 클라우드”이든 **동일 소스로 배포**할 수 있게 두는 것이 좋습니다.
|
||||
즉, **실제 어떤 식으로 구성해야 하냐**는 “네이버 클라우드를 쓸 때”는 위와 같이 하고, “지자체 내부 서버를 쓸 때”는 그 서버에 맞춰 PHP/Apache/MariaDB만 설치해 같은 방식으로 구성하면 됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 5. 정리
|
||||
|
||||
- **네이버 클라우드 사용 시**: 웹·앱은 **Server**에 PHP + Apache + CI4, DB는 **DB for MySQL(MariaDB)** 또는 Server 한 대에 MariaDB 설치. 필요 시 로드밸런서·Object Storage·SSL 추가.
|
||||
- **실제 서비스 서버가 아직 미정**이므로, 위 구성을 “클라우드 선택 시 참고용”으로 두고, 확정되면 **도메인·SSL·백업·모니터링**까지 구체 계획을 잡으면 됩니다.
|
||||
- 지자체별로 **내부 서버 / 클라우드**가 다를 수 있으므로, **동일 소스·환경 변수만 바꾸어 배포**할 수 있게 유지하는 것이 좋습니다.
|
||||
Reference in New Issue
Block a user