기술 스택 - Notipy-DiscordBot/Notipy GitHub Wiki
🛠️ 기술 스택
Notipy는 모듈화된 구조를 바탕으로 Python과 Docker를 중심으로 구현된 웹 기반 자동화 서비스입니다.
각 구성 요소는 다음과 같은 목적과 기준에 따라 선택되었습니다.
📌 언어 및 프레임워크
기술 |
역할 |
선택 이유 |
Python 3.11+ |
전체 백엔드 로직 및 Discord 봇 개발 |
가독성 좋고, FastAPI 및 Discord 생태계와 호환 |
FastAPI |
RESTful API 서버 |
비동기 지원, 자동 문서화, 경량 프레임워크 |
SQLAlchemy |
ORM (Object Relational Mapper) |
유지보수성 높고, 다양한 DB 백엔드 지원 |
Pydantic |
데이터 검증 및 직렬화 |
FastAPI와의 통합성, 타입 안정성 |
discord-py-interactions |
디스코드 봇 구현 |
슬래시 명령어, 인터랙션 기반 개발에 최적화 |
🗃️ 데이터베이스
기술 |
역할 |
선택 이유 |
MySQL 8.x |
알림/연동 상태 저장 및 트랜잭션 관리 |
안정성 높은 오픈소스 관계형 DB, 도커 환경에 최적화 |
🧪 외부 API 및 연동
서비스 |
사용 목적 |
Notion API |
Notion DB 이벤트 수신 및 필터링 |
Discord API |
메시지 전송, 슬래시 명령어, OAuth 인증 |
GitHub API |
GitHub 프로필 분석용 데이터 수집 |
🐳 인프라 및 배포
기술 |
역할 |
비고 |
Docker |
실행 환경 통합, 이미지 기반 배포 |
환경 독립성, 일관된 실행 보장 |
Docker Compose |
멀티 컨테이너 구성 관리 |
backend , discordbot , database 등 분리 실행 |
Nginx (선택) |
리버스 프록시 및 보안 헤더 구성 |
HTTPS 및 외부 접근 제어에 사용 가능 |
GitHub Actions |
코드 포맷 자동화 |
PR 시 black 기반 코드 스타일 검사만 수행 중 |
🧰 유틸리티 및 기타
도구/기술 |
용도 |
.env / dotenv |
환경 변수 및 비밀 설정 관리 |
logging |
디버깅 및 에러 로깅 |
asyncio |
비동기 I/O 처리 |
📎 참고 링크