콘텐츠로 이동

AI 검색

AI가 매뉴얼 전체에서 답변을 찾아드립니다.

Web 시스템 아키텍처

Headless CMS 백엔드 + SSR 프론트엔드 기반의 통합 관리자(Admin) 시스템 구조 및 보안 정책 수립


TO-BE 시스템 구성도

백엔드를 Headless CMS로 구성하여 Admin UI, 인증/인가, RESTful API, 배치 스케줄링 등 공통 기능을 CMS 프레임워크에서 제공받고, 비즈니스 로직은 커스텀 모듈로 구현합니다. 프론트엔드는 SSR 프레임워크로 분리하여 CDN 엣지에서 서빙합니다. 외부 시스템 연동은 API가 아닌 Excel 템플릿 자동 생성/파싱 방식으로 구현합니다 (현행 업무 방식과의 연속성 확보).

Headless CMS 아키텍처 패턴

기준Headless CMS 패턴Full Custom 개발
Admin UICMS 기본 제공 — 즉시 사용 가능Admin UI 전체 개발 필요
APIEntity 기반 CRUD API 자동 노출모든 API endpoint 수동 구현
인증/인가OAuth2 + Role/Permission 내장JWT + RBAC 직접 구현
감사 로그이벤트 시스템으로 자동 기록Interceptor/Middleware 직접 구현
배치 처리Queue API + Cron 스케줄러 내장별도 큐 시스템(BullMQ 등) 구성
유지보수보안 업데이트 자동 알림, 패키지 매니저의존성 수동 관리
개발 기간공통 기능 제공으로 비즈니스 로직에 집중인프라 코드부터 작성

구분권장 기술비고
SSR FrameworkAstro, Next.js 등CDN Edge 배포 가능한 SSR 프레임워크
Interactive UISvelte, React, Vue 등경량 컴포넌트 기반 UI 프레임워크
CSSTailwind CSS 등 유틸리티 CSS일관된 디자인 시스템
Build ToolVite빠른 빌드, HMR
구분권장 기술비고
CMS 플랫폼Headless CMS (Drupal, Strapi, WordPress 등)RESTful API 자동 노출, Admin UI 기본 제공
APIRESTful API (JSON:API 또는 REST)OpenAPI 문서화, CRUD 자동 생성
AuthenticationOAuth2 + JWT Bearer Token
비즈니스 로직CMS 커스텀 모듈 / 플러그인구독관리, PG Excel 정산, CMS권한, 배치 처리
배치 스케줄링CMS 내장 Cron + Queue 시스템Excel 템플릿 자동 생성, 정산 취합, CMS 권한 등
구분권장 기술비고
Primary DBMariaDB / MySQL (오픈소스)MSSQL에서 전환 — 라이선스 비용 제거
CacheRedis세션, 캐시 백엔드, 페이지 캐시
SearchCMS 내장 검색 또는 DB 백엔드15명 규모에 Elasticsearch 불필요
구분권장 기술비고
CMS ServerAWS LightsailManaged Instance, 고정 월 비용
Frontend HostingCDN Edge (Cloudflare Workers 등)SSR 배포, 글로벌 엣지
CDN / WAFCloudflare정적 자산 캐시, DDoS 방어, WAF
파일 스토리지Cloudflare R2 / AWS S3첨부파일, 이미지
CI/CDGitHub Actions자동 배포

좋은생각 비즈니스 로직을 CMS 커스텀 모듈로 구현합니다. 현행 MSSQL의 49개 DB 객체(SP 20개 + Function 14개 + Trigger 15개)를 애플리케이션 서비스 레이어로 전환합니다.

커스텀 모듈 설계

기존 MSSQL 테이블을 CMS Entity Type 또는 커스텀 테이블로 전환합니다.

현행 (MSSQL)TO-BE Entity / 테이블비고
PT_Customer (48컬럼)Customer고객 마스터
PT_SubscribeSubscription구독 정보
PTM_OrdersOrder주문 통합
PT_FinancePayment결제/입금
PT_Councel_HistoryCS Ticket상담 이력
PT_SendHistoryShipment배송 이력
PT_StockStock재고 관리
PT_Auth / PT_MENU_authorityCMS User Role + PermissionCMS 내장 권한 시스템 활용

CMS의 RESTful API 자동 노출 기능을 활용하여 CRUD는 자동 생성하고, 복잡한 비즈니스 로직만 커스텀 엔드포인트로 구현합니다.

# CRUD API (CMS 자동 생성)
GET /api/customers
GET /api/customers/{id}
POST /api/customers
PATCH /api/customers/{id}
DELETE /api/customers/{id}
GET /api/subscriptions?filter[customer_id]={id}
GET /api/orders?filter[channel]=NAVER&sort=-created
# 커스텀 API (비즈니스 로직)
POST /api/v1/subscriptions/{id}/activate # 구독 활성화 + CMS 권한 부여
POST /api/v1/excel/upload/orders # 외부몰 주문 Excel 업로드 파싱
POST /api/v1/excel/upload/invoices # 택배사 송장 Excel 업로드 파싱
GET /api/v1/excel/download/shipping # 택배사 양식 배송 Excel 다운로드 (?reason=&include_pii=bool)
GET /api/v1/excel/download/settlement # 나이스페이 정산 취합 Excel 다운로드
POST /api/v1/excel/upload/settlement # 나이스페이 정산 Excel 업로드
GET /api/v1/excel/download/erp # 위하고 ERP 양식 Excel 다운로드
POST /api/v1/excel/upload/inventory # 재고 Excel 업로드 파싱
GET /api/v1/excel/download/customers # 고객 목록 Excel 다운로드 (?reason=&include_pii=bool)
GET /api/v1/excel/download/subscriptions # 구독자 목록 Excel 다운로드 (?reason=&include_pii=bool)

1. 인증 (Authentication)

항목정책
인증 방식OAuth2 + JWT Bearer Token
토큰 만료Access: 1시간, Refresh: 7일
2FA관리자 계정 필수 (선택)
비밀번호8자 이상, 복잡도 규칙 적용

CMS 내장 Role + Permission 시스템을 활용하며, 개인정보 취급에 따른 필드 레벨 접근 통제를 적용합니다.

역할고객 기본정보개인정보 (연락처/주소/카드)결제/정산CS 이력구독 관리Excel 내보내기시스템 설정
최고관리자✅ (전체)
관리자✅ (전체)
CS담당자조회조회✅ (담당 범위)
운영담당자마스킹조회✅ (담당 범위)
외부콜센터조회마스킹등록만조회
필드 구분필드 예시최고관리자/관리자CS담당자운영담당자외부콜센터
기본정보이름, 고객번호원문원문원문원문
연락처전화번호, 이메일원문원문뒷4자리 마스킹뒷4자리 마스킹
주소배송 주소원문원문시/구까지만시/구까지만
결제정보카드번호, 계좌번호앞6+뒤4자리앞6+뒤4자리
민감정보주민등록번호❌ (수집 금지)
항목정책
전송 암호화HTTPS (TLS 1.3)
저장 암호화개인정보 필드 AES-256 암호화
접근 통제IP 화이트리스트 + Zero Trust (선택)
로그모든 접근/변경 기록 (감사 로그 모듈) — READ 포함 전수 로깅
WAFCloudflare WAF (OWASP Core Ruleset)

개인정보가 포함된 Excel 파일 추출 시, 자동 비밀번호 적용을 필수로 합니다.

항목정책
적용 대상개인정보 필드(연락처, 주소, 결제정보 등)가 1건 이상 포함된 Excel 다운로드
비밀번호 생성서버 측 랜덤 생성 (영문 대소문자 + 숫자 + 특수문자, 12자 이상)
비밀번호 전달다운로드 요청자에게 시스템 내 알림(팝업)으로 1회 표시, 별도 저장 불가
파일 암호화AES-128 이상 (xlsx 표준 암호화)
비밀번호 미포함 Excel개인정보 미포함 데이터(매출 집계, 상품 목록 등)는 비밀번호 없이 다운로드 허용
다운로드 사유 입력100건 초과 또는 개인정보 포함 시 사유 입력 필수
상위 승인100건 초과 개인정보 포함 Excel은 상위 관리자 승인 후 다운로드

Excel 파일 보안 정책

CMS 이벤트 시스템을 활용하여 모든 Entity CRUD 작업을 자동 기록합니다. 개인정보 접근(READ 포함)은 별도 플래그로 분류하며, Excel 추출은 전용 로그로 관리합니다.

-- 감사 로그 구조
audit_log (
id,
user_id,
action, -- CREATE, READ, UPDATE, DELETE
resource, -- 대상 테이블/기능
resource_id, -- 대상 레코드 ID
pii_flag, -- 개인정보 접근 여부 (BOOLEAN, DEFAULT FALSE)
pii_fields, -- 접근한 개인정보 필드 목록 (JSON, NULL 허용)
old_value, -- 변경 전 (JSON)
new_value, -- 변경 후 (JSON)
ip_address,
user_agent,
created_at
)

READ 로깅 정책: 개인정보 필드가 포함된 화면 조회 시 pii_flag = TRUE로 기록. 목록 조회(마스킹 상태)는 로깅 제외, 상세 조회(원문 노출) 시 필수 로깅.

4-2. Excel 추출 전용 로그 (excel_export_log)

섹션 제목: “4-2. Excel 추출 전용 로그 (excel_export_log)”
-- Excel 추출 감사 로그 구조
excel_export_log (
id,
user_id,
export_type, -- GENERAL, PII_INCLUDED
template_name, -- 사용된 서식 템플릿명
resource, -- 추출 대상 (예: customers, subscriptions)
record_count, -- 추출 건수
pii_included, -- 개인정보 포함 여부 (BOOLEAN)
pii_fields, -- 포함된 개인정보 필드 목록 (JSON)
password_applied, -- 비밀번호 적용 여부 (BOOLEAN)
reason, -- 추출 사유 (TEXT)
approved_by, -- 상위 승인자 ID (NULL 허용)
ip_address,
created_at
)
항목정책
보존 기간audit_log: 3년, excel_export_log: 5년
아카이빙1년 경과 시 Cold Storage 이관 (Lightsail Object Storage)
모니터링개인정보 대량 조회 (일 50건 초과) 시 관리자 알림
월간 리포트다운로드 현황, 개인정보 접근 통계, 이상 징후 자동 리포트

기준: AWS Lightsail (서울 리전) + Cloudflare, 2025년 4월 기준
시스템 규모: 내부 관리자 시스템, 동시접속 15~20명, SLA 99.5%
DB: MariaDB (MSSQL에서 전환 — 라이선스 비용 제거)
환경: Production + Staging 2환경 운영

항목수치근거
동시접속자15~20명내부 10명 + 외부 콜센터 4명 + 버퍼
DB 테이블151개고객관리 75t + 홈페이지 63t + CMS 13t
비즈니스 로직49개SP 20 + Function 14 + Trigger 15 → 애플리케이션 코드로 전환
월 구독 발송~50,000건월간 정기구독 잡지 발송
일 주문50~100건외부몰 연동 포함
월 API 호출~100만 건관리자 CRUD 추정 (외부 API 연동 없음, Excel 기반 외부 연동)

네트워크/보안 아키텍처

서비스스펙월 비용 (USD)비고
Lightsail Instance4GB RAM, 2vCPU, 80GB SSD$20Web Server + CMS 백엔드
Lightsail DB (MariaDB)2GB RAM, HA (Multi-AZ)$60자동 백업 7일, 자동 페일오버
Cloudflare WorkersSSR, Paid Plan~$5월 1,000만 요청 포함
Cloudflare R210GB 스토리지~$2이미지, 첨부파일
Cloudflare CDN + WAFPro Plan$20WAF, 고급 캐시, 이미지 최적화
RedisInstance 내 설치$0동일 인스턴스 (15명 규모에 충분)
Production 소계~$107
서비스스펙월 비용 (USD)비고
Lightsail Instance2GB RAM, 1vCPU, 60GB SSD$10최소 스펙
Lightsail DB (MariaDB)1GB RAM, Standard (Single-AZ)$15테스트용
Cloudflare WorkersStaging 배포$0Workers Paid 내 포함
Staging 소계~$25
서비스스펙월 비용 (USD)비고
Cloudflare (기본)DNS, SSL, 기본 CDN$0Free Plan (Pro Plan은 Production에 포함)
GitHub ActionsCI/CD$0Private 2,000분/월
도메인1개~$1연 $12 환산
공용 소계~$1
환경월 비용 (USD)월 비용 (KRW)비고
Production~$107~14만원Lightsail + Cloudflare Pro
Staging~$25~3만원Lightsail 최소 구성
공용~$1~0.1만원
합계~$133/월~18만원/월
구성MSSQL (RDS SE LI)MariaDB (Lightsail DB)절감액절감률
Production (HA)~$780/월~$60/월$720/월92%
Staging (Standard)~$266/월~$15/월$251/월94%
DB 합계~$1,046/월~$75/월$971/월93%

