Mirmer AI 구축: Kiro가 단독 개발을 AI 기반 협업으로 전환한 방법

발행: (2025년 12월 4일 오전 12:52 GMT+9)
9 min read
원문: Dev.to

Source: Dev.to

400년 된 동료 검토를 부활시키는 도전

Mirmer AI를 만들기 위해 나는 수세기 전부터 이어져 온 동료 검토 과정을 부활시키고, 이를 AI 모델을 이용해 기계 속도로 실행하고 싶었다. 개념은 간단했지만 실행은 복잡했다:

  1. Stage 1 – 여러 AI 모델이 독립적으로 응답
  2. Stage 2 – 모델들이 서로의 응답을 익명으로 동료 검토
  3. Stage 3 – 의장 모델이 합의를 종합

나는 혼자 개발자였기 때문에 다음과 같은 스택을 직접 조합해야 했다:

  • 비동기 오케스트레이션이 가능한 FastAPI 백엔드
  • 실시간 스트리밍을 지원하는 React 프론트엔드
  • 이중 모드 저장소를 갖춘 PostgreSQL 데이터베이스
  • 동기/비동기 클라이언트를 제공하는 Python SDK
  • 브라우저 기반 인증이 포함된 CLI 도구
  • 결제 연동 (Razorpay)
  • Firebase 인증
  • Railway와 Vercel에 배포

보통 이 작업량은 2~3개월이 걸리지만, 나는 몇 주밖에 없었다.

Kiro의 등장

Mirmer AI의 3단계 의회 인터페이스 – AI 모델이 토론하고 답을 종합하는 모습

Kiro의 장점: 단순 코드 생성이 아닌 아키텍처 설계

대부분의 AI 코딩 어시스턴트는 개별 함수를 작성하도록 돕는다. Kiro는 전체 시스템을 설계하도록 도와주었다.

1. Steering Rules: 내 코드베이스를 Kiro에게 교육

나는 .kiro/steering/에 세 개의 스티어링 문서를 만들었다.

tech.md – 기술 스택 개요

Backend: FastAPI, Python 3.10+, uv package manager
Frontend: React 18, Vite, Tailwind CSS
Database: PostgreSQL (production), JSON (dev)
Key Pattern: Dual‑mode storage with factory pattern
Critical: Always use "uv run" not "python" directly

structure.md – 프로젝트 아키텍처

backend/
  main.py          # API routes
  council.py       # 3‑stage orchestration
  storage.py       # Factory pattern (auto‑selects backend)
  storage_postgres.py  # Production storage
  storage_json.py      # Dev storage
frontend/
  src/components/ # React components
  src/pages/      # Route pages
sdk/
  mirmer/          # Python SDK package

product.md – 비즈니스 및 기능 근거

Core: 3‑stage council process (parallel queries → peer review → synthesis)
Business: Free (10/day), Pro (100/day), Enterprise (unlimited)
Key Feature: Real‑time streaming via SSE

Steering rules – 모든 Kiro 대화에서 지속적인 컨텍스트를 유지하게 하는 비밀

Impact – 스티어링 규칙을 적용한 뒤, 모든 Kiro 대화는 올바른 규칙(예: uv run 사용, storage.py에서 import, 3‑stage 패턴 준수)으로 시작했으며, 이는 건축적 오류를 한 번에 제거했다.

2. Spec‑Driven Development: 아이디어에서 구현 계획까지

복잡한 기능을 위해 Kiro의 스펙 시스템을 사용했다. 아래는 Python SDK에 대한 워크플로우이다.

Phase 1 – Requirements (requirements.md)

“Kotlin SDK에 대한 스펙을 만들어줘”라고 요청했더니 다음을 생성했다:

  • 수용 기준이 포함된 12개의 사용자 스토리
  • 기술 용어 사전
  • EARS 형식의 60개 이상 테스트 가능한 요구사항

예시 요구사항:

User Story: As a developer, I want to stream council updates in real‑time

Acceptance Criteria:
1. WHEN a developer calls the stream method THEN the system SHALL yield updates as each stage progresses
2. WHEN Stage 1 completes THEN the system SHALL yield an event containing all individual model responses
3. WHEN streaming encounters an error THEN the system SHALL yield an error event with details

