AWS re:Invent 리캡
Kiro를 활용한 스펙 주도 개발(DEV314)
리캡 시리즈
세션 노트
Kiro와 스펙 주도 개발 소개
개요
- Kiro는 최근 출시된 새로운 에이전트형 IDE로, 스펙 주도 개발을 강조합니다.
- 구조화된 워크플로를 통해 코드 품질과 검토 프로세스를 개선하는 것이 목표입니다.
- IDE는 컴파일러와 디버깅 같은 통합 도구 덕분에 널리 사용되었습니다.
- AI 편집기는 코드 완성에서 시작해 에이전트형 경험으로 발전했습니다.
- 이제 개발자는 제어권을 유지하면서 코드 작성 및 검토를 위해 AI 에이전트를 지휘합니다.
- Vibe Coding과 스펙 주도 개발 비교:
- Vibe coding은 빠른 프로토타이핑을 지원하지만 기존 SDLC 수명 주기가 부족합니다.
- 스펙 주도 개발은 요구 사항부터 결과물까지 구조화된 워크플로를 도입하며, 사전 계획에 집중해 모델의 집중도와 결과물 품질을 개선합니다.
- 스펙 주도 개발 워크플로:
- 요구 사항으로 시작해 설계, 작업 목록, 구현 순서로 진행합니다.
- 원하는 결과물을 얻을 때까지 반복적으로 다듬을 수 있습니다.
- 맞춤법 검사와 코딩 원칙 적용 등 변경 사항을 검증하는 hook이 포함됩니다.
AI 편집기와 소프트웨어 개발의 진화
AI 편집기
- 개발자가 자연어를 입력하면 AI가 여러 파일을 편집하는 보다 에이전트형인 경험으로 발전했습니다.
- 근본적인 변화: 개발자는 워크플로에 대한 제어권을 유지하면서 코드 작성 및 검토를 위해 AI 에이전트를 지휘합니다.
- Vibe Coding:
- 개발자가 프롬프트를 작성하고 AI가 코드를 생성하는 과정을 반복하는 인기 워크플로입니다.
- 빠른 프로토타이핑에는 효과적이지만 기존 SDLC 수명 주기가 부족해 맥락 및 의사 결정에 어려움이 생깁니다.
- 스펙 주도 개발:
- 사전 계획을 강조하여 vibe coding의 과제를 해결하기 위해 도입되었습니다.
- 요구 사항부터 결과물까지 구조화된 워크플로로, 모델의 집중도와 결과물 품질 향상에 중점을 둡니다.
- 워크플로에는 요구 사항, 설계, 작업 목록 및 구현이 포함되며 반복적으로 다듬을 수 있습니다.
- 변경 사항을 검증하는 hook을 통합하여 "AI" 문제를 해결하고 코드 품질을 보장합니다.
스펙 주도 개발
변경 사항 검증을 위한 Hook
- Kiro는 개발 프로세스 중 변경 사항을 검증하는 hook을 통합합니다.
- 예로 문서 맞춤법 검사기, 어조 및 스타일 검사, UI 구성 요소에 단일 책임 원칙 같은 코딩 원칙 적용이 있습니다.
- 구직자 앱 개념:
- 핵심 아이디어: 면접 준비뿐 아니라 스타일, 어조, 실제 면접 성과 등 구직의 더 폭넓은 측면을 다룹니다.
- 엘리베이터 피치: 사용자가 로그인해 프로필을 설정하고 질문-답변 흐름으로 면접을 준비하며, 마지막에 정성적 피드백과 정량적 점수를 모두 받습니다.
Kiro 인터페이스와 기능 개요
Kiro 인터페이스
- Tailwind CSS가 설치된 새로운 앱의 개요.
- Kiro 메뉴:
- Agent hooks: 파일 저장이나 삭제 같은 이벤트로 실행되는 백그라운드 프로세스로, 문서나 현지화 업데이트에 유용합니다.
- Agent steering: 코딩 및 설계 표준을 위한 규칙 파일로, 애플리케이션의 현재 상태에 따라 자동 생성됩니다.
- Specs: 요구 사항에서 결과물까지 이어지는 구조화된 워크플로로, 아이디어부터 구현까지 명확한 경로를 보장합니다.
- MCP: My Code Partner 서버로, 다양한 AWS 서비스 및 제품과 통합할 수 있으며 최근 더 쉬운 설치를 위한 개선 사항이 추가되었습니다.
- Agent Hooks:
- 일반적인 시나리오를 위한 사전 구축 hook을 사용할 수 있고 특정 파일 형식을 유연하게 지정할 수 있습니다.
- Agent Steering:
- 애플리케이션의 현재 상태에 따라 steering 파일을 자동 생성합니다.
- 예: TypeScript 및 Vite를 사용하는 Vite 웹 애플리케이션을 위해 생성된 제품 및 기술 파일.
- MCP Servers:
- 다양한 서비스와 제품을 위한 MCP server 목록이 계속 확장됩니다.
- 최근 추가 사항: kiro.dev를 통한 MCP server 원클릭 설치.
Kiro의 스펙 주도 개발
개요
- 스펙 주도 개발은 이 세션의 핵심 주제로, 요구 사항부터 결과물까지 구조화된 워크플로를 강조합니다.
- Kiro는 최적의 모델을 선택하는 자동 선택 기능과 함께 다양한 AI 모델(Sonnet 4.5, 4.4, Opus, Haiku)을 지원합니다.
- 구직자 앱 만들기:
- 다이어그램을 설계 입력으로 사용하여 Kiro에 구직자 앱 생성을 요청합니다.
- 제공된 설계를 바탕으로 요구 사항 문서를 생성하는 것부터 시작합니다.
- 요구 사항 문서:
- Kiro는 초기 프롬프트를 인수 조건이 포함된 사용자 스토리 형태의 요구 사항 집합으로 구체화합니다.
- 사용자 스토리는 사람이 읽을 수 있는 형식으로 기능을 정의하고, 인수 조건은 구현에 필요한 세부 사항을 설명합니다.
- 사용자 스토리와 인수 조건:
- 사용자 스토리의 예로 로그인, 프로필 관리 및 면접 준비 세션이 있습니다.
- 세부 구현을 위한 인수 조건을 살펴보기 전에 사용자 스토리가 원하는 기능과 일치하는지 검토합니다.
요구 사항 개선과 설계 단계로의 이동
요구 사항 검토 및 개선
- Kiro에서는 요구 사항을 반복적으로 다듬을 수 있습니다. 예시에서는 일부 요구 사항(1, 2, 상태 지속성)을 제거하고 나머지(3, 4, 5, 6, 7, 8)를 MVP 범위에 유지했습니다.
- 요구 사항이 원하는 결과에 부합하도록 과정에서 반복적으로 오가는 것이 중요함을 강조합니다.
- 워크플로 유연성:
- Kiro는 빠른 프로토타이핑을 위한 vibe coding과 구조화된 계획을 위한 스펙 주도 개발 등 여러 워크플로를 지원합니다.
- 개발자는 더 구조화된 접근 방식으로 전환하기 전에 초기 인터페이스와 기능을 검토하기 위해 vibe coding을 선호할 수 있습니다.
- 설계 단계:
- 요구 사항이 확정되면 Kiro가 기존 코드베이스를 바탕으로 설계 문서를 생성합니다.
- 설계 단계에는 시스템이 지정된 요구 사항을 충족하도록 아키텍처 다이어그램과 속성 테스트를 만드는 작업이 포함됩니다.
- 반복적 프로세스:
- 이 프로세스는 반복적이므로 개발자가 결과에 만족할 때까지 요구 사항과 설계 문서를 다듬을 수 있습니다.
- 생성된 문서는 향후 개발과 유지 관리에 유용한 참고 자료가 됩니다.
설계 문서 검토 및 개선
설계 문서 개요
- Kiro는 개선된 요구 사항을 바탕으로 상위 수준 아키텍처와 구성 요소 개요를 포함한 설계 문서를 생성합니다.
- 설계 문서는 명확한 시각화와 문서화를 위해 Mermaid 다이어그램과 Markdown을 사용합니다.
- 상위 수준 아키텍처:
- 아키텍처에는 시작 화면, 질문 화면, 결과 화면, 데이터 지속성을 위한 local storage, 오디오 응답 녹음을 위한 Web Audio API가 포함됩니다.
- 구성 요소 분석:
- 식별된 핵심 구성 요소: 시작 화면 보기, 질문 화면 보기, 세션 상태 캡처(질문과 응답), 질문 은행(MVP), 스토리지 세션.
- 누락된 부분 식별:
- 누락된 기능: 사용자 응답 오디오의 텍스트 변환과 상세한 결과 분석.
- 설계 문서에는 오디오를 텍스트로 변환하는 방법과 결과를 생성하고 표시하는 방법에 대한 구체적인 내용이 없습니다.
- 설계 개선:
- 추가 요구 사항: 사용자가 말하는 동안 텍스트로 변환하고 결과에 추가 분석 제공.
- 자연어 프롬프트로 새 요구 사항을 쉽게 추가할 수 있다는 점을 강조하며 AI 지원 문서화의 편리함을 보여 줍니다.
설계 개선과 작업 목록으로의 이동
설계 문서 업데이트
- Cloud SDK를 사용한 오디오 텍스트 변환과 상세한 결과 분석 등 추가 기능을 설계 문서에 추가했습니다.
- 버전 관리 시스템에 의존하지 않고 이전 상태로 쉽게 되돌릴 수 있도록 체크포인트와 복원 기능을 도입했습니다.
- 시스템 다이어그램 업데이트:
- 시스템 다이어그램에 텍스트 변환 서비스(Cloud SDK를 사용한 speech-to-text)를 추가했습니다.
- 작업 목록 생성:
- 업데이트된 설계 문서를 바탕으로 작업 목록을 생성하는 단계로 이동합니다.
- 작업에는 데이터 모델 생성, 오디오 녹음 서비스 구현, 응답 검증 스토리지 및 AI 통합이 포함됩니다.
- 유연성과 개선:
- 워크플로를 통해 수동 편집 및 개선 사항을 설계 문서에 통합할 수 있습니다.
- MVP 범위를 빠르게 달성하는 데 집중하도록 작업 순서를 바꾸거나 우선순위를 지정할 수 있습니다.
- 선택적 작업:
- 속성 기반 테스트 작업은 기본적으로 선택 사항으로 설정되어 개발자가 추가 테스트보다 핵심 기능에 먼저 집중할 수 있습니다.
- 더 빠른 MVP 개발을 위해 특정 작업의 우선순위를 높이도록 작업 목록을 개선할 수 있습니다.
작업 목록 우선순위 지정 및 구현
작업 목록 유연성
- MVP 범위를 빠르게 달성하는 데 집중하도록 작업 목록을 다듬고 순서를 바꿀 수 있습니다.
- 작업 수를 줄이도록 작업을 그룹화하여 워크플로를 더 쉽게 관리할 수 있습니다.
- 테스트 우선 개발:
- 테스트 주도 개발 방식을 선호하는 개발자는 테스트를 먼저 작성할 수 있습니다.
- 워크플로는 다양한 개발 방식을 지원하여 팀의 선호도에 따라 사용자 지정할 수 있습니다.
- 핵심 MVP 작업:
- 종속성 설정, 핵심 데이터 형식 생성, 애플리케이션 상태 관리 구현, 오디오 녹음 구현, 음성 테스트라는 다섯 가지 작업을 핵심 MVP로 식별했습니다.
- 추가 작업에는 응답 검증 스토리지 구현과 시작 화면 구성 요소 생성이 포함됩니다.
- UI 포함:
- 초기 단계에는 UI 구성 요소가 포함되지 않을 수 있지만 시각적 테스트와 상호 작용을 위해 UI를 포함하도록 조정할 수 있습니다.
- 작업 구현:
- UI 클릭 또는 채팅 명령으로 작업을 시작할 수 있습니다.
- Kiro는 순서대로 작업을 실행하며 터미널 명령을 실행해 종속성을 설치하고 필요한 파일을 생성합니다.
- 프로세스는 반복적이므로 변화하는 요구 사항과 설계에 따라 빠르게 조정하고 개선할 수 있습니다.
속성 기반 테스트 개요
구조화된 요구 사항
- 요구 사항은 사용자 스토리 인수 조건 형식으로 정의됩니다.
- 요구 사항에 대한 논리적 동치와 형식적 추론이 가능합니다.
- 속성과 형식적 추론:
- 속성은 시스템의 모든 실행에서 항상 성립해야 하는 특성 또는 동작입니다.
- Kiro는 Gherkin 형식 요구 사항에서 속성을 추출하고 Fast Check라는 프레임워크를 사용해 속성 기반 테스트를 수행합니다.
- Gherkin
- Behavior-Driven Development(BDD)에서 소프트웨어 동작 시나리오를 구조화되고 사람이 읽을 수 있는 형식으로 작성하는 일반 텍스트 언어이며, 주로 Given-When-Then 구조를 사용합니다.
- Feature: 테스트하는 기능을 설명합니다.
- Scenario: 기능이 작동하는 구체적인 예입니다.
- Given: 작업이 실행되기 전 초기 맥락이나 상태를 설정합니다.
- When: 사용자 또는 시스템이 수행하는 작업을 설명합니다.
- Then: 예상되는 결과를 정의합니다.
- And/But: 같은 키워드(Given, When, Then)를 반복하지 않고 더 많은 단계를 추가하는 데 사용합니다.
- Fast Check Framework:
- Fast Check는 속성에 대해 테스트할 다양한 값을 생성하여 퍼즈 테스트를 수행할 수 있습니다.
- 입력이 제한된 단위 테스트와 달리 속성 기반 테스트는 생성된 결과물이 요구 사항에 부합한다는 더 많은 근거를 제공합니다.
- 속성 기반 테스트 예시:
- Kiro로 체스 앱을 만들고 앱이 예상대로 작동하는지 확인하기 위해 속성 기반 테스트를 사용했습니다.
- 테스트에는 AI가 생성한 모든 수가 이동 레지스트리에 따라 유효한지 확인하는 작업이 포함되었습니다.
- Fast Check는 견고성을 보장하고 버그를 줄이기 위해 무작위 변경을 적용하여 테스트를 여러 번 실행합니다.
- 속성 기반 테스트는 코드 품질을 높이고 버그 발생 가능성을 줄입니다.
진단 도구
- Kiro의 진단 도구는 작업 실행 중 문제를 식별하고 해결하는 데 도움을 줍니다.
- 편집기에서 lint 문제를 읽고 개발 프로세스를 개선하기 위한 피드백을 제공합니다.
- 이 도구는 작업 완료 중 발생하는 문제 수를 줄였습니다.
- 작업 실행:
- 앱에는 면접 준비를 위한 행동, 기술 및 리더십 질문이 포함됩니다.
- 앱은 응답 생성을 위해 Sonnet 3.7 모델에 연결됩니다.
- 최적화된 데모:
- 최종 앱은 질문과 응답을 활용한 면접 준비 연습을 보여 줍니다.
- 앱에서 사용자는 기술 질문에 답하는 연습을 하고 피드백을 받을 수 있습니다.
- 데모에서는 응답을 녹음하고 텍스트로 변환하는 기능을 포함해 앱의 기능을 보여 줍니다.