이전까지는 Kiro를 사용한 요구사항 정의와 설계까지 진행했습니다.
여기서는 프로그램 구현 단계로 진입합니다.
Part 1에서는 무료 플랜으로 진행했지만, 크레딧 50개로는 개발이 전혀 진척되지 않는 상황이라 Kiro Pro라는 유료 플랜으로 전환했습니다. 이 플랜은 매월 1일에 1000 크레딧이 지급됩니다.
유료 플랜으로 전환하니 AI 모델 선택지가 늘어났기 때문에, Opus의 가장 최신 버전을 사용하고 있었습니다.
① AI 채팅을 열고
② 지금까지 정의된 요구사항과 설계 정보를 입력(읽게) 시킨다.
③ 읽힌 내용을 바탕으로 구현에 필요한 태스크를 도출하여 순서대로 md 파일에 기재한다.
④ md 파일에 기재된 태스크에 따라 구현(구현 + 테스트)을 진행한다.
⑤ Kiro 자신이 자체 검토(Self-review)를 수행한다.
⑥ ⑤까지 발생한 과제에 대해 Kiro에게 답변을 받고, 각 태스크 단계별 피드백을 받는다.
⑦ 동작 확인을 통해 구현 내용에 대한 점검을 한다.
⑧ 세부적인 개선점 지적(기능/UI 등)
AI는 태스크를 분할하여 요청하는 것이 정확도가 높아지고, 또한 구현 내용이 많을 경우 어디까지 진행했는지 관리하기 쉬우므로 위와 같은 방법을 채택했습니다.
또한, Part 1과 마찬가지로 Kiro 자신이 자체 검토를 수행하게 함으로써 사람 측의 체크가 줄어들기 때문에 반드시 셀프 리뷰를 거쳐 판단 포인트를 줄인 상태에서 점검을 진행하고 있습니다.
※주로 AI 채팅에 관한 내용을 발췌했습니다.
| No | 개요 | 대책 |
|---|
| 1 | AI의 답변 정확도가 낮음 | 유사도 임계값을 0.5 → 0.8로 조정 |
| ... | | |
정리하는 것이 어려워 기능 목록은 Kiro에게 작성하도록 했습니다.
화면 이미지는 디버그 시점의 스크린샷입니다.
| 기능 | 상세 내용 |
|---|
| 로그인 | 사번 + 비밀번호로 인증 |
| 로그아웃 | POST 방식으로 전송 (CSRF 방지) |
| 비밀번호 변경 | 현재 비밀번호를 확인한 후 변경 가능 (8~15자, 영문/숫자 혼합) |
| |
<br>
| 기능 | 상세 내용 |
|---|
| 환영 메시지 | 로그인 중인 사용자 이름을 표시 |
| ... | |
<br>
| 기능 | 상세 내용 |
|---|
| 메시지 전송 | 최대 500자 (전각/반각 모두 1글자). 공백만은 거부됨 |
| ... | |
<br>
| 기능 | 상세 내용 |
|---|
| 기사 목록 | 작성일 기준 내림차순. 페이지당 20개 항목의 페이징 처리 |
| 기사 상세 /blog/<id> | 마크다운 본문을 HTML로 렌더링 (XSS Sanitized) |
| 기사 작성 /blog/create | 제목(최대 200자)・본문(최대 10,000자)・마크다운 미리보기 |
| 기사 수정 /blog/<id>/edit | 본인만 수정 가능 |
| 기사 삭제 | 본인 또는 Admin만 삭제 가능 |
| 스톡 (북마크) | 기사별 추가/삭제 (중복 불가) |
<br>
| 기능 | 상세 내용 |
|---|
| 스톡 목록 | 자신이 북마크한 기사의 목록 표시 |
<br>
| 기능 | 상세 내용 |
|---|
| 프로필 표시 | 성명・부서・자기소개・아바타 이미지・작성된 기사 목록 |
| 프로필 수정 /profile/<id>/edit | 본인만 수정 가능. 자기소개(500자 이내)・부서・아바타(최대 2MB, JPEG/PNG/GIF/WebP) |
| 아바타 배포 /profile/avatar/<filename> | static/ 외부에 저장하고 전용 루트로 배포 (직접 URL 접근 방지) |
<br>
| 기능 | 상세 내용 |
|---|
| 사용자 목록 | 전체 사용자를 사번 오름차순으로 표시 |
| 사용자 생성 /admin/users/create | 사번(반각 숫자 5자리)・성명・이메일・비밀번호・롤을 등록 |
| 계정 비활성화 | 대상 사용자의 기존 세션도 만료 (본인 제외) |
| 계정 재활성화 | 잠금 상태도 동시에 리셋 |
기능 목록
| 기능 | 상세 |
|---|
| 문서 목록 | 파일명, 형식, 크기, 등록자, 등록일시 표시 |
| ... | |
| 기능 | 상세 |
| 사이드바 네비게이션 | 왼쪽 고정 사이드바. 열고 닫을 수 있음 (상태를 브라우저에 저장) |
| ... | |
제가 할 일은 그저 Kiro에게 판단과 리뷰, 개선안을 제시하는 것이었습니다.
지금 생각해보니 구현보다 앞선 요구사항 정의나 기본 설계가 다소 미흡했고 명확한 차별화도 이루어지지 못했던 것 같습니다. 작성된 자료는 내용이 중복되어 있어, Kiro에게 학습시킬 때 같은 정보를 낭비로 여러 번 읽게 했을지도 모른다고 생각합니다.
그 부분이 개선된다면 Kiro 역시 더 원활하게 작업을 할 수 있지 않을까 싶었습니다.
또한 프로그램의 경우 대부분 로직을 보지 못했고, 테스트도 Kiro가 진행했기 때문에 설계력, 판단력과 만들고 싶은 것의 이미지만 있다면 개인 개발 수준에서는 어느 정도 결과물이 나올 수 있지만, 지금의 저에게는 그 모든 것이 아직 부족하다는 것을 구현하는 과정에서 절실히 느꼈습니다.
그 외에도 크레딧을 낭비하지 않기 위해 Kiro의 표준 기능인 Steering 등을 처음부터 활용하고 제약 조건을 걸어두었어야 했다는 반성점이 있습니다. Kiro Pro로 한 달 치 크레딧을 이틀 정도 만에 다 써버렸습니다.
이번 개인 개발에서는 새로운 언어를 이용하기 위한 환경 구축부터, 요구사항 정의·설계·구현까지 일련의 개발 과정을 스스로 진행하는 것에 처음 도전했습니다.
개발을 진행하면서 특히 인상 깊었던 것은 AI 자체와 그 활용 방법이 눈부시게 변화했다는 점입니다. 개발 초기에는 프로그램 작성에 중점을 두었지만, AI의 진화와 함께 후반부에는 AI 에이전트를 어떻게 활용하여 개발 전체의 생산성을 높일 것인가라는 시점으로 관점이 바뀌었습니다. 실제로 개발 후반부에서는 생산 속도가 크게 향상된 것도 체감했습니다.
한편으로는, AI를 활용한다고 해서 모든 것이 해결되는 것은 아닙니다. 무엇을 만들어야 할지에 대한 아이디어 창출이나, 구현 방침 판단, AI가 생성한 결과물에 대한 리뷰 등 인간이 담당해야 할 역할도 많습니다. 이번 경험을 통해 단순히 프로그램을 짜는 기술을 익히는 것뿐만 아니라, AI의 특성을 이해하고 그 능력을 최대한 끌어낼 수 있는 사용법을 습득하는 것이 중요하다고 느꼈습니다.
또한, AI 챗 개발을 하면서 AI의 구조나 모델 종류, 내부 설정값 등에도 접하게 되었습니다. 평소에는 의식하지 않던 시스템을 학습함으로써, 현재 광범위하게 이용되는 AI가 가진 능력의 높이와 그 기술을 지탱하는 노력에 대해 이해를 깊게 할 수 있었습니다.
이번 개발에서 얻은 것은 단순히 기술적인 지식이나 구현 경험뿐만 아니라, AI의 진화에 맞춰 개발 방식을 바꿔나가고 자신 스스로도 계속 학습해 나가야 한다는 깨달음 또한 큰 수확이었습니다.
앞으로도 새로운 기술을 적극적으로 도입하면서, AI에게 맡길 부분과 자신이 고민해야 할 부분을 가려내어 더 나은 개발 진행 방식을 모색하고 싶습니다.
...라는 이 요약 글마저도 AI에게 리뷰를 받았습니다.ㅋㅋ
내년에도 이어서 하거나 혹은 주제를 정해서 좀 더 효율적인 AI 구동 개발을 해보고 싶습니다.
여러분 여기까지 읽어주셔서 감사합니다!