Files
jongryangje/docs/기본 개발계획/12-technology-stack-rationale.md

83 lines
6.0 KiB
Markdown
Raw Normal View History

# 기술 스택 선정 이유 (회의용)
이 프로젝트의 기술 스택을 **CodeIgniter 4.7, PHP 8.4, MariaDB 11.7, Homebrew, Apache 2.4** 로 세팅한 이유를 회의에서 설명할 때 참고할 수 있도록 정리한 문서입니다.
**요약**: 위 항목은 모두 **최신이면서 안정(stable) 버전**으로 맞춰 두었다. 각 항목은 해당 라인(4.x, 8.x, 11.x, 2.4.x)에서 현재 제공되는 최신 안정 릴리스이다. 회의에서 “전부 최신 안정화 버전으로 설치했다”고 말해도 된다.
---
## 최신 안정화 버전 사용 시 장단점
### 장점
- **보안**: 최신 안정 버전은 알려진 보안 취약점에 대한 패치가 반영되어 있어, 공공·관공서 환경에서 유리하다.
- **성능·기능**: 해당 라인에서의 성능 개선·버그 수정·새 기능을 바로 활용할 수 있다.
- **지원 기간**: 구버전보다 보안·버그 수정 지원이 더 오래 이어질 가능성이 높다.
- **문서·커뮤니티**: 최신 버전 기준 문서·질문·해결책이 많아 문제 해결이 수월하다.
- **향후 유지보수**: 나중에 한 번에 대규모 업그레이드할 필요가 줄어든다.
### 단점
- **호환성**: 레거시 시스템·서드파티 라이브러리와의 호환 이슈가 가끔 생길 수 있다. (이 프로젝트는 새로 시작하므로 상대적으로 부담이 적음.)
- **변경 사항**: 최신 버전에서 동작 변경·deprecation이 있을 수 있어, 마이너 업데이트 시 릴리스 노트 확인이 필요하다.
- **운영 환경**: 실제 서버(지자체)가 구버전 PHP·DB·웹서버를 쓰는 경우, 배포 시 버전 맞춤이 필요할 수 있다.
**정리**: 이 프로젝트는 신규 개발이고 참조 프로젝트(auth)와의 이식만 고려하면 되므로, **최신 안정 버전 사용의 장점이 단점보다 크다**. 운영 서버 버전은 배포 전에 한 번 확인하는 것이 좋다.
---
## 1. CodeIgniter 4.7
- **참조 프로젝트(slow-auth-application)가 CodeIgniter 기반**이라, admin(메뉴·회원 관리) 구조·화면 흐름을 **이식하기 쉽다**. CI3 → CI4로 올리면서 코드를 그대로 복사하지 않고 **동작만 맞춰 가져오는** 방식으로 개발 계획을 세웠다.
- **경량·PHP 네이티브**라 학습 곡선이 낮고, 지자체 내부 서버에 설치하는 **응용프로그램형 배포**에 적합하다. 무겁지 않아 레거시 환경에서도 운영 부담이 적다.
- **PSR-4·네임스페이스·Filter·Validation** 등 현대 PHP 구조를 지원해, 유지보수와 테스트 작성이 수월하다.
- 4.7은 LTS에 가까운 안정 라인으로, 장기 유지보수·보안 패치를 기대할 수 있다.
---
## 2. PHP 8.4
- **CI4 공식 요구사항이 PHP 8.2 이상**이므로, 8.4는 요구사항을 만족하면서 **최신 안정 버전**을 쓰는 선택이다.
- PHP 8.x의 **타입·성능·JIT** 등 개선을 활용할 수 있고, 보안·버그 수정이 활발한 버전을 쓰기 위함이다.
- 프로젝트가 새로 시작하는 시점이므로, 레거시 호환보다 **현재 권장 버전**을 선택했다.
---
## 3. MariaDB 11.7
- **MySQL과 호환**되며, 기존 레거시·문서에서 MySQL/ MariaDB를 전제로 한 설명이 많아 **마이그레이션·DDL 재사용**이 쉽다. 참조용 auth DB DDL(member, member_log 등)도 그대로 활용할 수 있다.
- **PHP 8 + CI4**와의 호환성이 검증되어 있고, CI4 DB 드라이버(MySQLi/PDO)로 문제 없이 연동된다.
- 11.7은 **최신 안정(stable)** 라인으로, 성능·기능 면에서 충분하며, 지자체 서버에 설치형으로 올리기에도 무리가 없다.
- 오픈소스·라이선스 이슈가 없어 공공·관공서 환경에서도 선택하기 수월하다.
---
## 4. Homebrew
- **macOS 로컬 개발 환경**에서 패키지 설치·버전 관리가 쉽다. MariaDB, PHP(필요 시), Apache 등 **한 곳에서 의존성**을 관리할 수 있다.
- 팀원이 macOS를 쓰는 경우 **동일한 환경**을 `brew install` 수준으로 맞추기 좋고, 문서화(예: `07-local-db-setup.md`)도 단순해진다.
- 서버(운영) 환경과는 별개로, **로컬 개발용** 도구 체인을 Homebrew로 통일한 선택이다.
---
## 5. Apache 2.4
- **버전**: 2.4.x 라인이 현재 안정(stable) 브랜치이며, Homebrew 등에서 제공하는 최신 2.4를 사용하면 된다. (예: 2.4.62, 2.4.63 등 — 설치 시점의 `brew install httpd` 버전을 따른다.)
- **PHP와의 연동**이 오래되고 문서·자료가 많아, 지자체·관공서에서 이미 쓰는 **기존 인프라**와 맞추기 쉽다.
- **mod_rewrite**로 CI4 라우팅(index.php 제거, clean URL)을 적용하는 패턴이 널리 알려져 있어, 배포·설정이 단순하다.
- 운영 측에서 nginx 등 다른 웹 서버를 쓰는 경우, 나중에 **리버스 프록시 뒤에 PHP-FPM + Apache** 또는 **nginx + PHP-FPM**으로 바꿀 수 있도록, CI4는 프레임워크 단에서 웹 서버에 종속되지 않게 구성해 두면 된다. 현재는 **로컬/테스트 환경**을 Apache 기준으로 세팅한 것이다.
---
## 요약 (회의에서 한 줄씩)
| 항목 | 선정 이유 (한 줄) |
|------|-------------------|
| **CodeIgniter 4.7** | 참조 프로젝트(auth)가 CI 기반이라 이식이 쉽고, 경량·PHP 네이티브로 지자체 설치형에 적합함. |
| **PHP 8.4** | CI4 요구사항(PHP 8.2+) 충족 + 최신 안정 버전으로 성능·보안·유지보수 이점. |
| **MariaDB 11.7** | MySQL 호환·auth DDL 재사용 용이, PHP 8·CI4와 호환, 오픈소스로 공공 환경에 적합. |
| **Homebrew** | macOS 로컬 개발 시 패키지·환경 통일이 쉽고, 문서화·온보딩이 단순함. |
| **Apache 2.4** | 2.4.x 안정 라인. PHP 연동·mod_rewrite 패턴이 익숙하고, 기존 인프라·문서와 맞추기 좋음. 로컬/테스트 기준. |
이 문서는 회의에서 “왜 이 스택인가?”를 설명할 때 참고용으로 사용하면 됩니다.