🚀 ATOM 프로젝트 시스템 아키텍처

SFN x WERASER 하이브리드 클라우드 구조

Last Updated: 2026-02-04 17:09 KST
🏢 SFN AWS VPC
APPLICATION LAYER
🌐
Web/App
🔌
API Gateway
DATA LAYER SFN 소유 ✓
🗄️
Master DB
🧠
Vector DB
📊
Log DB
SERVICE LAYER
📱
CRM/LMS
🎟️
Coupon API
🔐 VPN
Security
Bridge
API
Batch
🤖 WERASER AI Infra
AI ENGINE 미제공 ✗
🎯
Orchestrator
🧠
LLM/Prompt
* 유지보수 계약 필수
BATCH WORKERS
🕷️
Crawler
경쟁사 가격 수집
💰
Price Optimizer
쿠폰 금액 산정
✍️
Content Generator
LMS 콘텐츠 생성
📋 데이터 소유권 및 흐름 정리
SFN 소유
DB, Vector DB 파일
모든 고객 데이터 자산
미제공
AI 모델, 프롬프트
WERASER 독점 기술
실시간 API
추천 요청/응답
VPN 경유 보안 통신
배치 처리
일간 쿠폰 생성
스케줄 기반 동기화

🔄 상세 데이터 흐름도

Zone별 인프라 및 VPN 통신 구조

