AWS Community Day Hong Kong 2025 Recap

바이브 코딩을 넘어서: Kiro를 활용한 사양 주도 개발

Recap Series

Kiro 소개

Kiro는 VS Code 기반에서 포크되었기 때문에 Visual Studio Code(VS Code)와 유사합니다. Amazon은 그 위에 추가 기능을 구축했으며, 에이전트형 코딩 기능을 위해 기반의 대규모 언어 모델(LLM)에 의존하므로 구독형 서비스로 제공됩니다.

사양 모드와 사양 주도 개발

  • 사양 모드: 사양 모드 또는 사양 주도 개발이라고 하는 Kiro만의 고유 기능입니다.
  • 전통적인 바이브 코딩: 대부분의 개발자는 코딩 에이전트에게 코딩이나 디버깅 지원을 요청하는 바이브 코딩에 익숙합니다.
  • 사양 주도 개발: 요구 사항, 설계, 작업 계획, 그리고 마지막으로 코딩 순서로 소프트웨어를 구축하는 색다른 접근 방식입니다. 실제 코딩을 시작하기 전에 구조화된 요구 사항과 설계를 마련합니다.

에이전트 스티어링 기능

  • 에이전트 스티어링: 개발자가 코딩 도우미에 소프트웨어 작성 방식을 안내할 수 있는 기능입니다.
  • 제품 개요용 Markdown 파일: 개발자는 제품의 개요, 워크플로, 사용 사례를 설명하는 Markdown 파일을 제공할 수 있습니다. 이를 통해 요구 사항과 설계를 제품 개요에 맞출 수 있습니다.
  • 프로젝트 구조 정의: 개발자는 코딩을 시작하기 전에 Markdown 파일에서 프로젝트 구조를 정의할 수 있습니다. 여기에는 엔터프라이즈 표준이나 프로젝트 파일 및 테스트 파일을 구성하는 구체적인 방식이 포함됩니다.
  • 명명 규칙: 개발자는 Markdown 파일에 명명 규칙을 지정하여 생성되는 파일이 올바른 규칙을 따르도록 할 수 있습니다.

기술 스택 정의

  • 기술 스택 정의: 에이전트 스티어링의 세 번째 예는 프로젝트의 기술 스택을 정의하는 것입니다.
  • 프런트엔드: React와 같은 프레임워크를 지정합니다.
  • 백엔드: 백엔드용 프레임워크나 기술을 지정합니다.
  • 종속성: Markdown 파일에 프로젝트 종속성을 정의합니다.

코딩 규칙

  • 코딩 규칙: 코딩 도우미가 조직의 규칙을 준수하도록 코딩 규칙을 미리 정의합니다.

agents readme 지원

  • agents readme 지원: Kiro 최신 릴리스에는 에이전트 Markdown 파일의 개방형 표준인 agents.readme 지원이 도입되었습니다.
  • 상호 운용성: Kiro에서 에이전트 readme 파일을 정의하고 Cursor 같은 다른 코딩 도우미에서도 사용하여 에이전트 Markdown 표준에 맞출 수 있습니다.

에이전트 훅

  • 에이전트 훅: 웹훅과 마찬가지로 에이전트 훅은 특정 이벤트(예: 파일 저장 또는 업데이트)가 발생하면 워크플로를 트리거합니다.
  • 보안 표준:
  • 예시: 코드에 하드 코딩된 자격 증명이나 보안 취약점이 포함되지 않도록 보안 표준을 정의합니다.
  • 저장 시 보안 검사: API 키, 프라이빗 키, IP 주소 등을 검사하고 자동으로 수정하는 보안 검토용 에이전트 훅을 정의합니다.
  • 시연:
  • 기존 코드: 하드 코딩된 IP 주소가 있는 간단한 예시입니다.
  • 에이전트 훅 생성: 파일 저장 시 보안 검사를 수행하도록 에이전트 훅을 정의합니다.
  • 결과: 보안 검사가 하드 코딩된 IP 주소를 고위험 요소로 식별하고, 환경 변수를 사용하되 값이 없으면 localhost를 기본값으로 사용하도록 수정합니다.
  • 시프트 레프트 보안: 보안 검사는 CI/CD 단계가 아니라 파일을 저장하는 시점에 수행되어 개발 프로세스에서 보안 점검을 앞당깁니다.

