N-ToPs Total of Procurement System · www.ntops.co.kr Architecture Atlas 5-Layer Stack · Spring Boot 2.7 · Java 21 · MyBatis · MySQL 8 CORE STACK Spring Boot 2.7 Java 21 MyBatis MySQL 8 Tomcat 9 JSP + Tiles Kendo UI 📦 PROJECT STRUCTURE com.ncsys.project common/ 공통 인프라 config/ SecurityConfig · PasswordConfig DBConfig · TilesConfig · QuartzConfig com/ SessionScope · CustomAuthProvider module/ CommonModule (채번) · MailModule util/ JwtUtil · RsaUtil · RecaptchaUtil exception/ ExceptionCode · HandlerAdvice batch/ RfqEndBatch · EtRoundEndBatch work/ 15 도메인 모듈 pr/ Purchase Request 구매요청 rfq/ RFQ · Quotation 견적 tndr/ Tender · 입찰 입찰 ctr/ Contract · 서명 계약 po/ Purchase Order 발주 dlv/ Delivery · 입고 납품 iv/ Invoice · 세금계산서 정산 ptnr/ Partner · 등록 / ESG 협력사 mst/ Master · 사용자/품목 기준정보 evl/ Evaluation · 분기/연/ESG 평가 brd/ Board · 공지/Q&A/문서 게시판 app/ Approval · 워크플로 결재 sys/ 권한 · 메뉴 · 개인화 시스템 ai/ Claude API 연동 AI common/ DocComt · CmnFile 문서공통 📐 모듈 명명 규칙 • {Module}Controller • {Module}Service (interface) • {Module}ServiceImpl • {Module}Mapper + .xml • {Name}Vo (Lombok) 📁 리소스 경로 • Mapper XML: resources/mapper/{m}/*.xml • 뷰: views/{module}/*.jsp ⚡ 5-LAYER STACK Request flow ↓ · Response ↑ L1 Browser Client 🖥 Browser · Tiles + Kendo UI JSP + Apache Tiles 3.0.8 — mainLayout / popLayout / mobileLayout jQuery 3.6 + Kendo UI Grid / Combo · CKEditor · Chart.js SockJS 실시간 알림 · Firebase FCM 웹 푸시 ▸ 공통 JS 헬퍼 nTops_common/grid.js (cfn_ajax · cfn_initGrid · cfn_modal) ▸ FOUC 방지: body{opacity:0} → loaded 클래스 · 메뉴 프리로드 최적화 L2 Controller Request 🎯 Controller · Spring MVC @RequestMapping · JSON / Tiles 분기 · @ResponseBody (REST) ▸ 경로 규칙: /api/* (REST API) · /com/* (Tiles 뷰) ▸ 모듈별 {Module}Controller — pr / rfq / tndr / ctr / po / dlv / iv ... Spring Security Filter Chain · 인증/인가 인터셉터 적용 ▸ Swagger UI /ncs/swagger-ui/index.html · API 명세 자동화 L3 Service Business Service · AOP Transaction {Module}Service (interface) + {Module}ServiceImpl AOP 트랜잭션 자동 전파 · prefix 기반 (명시적 @Transactional 최소화) save*/insert*/update*/delete* → REQUIRED · timeout 120s get*/select* → readOnly (성능 최적화) Doc→Doc 파이프라인: rfqToNext(TNDR/ODR/CNTR) · tndrToNext(...) L4 Mapper Data 🗂 Mapper · MyBatis {Module}Mapper interface + resources/mapper/{m}/*.xml ▸ Mapper 스캔 경로: work.*.repository Stored Procedures SP_* 시리즈 — SP_B_RfqToNext / SP_B_TndrToNext / ... camelCase 자동 매핑 · log4jdbc SQL 로깅 #{} 파라미터 바인딩 강제 — SQL Injection 방어 L5 Database Persistence 🗄 Database · RoutingDataSource RoutingDataSource — DataSource 동적 라우팅 (ncs / ext) MySQL 8 · ncs (PRIMARY) ▸ N-ToPs 메인 스키마 · ncpkg_prd(bmt, dev) ▸ 113 tables · 11 modules ▸ Stored Procedures (SP_* 시리즈) Oracle · ext (SECONDARY) ▸ 외부 시스템 연동용 보조 DB ▸ ERP / 회계 시스템 인터페이스 ▸ 읽기 전용 트랜잭션 중심 ⚡ Connection Pool HikariCP · min 5 / max 10 connections · timeout 30s · Log4JDBC SQL 로깅 활성화 정량 모니터링 필요 🔐 SECURITY STACK 로그인 · 전송 · 저장 ⓵ BCrypt Lazy Migration 로그인 성공 시 평문→BCrypt 해시 자동 UPDATE (무중단) ⓶ RSA 전송 암호화 login.jsp 공개키 암호화 → 서버에서 복호화 ⓷ JWT 세션 SameSite Cookie · Interceptor 재검증 ⓸ Lucy XSS Filter 파라미터 자동 sanitize · Kendo htmlEncode ⓹ reCAPTCHA 로그인/가입 봇 방어 🔗 EXTERNAL INTEGRATION 외부 시스템 연동 🔥 Firebase FCM 웹 푸시 알림 · 모바일 토큰 🤖 Claude API AI 분석 · /api/ai/analyze 📧 SMTP Mail MailModule · JavaMail · port 25 📂 Oracle (ext) ERP/회계 연동 RoutingDataSource 🔌 SockJS /api/noti 웹소켓 실시간 채널 🌐 다국어 KO / EN / JP / CN 4개 언어 📋 Swagger UI /ncs/swagger-ui/ API 명세 📅 BATCH · SCHEDULER Spring Batch · Quartz ⏰ Quartz Scheduler Cron 기반 트리거 📦 Spring Batch Job · Step 단위 청크 처리 RfqEndBatch — 견적 마감 자동 처리 EtRoundEndBatch — 입찰 라운드 종료 Custom1/2Batch — 실적 집계 · 평가 EXIT HANDLER · GET DIAGNOSTICS 전환 🛠 COMMON FEATURES 교차 관심사 💬 문서댓글 DocComtPanel · docTypeCd 다형 연결 · 공개/비공개 📎 파일 첨부 DropZone · refKey1..5 다형 · 대용량 지원 🔔 알림 SockJS + FCM + NC_SS_TODO · 실시간 배지 🔢 채번 CommonModule.getSeqNo · fnc_docno() ⚠ 예외 ExceptionHandlerAdvice · 표준화 오류 코드 🌐 세션 SessionScope · SessionListener · 동시접속 추적 🎨 Tiles mainLayout · popLayout · mobileLayout 🚀 DEPLOYMENT PIPELINE Tomcat 9 WAR · context /ncs · port 7070 ① Git Checkout Source pull ② Gradle Build WAR 생성 ③ WAR Copy Tomcat webapps ④ Tomcat Restart restart-tomcat.bat ⑤ Health Check + 알림 발송 PROFILES local dev demo prd TOOLS Jenkins · Gradle Wrapper · Lombok · Log4j2 🎯 아키텍처 핵심 원칙 계층 분리: Controller-Service-Mapper-DB 책임 분리 · AOP 트랜잭션 자동화 (prefix 기반) SPA 유사 동작: iframe 기반 탭바 + Tiles 레이아웃 · 무중단 BCrypt Lazy Migration N-ToPs Architecture Atlas · NC System · Genesis Build · 2026.05 · r8

통합구매 시스템 기술 검증 — N-ToPs SaaS 아키텍처 한 장 정리

이 자료는 무엇인가? N-ToPs 통합구매 SaaS 플랫폼의 기술 구조를 한 장에 시각화한 자료입니다. 어떤 기술 스택으로 만들어졌고, 코드가 어떻게 조직되어 있으며, 보안과 외부 연동은 어떻게 구성되어 있는지를 한눈에 파악할 수 있습니다.

왜 기술 검증이 중요한가? 통합구매 시스템 도입은 한번 결정하면 수년간 사용해야 하는 중요한 의사결정입니다. 기능만 보고 도입하면 추후 확장성·보안·유지보수에서 큰 문제가 발생할 수 있습니다. 도입 전에 반드시 기술 본질을 검증해야 합니다. N-ToPs는 검증된 엔터프라이즈 기술 스택으로 구축되어 안정성과 확장성을 동시에 확보했습니다.

핵심 기술 스택: N-ToPs는 글로벌 표준 엔터프라이즈 기술인 Spring Boot 기반의 5단계 계층 구조로 설계되었습니다. Java 언어, MyBatis 데이터 매핑, MySQL 데이터베이스, Tomcat 웹 서버를 핵심 기반으로 사용합니다. 한국 기업 환경에서 가장 안정적으로 검증된 조합입니다.

보안 구조: 통합구매 시스템은 기업의 핵심 거래 정보를 다루므로 보안이 최우선입니다. N-ToPs는 인증·인가·암호화·감사·필터링·세션 관리의 다중 보안 계층으로 구성되어 있어 외부 공격과 내부 유출 모두를 방어합니다. 국내 데이터센터 운영으로 데이터 주권도 확보됩니다.

외부 연동: 기존 SAP·Oracle ERP, 전자세금계산서 시스템, SSO 인증 등 기업의 기존 시스템과 자연스럽게 연동됩니다. 도입 후 기존 업무 시스템과 단절되지 않고 통합 운영이 가능합니다.

누가 이 자료를 활용할 수 있나? 통합구매 시스템 도입을 검토하는 CIO·CTO·기술 책임자, 시스템 도입 전 기술 적합성을 평가하는 의사결정자, 그리고 IT 부서의 시스템 검토 담당자가 활용할 수 있는 자료입니다.

관련 자료: N-ToPs Atlas 시리즈는 통합구매 시스템을 한눈에 보는 다이어그램 시리즈입니다. 통합구매 전주기(Atlas-01), 11개 모듈 구조(Atlas-02), 데이터 모델(Atlas-03), 기술 아키텍처(Atlas-04 본 자료) 4편으로 구성됩니다. 더 자세한 정보는 N-ToPs Atlas 시리즈에서 확인하세요.

통합구매 SaaS · 구매관리 시스템 · 기술 아키텍처 · 엔터프라이즈 SaaS · 구매시스템 도입 · 보안 · 외부 연동 · NC System · 엔씨시스템