MSSQL 라이선스 비용이 DB 비용의 대부분을 차지. MariaDB(오픈소스) + Lightsail(고정비용) 조합으로 연간 ~$11,652 (~1,573만원) 절감.

전환 기간 이중 운영 비용 (6~8개월)

섹션 제목: “전환 기간 이중 운영 비용 (6~8개월)”

구축 기간 동안 기존 온프레미스 MSSQL신규 클라우드 인프라가 동시에 운영됩니다.

전환 기간 이중 운영 비용 (6~8개월)

구간기간기존 (온프레미스)신규 인프라월 합계비고
1단계: 개발1~3개월기존 유지비~$25 (Staging만)기존 + $25Staging에서 개발/테스트
2단계: 통합 테스트4~5개월기존 유지비~$133 (전체)기존 + $133Production 환경 추가
3단계: 이관/병행6~8개월기존 유지비~$133 (전체)기존 + $133데이터 이관 + 병행 운영
4단계: 전환 완료이후$0 (폐기)~$133$133온프레미스 폐기
시나리오기간누적 비용비고
최소 6개월
└ 1~3개월 (Staging)3개월$75$25/월 × 3
└ 4~6개월 (전체)3개월$399$133/월 × 3
소계6개월$474 (~64만원)
최대 8개월
└ 1~3개월 (Staging)3개월$75
└ 4~8개월 (전체)5개월$665$133/월 × 5
소계8개월$740 (~100만원)
방안예상 절감적용 조건
Staging 야간 중지 (Instance stop)~$5/월스케줄 기반 start/stop
Cloudflare Free Plan 유지$20/월WAF 미적용 시 (내부 시스템 특성 고려)
Lightsail 3개월/1년 예약1540%장기 약정 할인
구성월 비용연 비용비고
전체 On-Demand~$133 (~18만원)~$1,596 (~215만원)Prod + Staging + 공용
Lightsail 1년 예약~$93 (~13만원)~$1,116 (~151만원)권장 (~30% 할인)

전환 기간 포함 1차년도 총비용 (인프라만)

섹션 제목: “전환 기간 포함 1차년도 총비용 (인프라만)”
시나리오전환 기간운영 기간1차년도 합계비고
6개월 전환 + 6개월 운영 (On-Demand)$474$798$1,272 (~172만원)
8개월 전환 + 4개월 운영 (예약)$740$372$1,112 (~150만원)권장 산정 기준

참고: 위 비용에는 구축 비용(인건비)이 포함되지 않습니다. 구축 비용은 RFP 발주 지원 문서를 참조하세요.
환율: USD 1 = KRW 1,350 기준 (실제 결제 시 변동)


No화면설명상태
1대시보드핵심 지표 요약 (차트, 통계)
2고객 목록통합 고객 조회, 검색, 필터
3고객 상세고객 정보 + 구독/결제/CS 탭
4주문 목록다채널 주문 통합 조회
5주문 상세주문 처리 및 이력
6CS 목록문의 접수 및 처리
7설정시스템 설정

CMS Admin UI 활용: 위 화면 외에 데이터 관리, 사용자 관리, 권한 설정 등은 CMS 기본 제공 Admin UI를 활용하여 개발 공수를 절감합니다.


날짜작성자변경 내용
2026-03-18-초안 작성
2026-04-20김명직DB를 PostgreSQL로 확정 (MSSQL 전환), 기술 스택 확정, AWS 인프라 월간 비용 산정 추가
2026-04-23김명직아키텍처 전면 개편: Headless CMS + SSR 프론트엔드 + Managed Cloud 패턴 적용. DB: MariaDB (오픈소스, Lightsail DB 호환). 인프라: AWS Lightsail + Cloudflare.
2026-04-23김명직외부 연동 현실성 반영: 외부 API → Excel 템플릿 기반 연동 전환, 커스텀 API에 Excel upload/download 7개 추가
2026-04-23김명직인가(Authorization) 강화: 역할별 접근 권한 매트릭스 신설 (7개 기능 영역 × 5개 역할), 개인정보 필드 레벨 접근 통제 테이블 신설
2026-04-23김명직개인정보 보호 모듈 강화: Excel 파일 보안 정책 (개인정보 포함 시 자동 비밀번호 AES-128), 감사 로그 스키마 확장 (pii_flag, excel_export_log), API 엔드포인트 보안 파라미터 추가 (include_pii, reason), 고객/구독자 Excel 다운로드 엔드포인트 2개 추가