graph TB
    classDef headerA fill:#1565C0,stroke:#0D47A1,stroke-width:2px,color:#fff,font-weight:bold
    classDef headerB fill:#F57F17,stroke:#E65100,stroke-width:2px,color:#fff,font-weight:bold
    classDef headerC fill:#6A1B9A,stroke:#4A148C,stroke-width:2px,color:#fff,font-weight:bold
    classDef sfnNode fill:#1E3A5F,stroke:#2196F3,stroke-width:2px,color:#E3F2FD
    classDef vpnNode fill:#4A3800,stroke:#FFC107,stroke-width:3px,stroke-dasharray:5 5,color:#FFF8E1
    classDef aiNode fill:#4A1259,stroke:#9C27B0,stroke-width:2px,color:#F3E5F5
    classDef sfnDB fill:#1B5E20,stroke:#4CAF50,stroke-width:3px,color:#E8F5E9
    classDef batchNode fill:#5D4037,stroke:#FF9800,stroke-width:2px,color:#FFF3E0
    classDef awsService fill:#FF9900,stroke:#CC7A00,stroke-width:2px,color:#fff

    subgraph Wrapper_A [" "]
        direction TB
        Header_A["🔷 Zone A : SFN Internal Infrastructure"]:::headerA
        
        subgraph Zone_A_Content [" "]
            direction TB
            Client["📱 SFN App / Web
(고객 접점)"]:::sfnNode --> API_GW["🚪 API Gateway"]:::sfnNode API_GW --> Backend["⚙️ SFN Backend Server
(Kotlin/Spring Boot)"]:::sfnNode Backend <--> Legacy_DB[("🗄️ Legacy DB
(고객/주문/재고)")]:::sfnDB Backend --> NHN_Cloud["📨 NHN Cloud API
(LMS 발송)"]:::sfnNode SFN_VectorDB[("🧠 SFN Vector DB
(Main Storage)
- 메뉴 임베딩
- 식자재 매핑
- 고객 프로파일")]:::sfnDB Backend <--> SFN_VectorDB subgraph AWS_Batch ["📦 Batch Data Transfer"] direction LR S3_Bucket[("🪣 S3 Bucket
(데이터 파일 저장)")]:::awsService SQS_Queue["📬 SQS Queue
(이벤트 알림)"]:::awsService S3_Bucket -->|"파일 업로드 이벤트"| SQS_Queue end Backend -->|"주기적 업로드
(고객/주문 데이터)"| S3_Bucket end Header_A ~~~ Zone_A_Content end subgraph Wrapper_B [" "] direction TB Header_B["🔶 Zone B : Security Bridge"]:::headerB subgraph Zone_B_Content [" "] VPN((("🔐 Site-to-Site VPN
Encrypted Tunnel
(AWS ↔ WERASER)"))):::vpnNode end Header_B ~~~ Zone_B_Content end subgraph Wrapper_C [" "] direction TB Header_C["🔮 Zone C : WERASER AI Infrastructure"]:::headerC subgraph Zone_C_Content [" "] direction TB W_Gateway["🌐 AI Gateway
(API Endpoint)"]:::aiNode subgraph RealTime_Core ["⚡ Real-time Core Engine"] direction TB Orchestrator["🎭 Orchestrator
(AI 워크플로우 관리)"]:::aiNode Embedding["🔢 Embedding Model
(메뉴→벡터 변환)"]:::aiNode Scoring["📊 Scoring Engine
(마진/비중 기반)"]:::aiNode LLM_Ops["🤖 LLM Interface
(GPT/Claude/Gemini)"]:::aiNode Orchestrator --> Embedding Orchestrator --> Scoring Scoring --> LLM_Ops end subgraph Data_Collection ["🕷️ Data Collection System"] direction TB Crawler["🕷️ Data Crawler
(네이버플레이스/다이닝코드)
- 고객 메뉴 수집 (실시간)
- 경쟁사 가격 수집 (배치)"]:::batchNode end subgraph Batch_System ["🌙 Daily Batch System"] direction TB Data_Worker["📥 Data Worker
(SQS 이벤트 수신)
- S3 파일 다운로드
- 데이터 전처리/정제"]:::batchNode Batch_AI["⚙️ AI Batch Processor
(Target GP Optimization)
- 쿠폰 금액 산정
- 가격 비교 분석"]:::batchNode end Crawler --> Batch_AI Data_Worker -->|"전처리된 데이터"| Embedding Data_Worker --> Batch_AI W_Gateway --> Orchestrator W_Gateway -.->|"회원가입 트리거"| Crawler end Header_C ~~~ Zone_C_Content end Backend ====>|"API Request"| VPN VPN ====>|"Forwarded Request"| W_Gateway Embedding -.->|"🔍 Vector Search / Insert"| VPN Batch_AI -.->|"🎫 Batch Result (Discount Policy)"| VPN VPN -.->|"Read/Write Access"| SFN_VectorDB SQS_Queue ==>|"이벤트 발행"| VPN VPN ==>|"이벤트 전달"| Data_Worker Data_Worker -.->|"S3 파일 요청"| VPN VPN -.->|"파일 다운로드"| S3_Bucket style Wrapper_A fill:none,stroke:none style Wrapper_B fill:none,stroke:none style Wrapper_C fill:none,stroke:none style Zone_A_Content fill:#0D253F,stroke:#1565C0,stroke-width:2px style Zone_B_Content fill:#3E2723,stroke:#F57F17,stroke-width:2px,stroke-dasharray:5 5 style Zone_C_Content fill:#2D1B3D,stroke:#6A1B9A,stroke-width:2px style RealTime_Core fill:#3D1F4A,stroke:#9C27B0,stroke-width:1px,stroke-dasharray:3 3 style Data_Collection fill:#1E3A5F,stroke:#3B82F6,stroke-width:1px,stroke-dasharray:3 3 style Batch_System fill:#3E2723,stroke:#FF9800,stroke-width:1px,stroke-dasharray:3 3 style AWS_Batch fill:#1a1a2e,stroke:#FF9900,stroke-width:2px

📊 데이터 플로우 다이어그램

주요 비즈니스 시나리오별 데이터 흐름

신규 회원 가입 시 메뉴 데이터 수집

sequenceDiagram
    autonumber
    participant Customer as 👤 신규 고객
    participant App as 📱 SFN App
    participant Backend as ⚙️ SFN Backend
    participant VPN as 🔐 VPN Tunnel
    participant Gateway as 🌐 AI Gateway
    participant Crawler as 🕷️ Crawler
    participant Embedding as 🔢 Embedding
    participant VectorDB as 🧠 Vector DB

    rect rgba(59, 130, 246, 0.2)
        Note over Customer,App: Zone A - SFN
        Customer->>+App: 회원가입 요청 (상호명, 주소, 업종)
        App->>+Backend: 회원 정보 저장
        Backend-->>-App: 가입 완료 응답
        App-->>Customer: 가입 완료 (로딩 화면)
    end

    rect rgba(245, 158, 11, 0.2)
        Note over Backend,VPN: Zone B - Security Bridge
        Backend-)+VPN: 비동기 데이터 수집 요청
        VPN->>Gateway: 요청 전달 (암호화)
    end

    rect rgba(168, 85, 247, 0.2)
        Note over Gateway,Embedding: Zone C - WERASER AI
        Gateway->>+Crawler: 크롤링 시작
        
        par 병렬 데이터 수집
            Crawler->>Crawler: 🥇 네이버 플레이스
        and
            Crawler->>Crawler: 🥈 다이닝코드
        and
            Crawler->>Crawler: 🥉 메뉴판 OCR
        end
        
        Crawler-->>-Gateway: 메뉴 데이터 수집 완료
        Gateway->>+Embedding: 메뉴명 벡터 변환
        Note right of Embedding: "허니 갈릭" → [0.23, 0.87, ...]
        Embedding-->>-Gateway: 벡터 데이터 생성 완료
    end

    rect rgba(245, 158, 11, 0.2)
        Note over Gateway,VPN: Zone B - Security Bridge
        Gateway->>VPN: 벡터 데이터 전송
    end

    rect rgba(59, 130, 246, 0.2)
        Note over VPN,VectorDB: Zone A - SFN (데이터 저장)
        VPN->>+VectorDB: INSERT 벡터 데이터
        VectorDB-->>-VPN: 저장 완료
        VPN-->>Backend: 수집 완료 알림
        Backend->>App: 맞춤 데이터 준비 완료
        App->>Customer: 🎉 맞춤형 Landing Page 노출
    end

    Note over Customer,VectorDB: ⏱️ 전체 소요시간: 1분 이내 (SLA)
                        