자동 생성된 요구사항 문서 – 사용자 스토리와 수용 기준 포함

Phase 2 – Design (design.md)

Kiro가 만든 내용:

  • 데이터 흐름 다이어그램을 포함한 전체 아키텍처
  • 메서드 시그니처가 정의된 컴포넌트 인터페이스
  • 프로퍼티 기반 테스트를 위한 20개의 정확성 속성
  • 오류 처리 전략
  • 테스트 접근법(단위, 프로퍼티 기반, 통합)

정확성 속성 예시:

  • “모든 API 요청에 대해 x-user-id 헤더는 API 키를 포함해야 함”
  • “구독 결제 시 티어는 pro로 업데이트돼야 함”
  • “스트리밍 요청 시 이벤트는 stage1_start → stage1_complete → stage2_start … 순서대로 도착해야 함”

이 속성들은 각각 100회 이상 반복되는 Hypothesis 프로퍼티 기반 테스트로 구현됐다.

Phase 3 – Tasks (tasks.md)

Kiro는 작업을 세분화된 티켓으로 나눴다:

- [ ] 1. Set up project structure and packaging
- [ ] 2. Implement core data models
  - [ ] 2.1 Create Pydantic models for all data structures
  - [ ]* 2.2 Write property test for response structure validation
- [ ] 3. Implement synchronous Client class
  - [ ] 3.1 Create Client with initialization and configuration
  - [ ]* 3.2 Write property test for API key security

*는 선택적 테스트 작업을 표시하며, 핵심 기능에 먼저 집중할 수 있게 해준다.

구현 작업과 진행 상황 추적 – 각 작업이 특정 요구사항을 참조함

Result – SDK 스펙 덕분에 프로덕션 전에 세 가지 버그를 잡을 수 있었고, 작업 티켓 덕분에 3일짜리 기능을 1시간 단위로 나눠 진행했다. 보존된 스펙 파일 덕분에 몇 주 뒤에 작업을 재개해도 컨텍스트를 잃지 않았다.

3. Agent Hooks: 스스로 개선되는 코드베이스

나는 일상적인 개발 작업을 자동화하기 위해 여섯 개의 에이전트 훅을 정의했다.

API Function Generator – 백엔드 파일 수정 시 트리거

When I write a new API function, Kiro automatically generates:
- FastAPI route decorator
- Pydantic validation schema
- Error‑handling boilerplate
- Example request body

Auto‑Document Code – 코드 파일 편집 시 트리거

Kiro adds docstrings/JSDoc to every function automatically.
No more “I’ll document this later” – it happens in real‑time.

Auto‑Generate Tests – 함수 생성과 동시에 트리거

For each new function, Kiro creates:
- Unit test skeleton
- Property‑based test template (if a correctness property exists)
- Mock data fixtures

Dependency Updaterrequirements.txt 변경 시 실행

Kiro checks for newer package versions, runs the test suite, and creates a pull request if all checks pass.

CI/CD Optimizer – 각 푸시 후 실행

Kiro analyses test coverage, suggests flaky‑test mitigations, and updates the GitHub Actions workflow accordingly.

Documentation Publisher – 릴리즈 태그 생성 시 실행

Kiro builds the MkDocs site, uploads it to the hosting provider, and posts a release note with changelog highlights.

이 훅들 덕분에 코드베이스는 스스로 유지보수되는 시스템이 되었으며, 수작업 부담이 크게 줄어들었다.

정리

  • Steering rules는 AI 어시스턴트에게 지속적인 컨텍스트를 제공해 반복 설명을 없앤다.
  • Spec‑driven development는 높은 수준의 아이디어와 구체적인 구현 사이의 간극을 메우며, 초기 단계에서 결함을 잡는다.
  • Agent hooks는 반복 작업을 자동화해, 혼자서도 몇 주 안에 프로덕션 급 멀티‑LLM 플랫폼을 구축할 수 있게 해준다.
Back to Blog

관련 글

더 보기 »

SaaS IA 뉴스

SaaS IA 뉴스용 커버 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazon...