내 컴퓨터를 벗어나, AI SaaS 실제 리눅스 서버에 배포하기
45단계까지 노트북(`localhost`)에서 만든 거대한 SaaS 플랫폼을 이제 세상에 공개할 차례입니다.
코드를 클라우드 리눅스 서버(AWS, 닷홈 등)에 올리고, Docker로 감싼 뒤 Nginx와 HTTPS(보안 도메인)를 앞단에 세워 언제 어디서든 접속 가능한 완벽한 형태의 서비스로 운영(Deploy)하는 일련의 과정을 배웁니다.
개발 환경(Local)에서 운영 환경(Production)으로
파이썬 프로그램이 내 컴퓨터(Local)에서는 잘 돌아가는데, 서버에만 올리면 에러가 난다면 비즈니스가 될 수 없습니다. OS가 다르고, 파이썬 버전이 다르고, 설치된 라이브러리가 꼬이는 현상을 막기 위해 우리는 Docker(도커)를 사용합니다.
Docker 및 Docker Compose 구성
우리의 SaaS 플랫폼은 크게 3개의 심장(Container)으로 이루어집니다. FastAPI(백엔드 로직), MariaDB(데이터베이스), Nginx(웹 서버)를 docker-compose.yml 파일 하나로 묶어서 단숨에 실행합니다.
특히 MariaDB Container는 삭제되어도 회계 데이터가 날아가지 않도록 반드시 서버 본체의 디렉토리와 마운트(Volumes) 처리를 해두는 것이 매우 중요합니다.
Nginx 역방향 프록시 및 HTTPS 연결
회계 시스템은 민감한 재무 정보와 주민등록번호가 포함될 수 있으므로 통신 구간 암호화(HTTPS)가 생명입니다. 인터넷 유저는 8000번 포트(FastAPI)에 직접 접근하지 못하고 오직 443(HTTPS)을 통해 Nginx를 거쳐서만 통신하게 됩니다.
accounting.ai-academy.kr 같은 도메인을 붙이고, Certbot을 이용해 Nginx에 Let's Encrypt 무료 SSL 인증서를 자동 발급 및 갱신하도록 설정합니다.
환경변수(.env)와 보안
코드 안에 DB_PASSWORD = "12345" 처럼 비밀번호를 적어놓고 Github에 올리면 큰일 납니다. 모든 비밀정보(DB 암호, OpenAI API Key 등)는 .env 파일로 빼고, 서버에서만 이 파일을 넣어 컨테이너를 구동합니다.
Git 기반의 배포 파이프라인 (CI/CD)
내 컴퓨터에서 코드를 고친 후 FTP로 일일이 파일을 덮어쓰는 것이 아닙니다. Git commit → push를 하면, 서버에서 Git pull을 받아 Docker를 다시 빌드하고 띄우는 현대적인 배포 워크플로우를 배웁니다.
DB 및 증빙 스토리지 백업 전략
코드는 날아가도 Git에서 받으면 되지만, DB(MariaDB)와 사용자가 올린 영수증 이미지(Storage)가 날아가면 회계사무소는 문을 닫아야 합니다.
- 자동 백업: Linux의 `cron` 스케줄러를 사용하여 매일 새벽 3시에
mysqldump로 DB를 백업합니다. - 외부 저장소: 서버 하드디스크가 망가질 것을 대비해 백업된 압축 파일을 AWS S3나 구글 드라이브 등 외부로 자동 전송하는 스크립트를 작성합니다.
- 모의 복구: 실제로 백업 파일을 이용해 빈 DB에 복원(Restore)해보는 테스트는 서버 운영의 필수 요건입니다.
Audit Log (감사 로그) 및 에러 모니터링
SaaS에서는 "누가 장부의 금액을 수정했는가?"를 추적하는 기능이 필수적입니다. 데이터가 변경될 때마다 audit_logs 테이블에 사용자 ID, 접속 IP, 변경 대상 및 사유를 무조건 기록하도록 합니다. 또한 서버가 뻗었을 때 docker compose logs api 명령어로 에러 원인을 빠르게 찾는 실습을 진행합니다.
47단계 예고: AI 업무자동화의 고급화 (Workflow Engine)
이제 완벽한 회계 서비스 인프라가 런칭되었습니다. 기초 파이썬 문법에서 시작하여 실제 SaaS 배포까지 오는 대장정을 마쳤습니다.
다음 47단계부터는 다시 '인공지능'의 영역으로 돌아갑니다. 단순히 질문에 답하는 수준을 넘어, 증빙이 들어오면 AI가 알아서 검증하고 장부에 기입할 후보를 만든 후 회계사에게 결재판을 올리는 'AI Agent Workflow Engine'의 개념을 배우며 진정한 자동화의 극의로 향합니다.