실시간 식자재 추천 요청

sequenceDiagram
    autonumber
    participant Customer as 👤 고객
    participant App as 📱 SFN App
    participant Backend as ⚙️ SFN Backend
    participant VPN as 🔐 VPN
    participant Gateway as 🌐 AI Gateway
    participant Orch as 🎭 Orchestrator
    participant Embed as 🔢 Embedding
    participant VectorDB as 🧠 Vector DB
    participant Score as 📊 Scoring
    participant LLM as 🤖 LLM

    rect rgba(59, 130, 246, 0.2)
        Note over Customer,Backend: Zone A - 고객 요청
        Customer->>App: "돼지고기" 검색 🔍
        App->>Backend: 추천 API 호출
    end

    rect rgba(245, 158, 11, 0.2)
        Backend->>VPN: 추천 요청 전달
        VPN->>Gateway: 암호화 터널
    end

    rect rgba(168, 85, 247, 0.2)
        Note over Gateway,LLM: Zone C - AI 추론 처리
        Gateway->>Orch: 추천 워크플로우 시작
        Orch->>+Embed: 검색어 벡터화
        Note right of Embed: "돼지고기" → [0.45, 0.12, ...]
        Embed-->>-Orch: 검색 벡터 반환
    end

    rect rgba(245, 158, 11, 0.2)
        Orch->>VPN: 유사도 검색 요청
    end

    rect rgba(59, 130, 246, 0.2)
        Note over VPN,VectorDB: Zone A - Vector Search
        VPN->>+VectorDB: Similarity Search (cosine)
        Note right of VectorDB: Top-K: 삼겹살(0.92), 목살(0.89)
        VectorDB-->>-VPN: 후보 식자재 목록 반환
    end

    rect rgba(245, 158, 11, 0.2)
        VPN-->>Orch: 후보 목록 전달
    end

    rect rgba(168, 85, 247, 0.2)
        Note over Orch,LLM: Zone C - 스코어링 & 추천
        Orch->>+Score: 스코어링 요청
        Note right of Score: 마진율/사용비중 가중치 적용
        Score-->>-Orch: 정렬된 추천 목록
        Orch->>+LLM: 추천 문구 생성 요청
        LLM-->>-Orch: "고객님께 딱 맞는 국내산 삼겹살!"
        Orch->>Gateway: 최종 응답 조합
    end

    rect rgba(245, 158, 11, 0.2)
        Gateway->>VPN: 추천 결과 전송
        VPN->>Backend: 응답 전달
    end

    rect rgba(59, 130, 246, 0.2)
        Backend->>App: 추천 상품 목록 + 문구
        App->>Customer: 🛒 맞춤 추천 상품 노출
    end
                        

