chg readme
This commit is contained in:
parent
6a537f7fc1
commit
46b1034a6f
337
README.md
337
README.md
@ -1,15 +1,330 @@
|
|||||||
## 📂 프로젝트 결과물
|
# 요식업 소상공인을 위한 AI 마케팅 솔루션 (SmartKeting)
|
||||||
|
|
||||||
### 📋 발표 자료
|
## 1. 소개
|
||||||
* 발표 자료 : [{발표자료 링크}](https://gamma.app/docs/AI--2rd5s7od8hlkm6z)
|
|
||||||
|
|
||||||
### 🎨 설계 결과
|
**SmartKeting**은 요식업 소상공인을 위한 AI 기반 마케팅 자동화 솔루션입니다. 복잡한 마케팅 업무를 자동화하고, 개인화된 AI 추천을 통해 소상공인이 손쉽게 효과적인 마케팅을 수행할 수 있도록 지원합니다.
|
||||||
* 설계 결과 : {설계결과 링크}
|
|
||||||
|
|
||||||
### 💻 Git Repository
|
### 1.1 핵심 기능
|
||||||
* **프론트엔드** : [{프론트엔드 레포지토리 링크}](https://gitea.cbiz.kubepia.net/shared-dg04-Won/smarketing-frontend.git)
|
- **AI 콘텐츠 생성**: Claude Sonnet 4를 활용한 SNS 게시물, 블로그 포스트, 홍보 포스터 자동 생성
|
||||||
* **백엔드** : [{백엔드 레포지토리 링크}](https://gitea.cbiz.kubepia.net/shared-dg04-Won/smarketing-backend.git)
|
- **매장 운영 관리**: 매장 정보, 메뉴 관리 및 매출 데이터 분석
|
||||||
* **manifest** : [{manifest 레포지토리 링크}](https://gitea.cbiz.kubepia.net/shared-dg04-Won/smarketing-manifest.git)
|
- **개인화 AI 추천**: 매장 특성과 현황에 맞는 맞춤형 마케팅 팁 제공
|
||||||
|
- **다채널 콘텐츠 관리**: 인스타그램, 네이버 블로그 등 다양한 플랫폼별 최적화된 콘텐츠 제공
|
||||||
|
|
||||||
### 🎬 시연 동영상
|
### 1.2 MVP 산출물
|
||||||
* 시연 동영상 : {시연 동영상 링크}
|
- **발표자료**: https://gamma.app/docs/AI--2rd5s7od8hlkm6z?mode=doc
|
||||||
|
- **설계결과**: UML 기반 시스템 설계 문서
|
||||||
|
- **Git Repository**:
|
||||||
|
- 프론트엔드: https://github.com/won-ktds/smarketing-frontend.git
|
||||||
|
- 백엔드: https://github.com/won-ktds/smarketing-backend.git
|
||||||
|
- **시연 동영상**: 실제 서비스 사용 시나리오 데모
|
||||||
|
|
||||||
|
## 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 - 빠른 실패와 학습을 통한 개선
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**비전**: 효과적인 소통을 통해 소상공인에게 가치있는 서비스를 제공하여, 소상공인의 디지털 마케팅 역량을 혁신하고 수익 창출을 극대화한다.
|
||||||
Loading…
x
Reference in New Issue
Block a user