에이전트 훅의 추가 활용 사례

  • Figma 디자인 비교:
  • 통합: 에이전트 훅을 사용해 파일 저장 시 코딩된 요소와 Figma UX 디자인을 비교합니다.
  • Figma용 MCP: Figma용 MCP와 통합하여 코드가 정의된 디자인과 일치하도록 합니다.
  • 예시: 시스템에 Figma 디자인을 Angular로 구현하도록 요청하여 Figma 디자인에서 직접 코드를 생성합니다.

MCP 서버 통합(Figma에서 코드로)

  • 예시: Figma용 MCP를 통합하고 시스템에 Figma 디자인으로부터 Angular 코드를 생성하도록 요청합니다.
  • 결과: 시스템이 Figma 디자인에서 직접 코드를 생성하여 해당 디자인을 기반으로 사이트를 만듭니다.

MCP 서버 통합(최신 문서)

  • 통합: MCP 서버를 사용하여 AWS 문서와 지식 베이스 등 가장 최신 문서를 참조합니다.
  • 예시: AWS 문서와 통합하고 로컬에서 작성한 코드가 AWS Lambda에서 실행될 수 있는지 시스템에 확인하도록 요청합니다.
  • 결과: 시스템은 Lambda에 배포할 때 발생하는 코드 문제를 식별할 뿐 아니라, 파일 전송에 S3 미리 서명된 URL을 사용하는 등의 변경 사항을 제안하는 마이그레이션 계획도 만듭니다.

Kiro의 사양 주도 개발

  • 사양 주도 개발: 애자일 개발이 탄생한 이래 최고의 발전으로 강조됩니다.
  • 애자일의 과제: 요구 사항의 변화와 프로젝트 관리자, 비즈니스 분석가, 사용자 간의 의사소통 오류로 인해 사용자가 명시한 내용과 최종적으로 구축되는 결과물이 다른 경우가 많습니다.
  • 적응형 접근 방식: Kiro의 사양 주도 개발은 개발 프로세스 전반에서 동적으로 적응함으로써 이러한 과제를 수용합니다.

실제 사용 사례 데모

  • 사용자 요구 사항: 사용자는 파일을 청크로 분할하는 애플리케이션, 구체적으로 500 MB 파일을 100 MB 크기의 청크 5개로 나누는 애플리케이션을 만들고자 했습니다.
  • [ 1 ] 암묵적 요구 사항:
  • 그래픽 사용자 인터페이스(GUI)
  • 파일 입력을 위한 드래그 앤 드롭 기능
  • 분할 구성 옵션(예: 청크 5개 또는 각 10 MB 크기의 청크)
  • 개별 파일 및 분할된 모든 파일을 담은 zip 파일의 다운로드 옵션
  • [ 2 ] 개발 시간:
  • 전통적인 예상 기간: 2주
  • Kiro 개발: 6시간(10분짜리 배속 영상으로 시연)
  • [ 3 ] 영상 시연:
  • 왼쪽 상단에 실시간 타이머를 표시하며 Kiro를 사용한 6시간의 개발 과정을 보여 주는 10분짜리 영상입니다.

초기 요구 사항과 설계

  • 사용자 입력: 제품 소유자가 대용량 파일을 더 작은 청크로 분할하는 애플리케이션의 초기 요구 사항을 입력합니다.
  • Kiro의 응답: Kiro가 1분 이내에 인수 기준을 포함한 사용자 요구 사항 7개를 생성합니다.
  • 사용자 피드백: 제품 소유자가 요구 사항을 검토하고 승인합니다.

설계 조정

  • 초기 설계: Kiro는 명령줄 인터페이스(CLI)를 가정하여 초기 설계를 만듭니다.
  • 사용자 수정: 제품 소유자가 CLI 대신 그래픽 사용자 인터페이스(GUI)를 요청합니다.
  • 실시간 업데이트: Kiro가 GUI와 백엔드 API를 포함하도록 설계를 실시간으로 조정합니다.

반복적 설계 프로세스

  • 할 일 파일: 추가 질문과 요구 사항이 발생할 때 이를 추적하는 데 할 일 파일을 사용합니다.
  • [ 1 ] 제품 소유자가 프런트엔드에서 백엔드로 파일을 전송하는 메커니즘을 질문합니다.
  • 설계 업데이트: 업로드 메커니즘을 문서화하도록 설계를 업데이트합니다.
  • [ 2 ] 새로운 요구 사항: 제품 소유자가 최대 1 TB의 파일을 지원해야 한다는 요구 사항을 추가합니다.
  • 설계 업데이트: 1 TB 파일을 처리하도록 설계를 업데이트합니다.
  • [ 3 ] 제품 소유자가 청크 분할 전에 백엔드가 파일 크기를 어떻게 파악하는지 질문합니다.
  • 설계 업데이트: 이 질문에 답할 수 있도록 설계에 세부 내용을 추가합니다.

작업 계획

  • 작업 계획 생성: 요구 사항과 설계를 확정한 후 프로젝트를 개별 작업(Task 1~Task 10)으로 나눈 작업 계획을 만듭니다.
  • 소요 시간: 초기 요구 사항부터 작업 계획까지 전체 과정에 20분도 걸리지 않습니다.

작업 계획 및 코딩

  • 작업 추적성: 각 작업을 요구 사항까지 추적할 수 있어 요구 사항부터 설계와 작업 계획에 이르는 엔드투엔드 추적성이 보장됩니다.
  • 단위 테스트: Kiro는 코딩과 함께 단위 테스트를 생성합니다. 모든 단위 테스트를 통과해야 작업이 완료된 것으로 간주됩니다.
  • 디버깅: Kiro는 단위 테스트 실패를 자동으로 디버깅하고 수정합니다.
  • 오류 처리 및 최적화: Kiro는 오류 처리, 유효성 검사, 성능 최적화를 작업의 일부로 수행합니다.

테스트 및 버그 수정

  • 초기 테스트: 애플리케이션을 처음 테스트하면서 UX 문제(예: 읽기 어려운 파란색 글꼴)가 드러납니다.
  • 버그 식별: 파일 업로드 중 오류가 발생하며 로그 메시지를 통해 이를 식별합니다.
  • 에이전트 지원 디버깅: 오류 코드를 복사하여 에이전트에 붙여 넣으면 에이전트가 버그 수정을 시도합니다.
  • 업로드 성공: 버그를 수정하고 대용량 파일 업로드에 성공합니다.
  • 청크 분할 및 다운로드: 애플리케이션이 파일을 성공적으로 청크로 분할하며 개별 청크와 zip 파일을 다운로드할 수 있게 합니다.

UX 개선

  • 색상 변경: 가독성을 높이기 위해 파란색 글꼴을 청록색으로 변경합니다.
  • 버튼 모양: 버튼의 회색을 더 적절한 색상으로 변경합니다.
  • 대용량 파일 업로드: 대용량 파일을 처리할 수 있는지 확인하기 위해 2 GB 파일로 애플리케이션을 테스트합니다.

테스트 자동화

  • 수동 테스트: 처음에는 여러 파일을 청크로 분할하고 UX 문제를 확인하는 등 테스트를 수동으로 수행했습니다.
  • 자동화: Kiro는 Mermaid 다이어그램을 사용해 설계와 문서를 만들고 Playwright를 사용해 테스트를 자동화합니다.
  • 크로스 브라우저 테스트: Firefox, Chrome, Safari 및 모바일 기기에서 자동화 테스트를 실행합니다.
  • 엔드투엔드 흐름: 이 과정은 모두 IDE 내에서 요구 사항부터 소프트웨어 구축과 자동화된 실시간 검증까지 이어지는 엔드투엔드 흐름을 보여 줍니다.

요약

  • 이 과정은 요구 사항과 설계부터 코딩, 단위 테스트, UX 개선에 이르기까지 사양 주도 개발을 처리하는 Kiro의 역량을 보여 주며, 전통적인 방식보다 훨씬 짧은 시간 안에 모든 작업을 완료합니다.

결론 및 애자일 개발의 미래

  • 애자일 팀 규모: IDE에서 함께 작업하는 숙련된 엔지니어 1명과 도메인 또는 기능 전문가 1명으로 구성됩니다.
  • 시간 비교: 애자일 팀 전체가 예상한 2주와 달리, 요구 사항부터 자동화 테스트까지 전체 과정이 6시간 만에 완료되었습니다.
  • 사양 주도 개발: 이 세션은 Kiro를 활용한 사양 주도 개발로 무엇을 달성할 수 있는지 간략히 보여 주는 것을 목표로 했습니다.