일별 배치 - 쿠폰 정책 생성

sequenceDiagram
    autonumber
    participant Scheduler as ⏰ Scheduler
    participant Crawler as 🕷️ Crawler
    participant Batch as ⚙️ Batch Processor
    participant VPN as 🔐 VPN
    participant VectorDB as 🧠 Vector DB
    participant Backend as ⚙️ SFN Backend
    participant CouponAPI as 🎫 Coupon API
    participant NHN as 📨 NHN Cloud
    participant Customer as 👤 고객

    rect rgba(168, 85, 247, 0.2)
        Note over Scheduler,Batch: Zone C - WERASER (새벽 02:00)
        Scheduler->>Crawler: 🌙 배치 트리거 (Daily)
        
        par 경쟁사 가격 수집
            Crawler->>Crawler: 경쟁사 A 크롤링
        and
            Crawler->>Crawler: 경쟁사 B 크롤링
        and
            Crawler->>Crawler: 경쟁사 C 크롤링
        end
        
        Note right of Crawler: 멀티모달 OCR로 규격/원산지 추출
        Crawler->>Batch: 경쟁사 가격 데이터 전달
    end

    rect rgba(245, 158, 11, 0.2)
        Batch->>VPN: 전일 판매 데이터 요청
    end

    rect rgba(59, 130, 246, 0.2)
        VPN->>+VectorDB: 판매/마진 데이터 조회
        VectorDB-->>-VPN: 데이터 반환
    end

    rect rgba(245, 158, 11, 0.2)
        VPN-->>Batch: 데이터 전달
    end

    rect rgba(168, 85, 247, 0.2)
        Note over Batch,Batch: AI 최적화 연산
        Batch->>Batch: 📊 단위당 가격 비교 (10g/100g 정규화)
        Batch->>Batch: 🎯 Target GP Range 확인
        Batch->>Batch: 💰 정액 쿠폰 금액 산정
        Note right of Batch: 개별 마이너스 허용, 전체 믹스 마진 목표
    end

    rect rgba(245, 158, 11, 0.2)
        Batch->>VPN: 쿠폰 정책 데이터 전송
    end

    rect rgba(59, 130, 246, 0.2)
        Note over VPN,Customer: Zone A - SFN (쿠폰 발행)
        VPN->>+VectorDB: 쿠폰 정책 INSERT
        VectorDB-->>-VPN: 저장 완료
        VPN->>Backend: 쿠폰 발행 요청
        Backend->>+CouponAPI: 정액 쿠폰 생성 API
        Note right of CouponAPI: 일물일가 원칙 유지
        CouponAPI-->>-Backend: 쿠폰 발행 완료
        Backend->>+NHN: LMS 발송 요청
        NHN-->>-Backend: 발송 완료
        NHN->>Customer: 📱 "오늘의 특가 쿠폰 도착!"
    end

    Note over Scheduler,Customer: 🔄 매일 반복 (Daily Batch)
                        

추천 성과 추적 (행동 데이터 수집)

