파이썬 스크립트에서 마이크로 SaaS로: Flask, Stripe, SQLite로 수익화 가능한 웹 앱 개발
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
파이썬 개발자, SaaS 기업가, 인디 해커
- 중급 이상의 Python 지식과 웹 개발 경험을 가진 개발자에게 유용
- 수익화 가능한 제품 개발을 원하는 초기 스타트업 창업자에게 적합
핵심 요약
- Flask와 Stripe를 활용한 모듈식 아키텍처 구현
@login_required
데코레이터로 사용자 인증 처리stripe.checkout.Session.create()
API로 결제 처리- SQLite 기반의 간단한 데이터베이스 설계
User
모델에서is_paid
필드로 유료 사용자 구분- 스케일링 가능한 구조
scraper.py
모듈로 크롤링 로직 분리routes.py
에서 라우팅 분리 및 블루프린트 사용
섹션별 세부 요약
1. 프로젝트 구조 설계
app/
디렉토리 내routes.py
,models.py
,scraper.py
모듈 분리static/
과templates/
디렉토리로 프론트엔드 리소스 분리config.py
에서 환경 설정 관리requirements.txt
로 의존성 관리
2. 사용자 인증 및 결제 인프라 구현
Flask-Login
을 사용한User
모델 정의
```python
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(100), unique=True)
is_paid = db.Column(db.Boolean, default=False)
```
- Stripe API 키 설정 및 결제 세션 생성
```python
stripe.api_key = "sk_test_..."
session = stripe.checkout.Session.create(
payment_method_types=["card"],
line_items=[{"price_data": {"unit_amount": 1000}, "quantity": 1}],
mode="payment"
)
```
3. 크롤링 기능 구현
requests
와BeautifulSoup
을 사용한 웹 크롤링 로직
```python
def get_job_leads():
url = "https://example.com/jobs"
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
jobs = []
for job in soup.select(".job-card")[:10]:
jobs.append({"title": job.select_one(".title").text, "email": "Hidden", "company": job.select_one(".company").text})
return jobs
```
4. 유료 사용자 기능 구현
dashboard
라우트에서is_paid
상태에 따른 데이터 제한
```python
@app.route("/dashboard")
@login_required
def dashboard():
leads = get_job_leads()
if not current_user.is_paid:
for lead in leads:
lead["email"] = "Upgrade to view"
return render_template("dashboard.html", leads=leads)
```
5. 확장성 고려사항
- 이메일 전송 기능 추가 (SendGrid 또는
smtplib
활용) cron
또는Celery
로 배경 작업 스케줄링- 사용자 활동 추적 (로그인 타임스탬프, 대시보드 방문 횟수)
6. 배포 및 마케팅 전략
- Heroku, Fly.io, Render 등으로 클라우드 배포
- 커스텀 도메인 및 HTTPS 설정
- Reddit, IndieHackers, Twitter 등에서 제품 발표
- 피드백 기반으로 반복 개선
결론
- Flask와 Stripe를 활용한 최소한의 인프라로 마이크로 SaaS 제품을 빠르게 구축
@login_required
와is_paid
필드를 활용한 유료 기능 제한 구현scraper.py
모듈 분리로 확장성 있는 코드 구조 유지- 기존 스크립트를 SaaS로 전환하여 재사용 가능한 비즈니스 모델 구축
- 콘텐츠 마케팅을 위한 ready-to-publish article kits 활용으로 수익화 전략 확대