블로그 목록
개발 케이스스터디2026-03-05

OneClick SNS: Flask 기반 SNS 서비스 관리자 백오피스 구축 사례

숨고를 통해 의뢰받은 SNS 다운로드 서비스의 관리자 백오피스를 Flask와 FastAPI로 구축한 사례입니다. PayAction 자동 입금 매칭, 리셀러 정산, Fernet 암호화 설정 관리 등 실무 운영 과제를 해결한 과정을 소개합니다.

CodeLune웹개발외주Flask백오피스관리자시스템개발자동입금매칭
OneClick SNS: Flask 기반 SNS 서비스 관리자 백오피스 구축 사례

서비스가 성장하면 관리 복잡도는 기하급수적으로 증가합니다. 회원 관리, 충전 처리, 정산, 통계 확인을 각기 다른 도구로 처리하다 보면 운영 자체가 병목이 됩니다. 숨고를 통해 의뢰받은 OneClick SNS 프로젝트는 8개 SNS 플랫폼 다운로드 서비스의 운영 전반을 하나의 관리자 시스템으로 통합한 사례입니다.

시스템 아키텍처와 기술 선택

관리자 웹 애플리케이션은 Flask 3.0과 SQLAlchemy 2.0 기반으로 구축했습니다. 화면 렌더링은 Jinja2 템플릿 엔진을 활용하고, DataTables로 대량 데이터 테이블을 처리하며, ApexCharts로 플랫폼별 사용량 통계를 시각화합니다.

모바일 앱 연동을 위한 API 서버는 FastAPI로 별도 구성했습니다. JWT 토큰 인증과 Redis 캐싱을 적용하여, 관리자 웹과는 독립적으로 확장할 수 있는 구조입니다. 전체 시스템은 Docker Compose로 컨테이너화하여 AWS EC2 서울 리전에 운영합니다.

사용자 권한 체계

3단계 권한 모델을 적용했습니다. 일반 사용자(Lv 5)는 마이페이지 접근만 가능하고, 리셀러(Lv 6+)는 추천 회원 관리 기능이 열리며, 관리자(Lv 9)가 시스템 전체를 통제합니다. 권한별로 접근 가능한 메뉴와 API 엔드포인트를 분리하여 보안을 확보했습니다.

자동 입금 매칭: Webhook 기반 결제 자동화

가장 높은 비즈니스 임팩트를 가진 기능은 PayAction 연동 자동 입금 매칭입니다. 은행 입금 발생 시 Webhook이 서버로 전달되고, 입금액과 입금자명을 기준으로 대기 중인 충전 요청과 자동으로 연결합니다.

해결한 기술적 과제

동시 입금 경합 방지: 동일 금액이 근접한 시간에 입금될 경우 하나의 요청에 중복 매칭되는 race condition을 DB 트랜잭션 단위로 차단했습니다.

Webhook 멱등성 보장: 네트워크 재시도로 동일 Webhook이 중복 수신될 수 있어, transaction_id 기반 중복 체크를 적용했습니다.

매칭 실패 대응: 입금자명 불일치 등으로 자동 매칭이 안 되는 건은 관리자 수동 매칭 화면에서 처리할 수 있도록 했습니다.

감사 추적: 모든 입금 이벤트를 TBPayLog에 기록하여 사후 검증이 가능합니다.

리셀러 정산과 포인트 시스템

추천 코드 기반의 리셀러 구조를 구현했습니다. 추천 회원이 충전하면 리셀러에게 기본 20%의 포인트가 자동 적립됩니다. 정산 로직에서는 원금액 대비 실결제액 기준 선택과 자기 구매 제외 규칙을 적용하여 정확한 보상 계산을 보장합니다.

포인트는 적립, 차감, 잔액 조회가 가능하며, 관리자 화면에서 회원별 이력을 상세히 추적할 수 있습니다.

운영 안정성을 위한 설계 결정

동적 설정 관리

은행 계좌, 메일 서버, API 키 등 민감한 운영 설정을 .env 파일 대신 DB에 Fernet 암호화하여 저장합니다. 관리자 UI에서 즉시 변경할 수 있으므로, 계좌 교체나 API 키 갱신 시 재배포가 필요 없습니다.

다중 워커 환경 세션 처리

Gunicorn 4 workers 구성에서 파일 기반 Flask-Session의 세션 공유 문제가 발생했습니다. 공유 파일 경로를 설정하여 해결했으며, 향후 트래픽 증가 시 Redis 세션 스토어로의 전환을 고려하고 있습니다.

SEO 랜딩페이지

서비스 유입을 위해 3가지 A/B 테스트 버전의 랜딩페이지를 구성했고, JSON-LD 구조화 데이터를 적용하여 검색 엔진 노출을 최적화했습니다.

프로젝트 기술 요약

Backend: Flask 3.0, SQLAlchemy 2.0, Gunicorn

API Server: FastAPI, JWT, Redis

Frontend: Jinja2, Bootstrap 5, DataTables, ApexCharts

Database: MySQL 8.0

Security: Bcrypt, Fernet 암호화, Flask-Session

Infra: Docker Compose, AWS EC2 (서울), CI/CD (dep.sh + Docker Hub + SSH)

포트폴리오 상세 페이지에서 실제 작업물을 확인할 수 있습니다.

이 프로젝트는 CodeLune에서 개발했습니다.

관리자 시스템, 결제 자동화 개발이 필요하시다면 편하게 문의해주세요.


개발이 필요하신가요?

React, Next.js, Python 기반 맞춤 웹개발 · 자동화 · 외주 개발