From b1e816d229a3554cff2196520a3f1785b7f6122b Mon Sep 17 00:00:00 2001 From: happybell80 Date: Wed, 9 Jul 2025 21:06:12 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20README.md=EC=97=90=20=EC=9D=B4=EB=A9=94?= =?UTF-8?q?=EC=9D=BC=20=EC=84=A4=EC=A0=95=20=EA=B0=80=EC=9D=B4=EB=93=9C=20?= =?UTF-8?q?=EC=84=A4=EB=AA=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Gmail API 실시간 수신 및 발송 완전 가이드 설명 추가 - 문서 링크 가독성 개선 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 2 +- docs/setups/Traefix+DockerSwarm+SlackOath.md | 69 ++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 docs/setups/Traefix+DockerSwarm+SlackOath.md diff --git a/README.md b/README.md index 11c7418..3ee6994 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Slack 기반 AI 어시스턴트 **로빙(Robeing)** 프로젝트의 모든 문 - [Slack 테스트 가이드](./docs/setups/slack-test-guide.md) - [Socket Mode 테스트 가이드](./docs/setups/socket-mode-test.md) - [ngrok 테스트 가이드](./docs/setups/ngrok-test-guide.md) -- [이메일 설정 가이드](./docs/setups/Email_readme.md) +- [이메일 설정 가이드](./docs/setups/Email_readme.md) - Gmail API 실시간 수신 및 발송 완전 가이드 ### 외부 참조 - [Slack API 문서](https://api.slack.com/web) diff --git a/docs/setups/Traefix+DockerSwarm+SlackOath.md b/docs/setups/Traefix+DockerSwarm+SlackOath.md new file mode 100644 index 0000000..c1040f0 --- /dev/null +++ b/docs/setups/Traefix+DockerSwarm+SlackOath.md @@ -0,0 +1,69 @@ +# Traefik + Docker Swarm + Slack OAuth 구조 정리 + +## 1. 구성요약 + +### 조합 목적 + +* **Traefik**: 동적 리버스 프록시, SSL 자동 발급, 라우팅 자동화 +* **Docker Swarm**: 컨테이너 오케스트레이션, 서비스 자동 배포·복구 +* **Slack OAuth**: 사용자 인증 및 API 호출을 위한 토큰 발급 + +### 기본 흐름 + +``` +사용자 ↔ Traefik ↔ FastAPI (컨테이너) ↔ Slack API + ↕ + PostgreSQL (토큰 저장) +``` + +--- + +## 2. 각 조합 비교 요약 + +| 조합 | 구성도 | 주요 용도 | 장점 | 단점 | +| -------------------------- | ------------------------------ | -------------- | ---------------- | --------------- | +| **Nginx + Traefik** | Nginx(외부) → Traefik(내부) → 컨테이너 | 고급 라우팅/보안 분리 | 복잡한 역할 분리 가능 | 설정 이중화, 구조 복잡 | +| **Nginx + Docker Swarm** | Nginx → Swarm 서비스로 프록시 | 단순 구조, 테스트용 | 익숙함, 설정 간단 | 자동 라우팅/SSL 불가 | +| **Traefik + Docker Swarm** | Traefik → Swarm 서비스 자동 인식 | 자동 SSL, 무중단 배포 | 설정 자동화, 라벨 기반 운영 | 학습 필요, 초기 설정 요구 | + +→ **추천 조합**: Traefik + Docker Swarm + +--- + +## 3. Slack OAuth 대응 여부 + +| 항목 | 설명 | 가능 여부 | +| --------------- | ------------------------------------------ | ----- | +| 컨테이너 교체 시 토큰 유지 | Swarm은 컨테이너를 자동으로 교체할 수 있음 | O | +| Traefik 라우팅 지속성 | 서비스 이름 기준으로 자동 감지/연결 | O | +| Slack 인증 콜백 유지 | `/auth/slack/callback` 같은 경로 고정 가능 | O | +| OAuth 토큰 저장 방식 | DB(PostgreSQL), Redis, JSON 파일 등 외부 저장소 활용 | O | + +→ 핵심: **토큰을 컨테이너 외부에 저장하는 설계 필요** + +--- + +## 4. 권장 저장 방식 + +| 방식 | 설명 | 비고 | +| -------------------- | ---------------- | ----------- | +| Supabase/PostgreSQL | 토큰 안전 저장 + 조회 간편 | **추천** | +| Redis | 캐시 + TTL 관리 | OK (단기 보관용) | +| JSON + Docker volume | 간단한 테스트용 | 실운영 비추천 | +| .env 환경변수 | 초기값 용도로만 사용 | **보안 취약** | + +--- + +## 5. 운영 전략 요약 + +* Traefik으로 **SSL 자동 관리 + 서비스 라우팅 자동화** +* Docker Swarm으로 **컨테이너 동적 배포 + 재시작 자동 처리** +* Slack OAuth 토큰은 **PostgreSQL 등 외부 DB에 저장**하여 지속성 확보 + +--- + +## 6. 결론 + +* Traefik + Swarm 구조는 Slack OAuth 토큰의 지속성과 확장성 모두 확보 가능 +* 구조적으로 무중단 배포, 컨테이너 재시작, 스케일 아웃에 유리 +* 단, Slack 인증 토큰은 반드시 **컨테이너 외부에 저장**해야 함