본문 바로가기

개발 자동화 & 생산성 도구

1편 Vibe Coding으로 만드는 실용 앱: 사내 비용 정산 자동화 앱 구축기

반응형

 

🟦 개발 생산성 & 자동화 시리즈 — 1편

Vibe Coding으로 만드는 실용 앱: 사내 비용 정산 자동화 앱 구축기

📌 들어가며

사내 개발자 교육에서 가장 반응이 좋았던 세션이 바로 Vibe Coding으로 실제 업무용 앱을 함께 만들어보는 실습이었다.
“AI한테 코드만 받아 쓰는 것” 정도로 생각하는 개발자들도 많았는데, 실제로는 설계 → 코드 생성 → 디버깅 → 테스트 생성 → 문서화 → 리팩터링까지 LLM이 전부 참여하는 완성도 높은 워크플로우를 만들 수 있다.

이번 글에서는 실제로 내가 사내에서 개발했던 **‘월별 비용 정산 자동화 앱’**을 그대로 예시로 보여준다.
이 앱은 단순 CRUD가 아니라, 규칙 기반 정산 로직 + 테스트 자동화 + Slack 연동까지 포함된 실전 애플리케이션이다.


1. 📐 아키텍처 설계 — Vibe Coding과 함께 만든 시스템

내가 처음부터 정해둔 요구사항은 간단했다.

  • 매달 직원들이 올리는 Excel 정산 파일을 자동으로 처리하고
  • 정산 규칙은 YAML로 관리해 수정 가능해야 하고
  • 승인 시 Slack으로 자동 알림을 보낼 것

Vibe Coding과의 대화를 통해 만들어진 실제 아키텍처는 아래와 같다.

[Excel Upload]
       ↓
[FastAPI Backend]
       ↓
[Vibe Coding 기반 Rule Engine 생성]
       ↓
[정산 로직 Executor]
       ↓
[DB 저장 (PostgreSQL)]
       ↓
[Slack Notification Webhook]

Vibe Coding이 단순히 “코드 생성기”가 아니라,
내 요구사항을 기반으로 구조 전체를 다듬어주고 API 스펙까지 초안으로 잡아주기 때문에 설계 시간이 크게 단축됐다.


2. 🧱 FastAPI 기반 앱 구조 — 자동 생성 + 커스텀 조합

아래는 실제 프로젝트 구조다.

/app
 ├─ api
 │   └─ upload.py
 ├─ services
 │   ├─ rules.py
 │   ├─ executor.py
 │   └─ notifier.py
 ├─ config
 │   └─ rules.yml
 ├─ models
 │   └─ expense.py
 └─ main.py

이 중 50% 이상은 Vibe Coding에서 초안 코드를 만들어주고,
나머지를 내가 요구사항에 맞게 수정·보완했다.


3. 🧪 핵심 코드 해설

3-1. Excel 업로드 & 파싱

@app.post("/upload")
async def parse_excel(file: UploadFile):
    df = pd.read_excel(file.file)
    items = df.to_dict(orient="records")
    return {"count": len(items), "items": items}

여기까지는 평범한 코드지만, 이 후에 필요한 상세 파싱 로직(금액 포맷 처리, 날짜 변환 등)은 대부분 Vibe Coding이 “데이터 패턴”을 학습해 자동 생성해주었다.


3-2. YAML 기반 정산 룰 관리

초기에는 정산 규칙을 코드에 넣었더니 매달 바뀌는 정책 때문에 유지보수가 너무 힘들었다.
그래서 Vibe Coding에게 “설정형 룰 엔진으로 바꿔줘”라고 요청했고, 바로 아래 구조를 제안해줬다.

rules.yml

rules:
  - category: 식비
    limit: 50000
  - category: 교통비
    limit: 30000

rules.py

import yaml
from pydantic import BaseModel

class ExpenseRule(BaseModel):
    category: str
    limit: int

def load_rules():
    with open("config/rules.yml") as f:
        data = yaml.safe_load(f)
    return [ExpenseRule(**item) for item in data["rules"]]

룰 수정 → 서버 재실행 없이 즉시 반영되는 구조가 완성됨.


3-3. 정산 Executor — 핵심 비즈니스 로직

아래는 업종별로 금액을 검증하고 초과 금액을 따로 계산하는 주 로직이다.

def validate_expense(item, rules):
    for rule in rules:
        if rule.category == item["category"]:
            if item["amount"] <= rule.limit:
                return True, 0
            else:
                return False, item["amount"] - rule.limit
    return False, item["amount"]

여기서 재미있던 점은, 초안은 Vibe Coding이 작성한 코드였고,
내가 “초과 금액도 반환해줘”라고 하자 diff 형태로 자동으로 수정해줬다는 것.


3-4. Slack Webhook 자동 알림

def send_slack_notification(user, total_amount):
    payload = {
        "text": f"[정산 승인] {user}님의 월 정산이 승인되었습니다. 총액: {total_amount}원"
    }
    requests.post(SLACK_WEBHOOK_URL, json=payload)

Vibe Coding은 Slack 문구 스타일도 자동으로 제안해주며 매우 빠르게 UX를 잡을 수 있었다.


4. 🔥 실무에서 실제로 겪은 문제와 해결 과정

문제 1) Excel 컬럼 표준화 안 됨

직원마다 쓰는 템플릿이 달라 컬럼명이 매달 바뀜
→ Vibe Coding에게 “가능한 컬럼 패턴 목록을 알려주고 자동 정규화 로직 생성” 요청
→ Text Pattern 기반 정규화 코드 자동 생성
→ 파싱 오류 80% 감소


문제 2) 룰 변경 시 테스트가 매번 필요

→ Vibe Coding에 “룰 기반 테스트 자동 생성” 요청
→ 아래와 같은 테스트 자동 생성됨:

def test_food_rule_limit():
    item = {"category": "식비", "amount": 40000}
    ok, diff = validate_expense(item, rules)
    assert ok is True

테스트 코드 작성 시간이 0에 가까워짐.


문제 3) 초기에 LLM 출력이 비일관적

→ “시스템 지시문”에 코딩 스타일 가이드·패턴·예외 처리 방식을 넣어 해결
→ 이후 프롬프트 안정성 유지됨


5. 🏁 최종 결과 — 개발 속도 2배, 유지보수 난이도 1/3

프로토타입은 1일 만에 완성했고,
운영 버전은 3일 만에 배포했다.
이전에는 두 명이 일주일 걸리는 작업이었다.

특히 아래 3가지는 Vibe Coding 덕을 크게 봤다.

  • API 코드 자동화
  • 정산 규칙 변경 자동 반영
  • 테스트 자동 생성

이후 다른 팀에서도 동일한 아키텍처로 여러 자동화 시스템을 만들기 시작했다.


6. 🚀 실전 팁 3개

1) Vibe Coding에는 “구조적 의도”를 먼저 말하라

“유지보수 쉬운 구조로”, “룰 기반 설정으로”, “테스트 자동 생성 포함” 등
의도를 말하면 더 좋은 코드가 나온다.

2) 반복되는 작업은 모두 패턴화해 맡겨라

파싱/검증/CRUD/테스트 같은 것은 사람이 할 이유가 없다.

3) 규칙이나 정책이 바뀌는 업무는 꼭 설정화하라

비용 정산, 평가 기준, 승인 룰 등은 모두 YAML·JSON으로 외부화하면 유지보수 비용이 극적으로 줄어든다.


7. 🏷 추천 태그

#개발생산성 #VibeCoding #업무자동화 #FastAPI #AI코딩 #백엔드개발 #자동화사례 #YAML엔진 #사내개발


 

반응형