sequenceDiagram
    autonumber
    participant Customer as 👤 고객
    participant App as 📱 SFN App
    participant Backend as ⚙️ SFN Backend
    participant VPN as 🔐 VPN
    participant VectorDB as 🧠 Vector DB
    participant Batch as ⚙️ Batch Analyzer

    rect rgba(59, 130, 246, 0.2)
        Note over Customer,Backend: Zone A - 행동 데이터 발생
        Customer->>App: 추천 상품 클릭 👆
        App->>Backend: 이벤트 로그 {action: click}
        Customer->>App: 장바구니 담기 🛒
        App->>Backend: 이벤트 로그 {action: add_cart}
        Customer->>App: 구매 완료 💳
        App->>Backend: 이벤트 로그 {action: purchase}
        Backend->>Backend: 행동 데이터 적재
    end

    rect rgba(245, 158, 11, 0.2)
        Note over Backend,VPN: 일별 배치 전송
        Backend->>VPN: 행동 데이터 덤프
    end

    rect rgba(59, 130, 246, 0.2)
        VPN->>+VectorDB: 행동 데이터 INSERT
        VectorDB-->>-VPN: 저장 완료
    end

    rect rgba(168, 85, 247, 0.2)
        Note over VPN,Batch: Zone C - 성과 분석 (V2 예정)
        VPN-->>Batch: 분석 데이터 전달
        Note right of Batch: 📈 분석 지표: CTR, 장바구니 전환율, 구매 전환율
        Batch->>Batch: 리포트 생성
    end

    rect rgba(245, 158, 11, 0.2)
        Batch->>VPN: 분석 리포트 전송
        VPN->>Backend: 리포트 전달
    end

    rect rgba(59, 130, 246, 0.2)
        Note right of Backend: 대시보드 대신 데이터 리포트 형태 제공
    end
                        

📖 아키텍처 상세 설명

ATOM 시스템 구조와 데이터 흐름 이해하기

🏗️ 전체 구조

3개의 Zone으로 분리된 하이브리드 아키텍처입니다.

Zone A : SFN 내부 인프라 - 서비스 운영, 데이터 저장, 고객 접점
Zone B : 보안 브릿지 - VPN 터널 (암호화 통신)
Zone C : WERASER AI 인프라 - AI 추론, 배치 처리

Zone A: SFN 내부 인프라

SFN이 직접 운영하는 AWS VPC 영역입니다.

📱 SFN App / Web
  • • 고객이 접속하는 앱과 웹 서비스
  • • 상품 검색, 주문, 추천 상품 조회 화면
🚪 API Gateway
  • • 모든 외부 요청의 진입점
  • • 인증, 라우팅, 트래픽 제어
⚙️ SFN Backend Server
  • • 핵심 비즈니스 로직 처리
  • • 주문 처리, 쿠폰 발행, 추천 API 호출
  • • Kotlin / Spring Boot 기반
🗄️ Legacy DB
  • • 기존 운영 데이터 저장소
  • • 고객 정보, 주문 이력, SKU 마스터, 재고 정보
📨 NHN Cloud API
  • • 외부 메시징 서비스 연동
  • • 고객에게 LMS(장문 문자) 발송
🧠 SFN Hosted Vector DB ⭐
  • 이 아키텍처의 핵심 포인트
  • • 메뉴 임베딩, 식자재 매핑 벡터 데이터 저장
  • • WERASER가 생성한 데이터를 여기에 저장
  • SFN이 소유권을 가짐
📦 Batch Data Transfer (S3 + SQS)
🪣 S3 Bucket
  • • 배치 데이터 파일 저장소
  • • 고객 정보, 주문 이력, 판매 데이터
  • • SFN Backend에서 주기적 업로드
📬 SQS Queue
  • • S3 업로드 이벤트 알림
  • • WERASER Data Worker가 구독
  • • 비동기 데이터 처리 트리거
ATOM (AI-driven Trade Operation Model) | SFN x WERASER
배포: 2026-02-04 17:09 KST