# 요식업 소상공인을 위한 AI 마케팅 솔루션 (SmartKeting) ## 1. 소개 **SmartKeting**은 요식업 소상공인을 위한 AI 기반 마케팅 자동화 솔루션입니다. 복잡한 마케팅 업무를 자동화하고, 개인화된 AI 추천을 통해 소상공인이 손쉽게 효과적인 마케팅을 수행할 수 있도록 지원합니다. ### 1.1 핵심 기능 - **AI 콘텐츠 생성**: Claude Sonnet 4를 활용한 SNS 게시물, 블로그 포스트, 홍보 포스터 자동 생성 - **매장 운영 관리**: 매장 정보, 메뉴 관리 및 매출 데이터 분석 - **개인화 AI 추천**: 매장 특성과 현황에 맞는 맞춤형 마케팅 팁 제공 - **다채널 콘텐츠 관리**: 인스타그램, 네이버 블로그 등 다양한 플랫폼별 최적화된 콘텐츠 제공 ### 1.2 MVP 산출물 - **발표자료**: https://gamma.app/docs/AI--2rd5s7od8hlkm6z?mode=doc - **설계결과**: https://drive.google.com/drive/folders/1mrXt8LCxG8b0IxE4r8Va4A9XFJTvqnGt?hl=ko - **Git Repository**: - 프론트엔드: https://github.com/won-ktds/smarketing-frontend.git - 백엔드: https://github.com/won-ktds/smarketing-backend.git - **시연 동영상**: https://drive.google.com/file/d/1aj0M8VjX_FXcRoXso0eKEcmNK4qZAh1c/view?usp=sharing ## 2. 시스템 아키텍처 ### 2.1 전체 구조 마이크로서비스 아키텍처 기반의 클라우드 네이티브 애플리케이션으로 설계되었으며, 프론트엔드와 4개의 핵심 마이크로서비스로 구성되어 있습니다. **아키텍처 특징:** - **회복성 패턴**: Circuit Breaker, Retry 패턴으로 외부 API 호출 안정성 확보 - **효율적 분산처리**: 비동기 메시징과 큐 기반 부하 분산 - **읽기 최적화**: Cache-Aside, CQRS 패턴 적용 - **API Gateway**: 단일 진입점을 통한 통합 관리 ### 2.2 마이크로서비스 구성 #### **사용자 관리 서비스 (User Management)** - **아키텍처**: Layered Architecture - **책임**: 사용자 인증, 권한 관리, JWT 토큰 관리 - **기술**: Spring Security 기반 인증/인가 #### **매장 운영 서비스 (Store Management)** - **아키텍처**: Clean Architecture - **책임**: 매장 정보 관리, 메뉴 관리, 매출 데이터 수집 및 분석 - **외부 연동**: POS 시스템, 배달앱 API 연동 #### **콘텐츠 관리 서비스 (Content Management)** - **아키텍처**: Clean Architecture - **책임**: 콘텐츠 생성, 편집, 관리, 다채널 발행 - **외부 연동**: Instagram API, 네이버 블로그 API #### **AI 추천 서비스 (AI Recommendation)** - **아키텍처**: Layered Architecture - **책임**: 개인화 마케팅 팁 생성, AI 기반 콘텐츠 추천 - **외부 연동**: Claude Sonnet 4 API, DALL-E 3 API ### 2.3 기술 스택 #### **프론트엔드** - **Framework**: Vue 3 + TypeScript - **UI Library**: Vuetify 3 (Material Design) - **상태관리**: Pinia - **빌드도구**: Vite #### **백엔드** - **Language**: Java 21 - **Framework**: Spring Boot 3.4.0 - **아키텍처**: 멀티 프로젝트 구조 - **빌드도구**: Gradle #### **AI 서비스** - **Language**: Python 3.11 - **Framework**: FastAPI - **AI API**: Claude Sonnet 4, DALL-E 3 #### **인프라** - **Container Platform**: Azure Kubernetes Service (AKS) - **Container Registry**: Azure Container Registry (ACR) - **API Gateway**: Azure API Management + Istio Service Mesh - **CI/CD**: Jenkins + ArgoCD (GitOps) #### **백킹 서비스** - **Database**: - PostgreSQL (관계형 데이터) - Redis (캐싱, 세션) - **Storage**: Azure Blob Storage (이미지, 동영상) - **Message Queue**: Azure Service Bus - **Monitoring**: ELK Stack + Prometheus + Grafana ## 3. 백킹 서비스 설치 ### Database 설치 ```bash # Helm 저장소 추가 helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update # 사용자 관리 서비스용 DB helm install user-mgmt bitnami/postgresql \ --set global.postgresql.auth.postgresPassword=Passw0rd \ --set global.postgresql.auth.username=admin \ --set global.postgresql.auth.password=Passw0rd \ --set global.postgresql.auth.database=user_mgmt # 매장 운영 서비스용 DB helm install store-mgmt bitnami/postgresql \ --set global.postgresql.auth.postgresPassword=Passw0rd \ --set global.postgresql.auth.username=admin \ --set global.postgresql.auth.password=Passw0rd \ --set global.postgresql.auth.database=store_mgmt # 콘텐츠 관리 서비스용 DB helm install content-mgmt bitnami/postgresql \ --set global.postgresql.auth.postgresPassword=Passw0rd \ --set global.postgresql.auth.username=admin \ --set global.postgresql.auth.password=Passw0rd \ --set global.postgresql.auth.database=content_mgmt # AI 추천 서비스용 DB helm install ai-recommend bitnami/postgresql \ --set global.postgresql.auth.postgresPassword=Passw0rd \ --set global.postgresql.auth.username=admin \ --set global.postgresql.auth.password=Passw0rd \ --set global.postgresql.auth.database=ai_recommend ``` ### Redis 설치 ```bash # Redis 클러스터 설치 helm install redis bitnami/redis \ --set auth.enabled=true \ --set auth.password=Redis123! \ --set master.persistence.enabled=true \ --set replica.persistence.enabled=true ``` ### Azure Service Bus 설정 ```bash # Azure Service Bus 네임스페이스 생성 az servicebus namespace create \ --name smarketing-sb \ --resource-group smarketing-rg \ --location koreacentral \ --sku Standard # 토픽 생성 az servicebus topic create \ --namespace-name smarketing-sb \ --resource-group smarketing-rg \ --name content-generation-topic az servicebus topic create \ --namespace-name smarketing-sb \ --resource-group smarketing-rg \ --name social-posting-topic az servicebus topic create \ --namespace-name smarketing-sb \ --resource-group smarketing-rg \ --name analytics-topic ``` ## 4. 빌드 및 배포 ### 4.1 프론트엔드 빌드 및 배포 #### 컨테이너 이미지 빌드 ```bash docker build \ --build-arg NODE_ENV="production" \ --build-arg VITE_API_BASE_URL="https://api.smarketing.com" \ --build-arg VITE_AI_API_URL="https://ai.smarketing.com" \ -f deployment/Dockerfile \ -t {Image Registry주소}/smarketing/frontend:latest . ``` #### 이미지 푸시 ```bash docker push {Image Registry주소}/smarketing/frontend:latest ``` #### Kubernetes 배포 ```bash kubectl apply -f deployment/manifest/frontend/ ``` ### 4.2 백엔드 빌드 및 배포 #### 애플리케이션 빌드 ```bash # 각 서비스 모듈을 개별적으로 빌드 ./gradlew :user-management:clean :user-management:build -x test ./gradlew :store-management:clean :store-management:build -x test ./gradlew :content-management:clean :content-management:build -x test ./gradlew :ai-recommend:clean :ai-recommend:build -x test ``` #### 컨테이너 이미지 빌드 (각 서비스별로 수행) ```bash # 사용자 관리 서비스 docker build \ --build-arg BUILD_LIB_DIR="user-management/build/libs" \ --build-arg ARTIFACTORY_FILE="user-management.jar" \ -f deployment/Dockerfile \ -t {Image Registry주소}/smarketing/user-management:latest . # 매장 운영 서비스 docker build \ --build-arg BUILD_LIB_DIR="store-management/build/libs" \ --build-arg ARTIFACTORY_FILE="store-management.jar" \ -f deployment/Dockerfile \ -t {Image Registry주소}/smarketing/store-management:latest . # 콘텐츠 관리 서비스 docker build \ --build-arg BUILD_LIB_DIR="content-management/build/libs" \ --build-arg ARTIFACTORY_FILE="content-management.jar" \ -f deployment/Dockerfile \ -t {Image Registry주소}/smarketing/content-management:latest . # AI 추천 서비스 docker build \ --build-arg BUILD_LIB_DIR="ai-recommend/build/libs" \ --build-arg ARTIFACTORY_FILE="ai-recommend.jar" \ -f deployment/Dockerfile \ -t {Image Registry주소}/smarketing/ai-recommend:latest . ``` #### 이미지 푸시 ```bash docker push {Image Registry주소}/smarketing/user-management:latest docker push {Image Registry주소}/smarketing/store-management:latest docker push {Image Registry주소}/smarketing/content-management:latest docker push {Image Registry주소}/smarketing/ai-recommend:latest ``` #### Kubernetes 배포 ```bash kubectl apply -f deployment/manifest/backend/ ``` ### 4.3 AI 서비스 빌드 및 배포 #### 컨테이너 이미지 빌드 ```bash docker build \ --build-arg PYTHON_VERSION="3.11" \ --build-arg REQUIREMENTS_FILE="requirements.txt" \ -f deployment/ai/Dockerfile \ -t {Image Registry주소}/smarketing/ai-service:latest . ``` #### 이미지 푸시 및 배포 ```bash docker push {Image Registry주소}/smarketing/ai-service:latest kubectl apply -f deployment/manifest/ai/ ``` ### 4.4 테스트 #### 프론트엔드 페이지 주소 확인 ```bash kubens smarketing kubectl get svc smarketing-frontend-service ``` #### 로그인 정보 - **테스트 계정**: - ID: testuser1 - PW: password123! #### API 엔드포인트 확인 ```bash # API Gateway 주소 확인 kubectl get ingress smarketing-api-gateway # 서비스 상태 확인 kubectl get pods -l app.kubernetes.io/name=smarketing ``` ## 5. 팀 **₩ON팀** - 소상공인에게 가치있는 서비스를 제공하는 것을 목표로 하는 팀 ### 팀 구성원 **이준영 "우디"** - Frontend Developer (Scrum Master) - 프론트엔드 개발 및 애자일 방법론 전문가 - 팀 스크럼 마스터 역할 수행 **한지윤 "제니"** - Frontend Developer (Product Owner) - 프론트엔드 개발 및 제품 기획 담당 - 사용자 요구사항 분석 및 제품 로드맵 관리 **박서은 "고래"** - Backend Developer - Spring Boot 기반 마이크로서비스 개발 - API 설계 및 데이터베이스 아키텍처 구축 **유하연 "하루"** - UI/UX Designer & Data Architect & Backend Developer - 사용자 인터페이스 및 사용자 경험 설계 - 데이터 아키텍처 설계 및 백엔드 개발 지원 **오성락 "오잉"** - AI Developer & CI/CD & QA Engineer - AI/ML 모델 개발 및 최적화 - CI/CD 파이프라인 구축 및 품질 보증 **김한주 "해몽"** - Infrastructure Architect & System Analyst & CI/CD Engineer - 인프라 설계 및 시스템 기획 (TA) - CI/CD 환경 구축 및 운영 ### 팀 행동원칙 - 'M'사상 - **Value-Oriented**: WHY First, Align WHY - 가치 중심의 의사결정 - **Interactive**: Believe crew, Yes And - 상호작용과 협업 중시 - **Iterative**: Fast fail, Learn and Pivot - 빠른 실패와 학습을 통한 개선 --- **비전**: 효과적인 소통을 통해 소상공인에게 가치있는 서비스를 제공하여, 소상공인의 디지털 마케팅 역량을 혁신하고 수익 창출을 극대화한다.