FastAPI, Gemini, Postmark를 활용한 이메일 기반 AI 어시스턴트 구축 및 배포 가이드

🤖 AI 추천

이 콘텐츠는 FastAPI를 활용한 백엔드 개발, Gemini LLM 연동, Postmark를 사용한 이메일 처리 및 AWS EC2를 이용한 서비스 배포 경험을 쌓고 싶은 백엔드 개발자 및 풀스택 개발자에게 매우 유용합니다. 특히, 실제 개발 과정에서 겪는 문제점(무한 루프 방지, 이메일 도메인 문제 등)과 해결 방안을 상세히 다루고 있어 실질적인 도움이 될 것입니다.

🔖 주요 키워드

FastAPI, Gemini, Postmark를 활용한 이메일 기반 AI 어시스턴트 구축 및 배포 가이드

이메일 기반 AI 어시스턴트 구축 및 배포 심층 분석

핵심 기술

이 글은 FastAPI 프레임워크, Google Gemini LLM, Postmark 이메일 서비스를 연동하여 사용자의 이메일을 받아 AI가 응답을 생성하고 다시 이메일로 회신하는 자동화 시스템을 구축하는 전 과정을 상세히 설명합니다. 특히, 실제 개발 및 배포 과정에서 발생하는 여러 기술적 난관과 해결 과정을 현실적으로 공유합니다.

기술적 세부사항

  • 아키텍처:
    • 사용자 이메일 전송 (Postmark 수신) ➝ FastAPI 웹훅 트리거
    • FastAPI 백엔드에서 이메일 내용 추출 및 처리
    • Gemini LLM을 이용한 AI 응답 생성
    • Postmark을 통해 사용자에게 이메일 회신
  • 주요 프레임워크 및 서비스:
    • FastAPI: 웹훅 엔드포인트(main.py) 및 기본 서버 설정
    • Gemini (Google Generative AI): 이메일 내용 분석 및 응답 생성 (utils.py)
    • Postmark: 이메일 송수신 및 관리에 사용 (utils.py)
  • 코드 구조:
    • main.py: FastAPI 앱 설정, Postmark 인바운드 페이로드 모델 정의, 웹훅 엔드포인트 구현 (/inbound-email)
    • utils.py: Gemini API 연동 함수 (get_response), Postmark 이메일 발송 함수 (send_email_postmark)
  • 개발 및 배포 과정:
    • 로컬 개발 환경: ngrok을 사용한 FastAPI 웹훅 노출 및 테스트
    • Postmark 설정:
      • MX 레코드 설정 및 도메인 연동 (user@codewithpravesh.tech 사용)
      • 인바운드 도메인 포워딩 설정
    • 이메일 루프 방지: 발신자가 자신인 경우(sender == "assistant@codewithpravesh.tech") 응답하지 않도록 처리
    • 배포 (AWS EC2):
      • t2.small 인스턴스 사용, 16GB 스토리지, Elastic IP 할당
      • 보안 그룹 설정 (HTTP, HTTPS, SSH)
      • Nginx: 리버스 프록시 설정 (app.codewithpravesh.tech ➝ EC2 IP)
      • Systemd 서비스: FastAPI 애플리케이션을 백그라운드에서 실행하고 재부팅 시 자동 시작되도록 설정 (uvicorn 사용)
    • DNS 설정: app.codewithpravesh.tech 도메인을 EC2 Elastic IP로 연결
  • 주요 문제 해결:
    • Postmark에서 Public 이메일 도메인 미지원 문제 해결 (DEV++ 멤버십 혜택으로 Private 도메인 획득)
    • 이메일 무한 루프 발생 및 해결
    • Postmark 계정 승인 대기 중 422 에러 처리

개발 임팩트

이 프로젝트는 LLM을 실제 서비스에 통합하는 방법을 배우고, 이메일 기반의 자동화 워크플로우를 구축하는 실질적인 경험을 제공합니다. 또한, 웹 서비스의 로컬 테스트부터 클라우드 배포까지의 전반적인 MLOps 및 DevOps 파이프라인 경험을 쌓을 수 있습니다.

커뮤니티 반응

  • 프로젝트는 오픈 소스로 GitHub에 공개되어 있으며, 코드 리뷰 및 기여가 가능합니다.
  • 글쓴이는 Dev.to 챌린지를 통해 이 프로젝트를 진행했으며, Postmark와 Dev.to 팀에게 감사를 표하고 있습니다.

톤앤매너

전문적이고 실용적인 개발 블로그 톤으로, 기술적 도전 과제와 해결 과정을 솔직하게 공유하며 독자에게 유용한 정보를 제공합니다.

📚 관련 자료