Kiro를 사용해 오래된 웹사이트 재구축 (그리고 잘못된 점)
Source: Dev.to
나는 7년 동안 손대지 않았던 오래된 웹사이트를 Kiro와 한 번도 사용해보지 않은 기술들을 사용해 다시 만들었습니다. 인증을 한 시간도 안 돼 구현하는 것에서 시작해 파일 업로드가 포함된 간단한 CRUD를 파악하는 데 6일을 보냈고, 프레임워크 없이 처음부터 남은 CMS와 사이트 기능들을 4일 만에 마무리하는 매우 생산적인 기간을 겪었으며, 마지막으로 실제 프로덕션에서 제대로 동작하도록 AI가 생성한 쓰레기를 정리하는 데 또 3일을 고통스럽게 보냈습니다.
아마도 AI 코딩 어시스턴트에 관한 비슷한 글들을 많이 보셨겠지만, 제 경험을 공유합니다.
구축하려는 것에 대해 아무것도 모를 때 먼저 개념을 배우세요
새로운 것을 시도하고 있다면, 실제로 개념을 배우는 데 시간을 투자하세요. 제 경우에는 Cloudflare R2, Workers, 그리고 Cloudflare Image Resizing이 어떻게 작동하는지 전혀 익숙하지 않아서 단순한 CRUD에 며칠을 걸렸고, AI에게 원하는 작업을 제대로 지시할 수 없었습니다. 문서를 읽고 개념을 이해한 뒤에야 비로소 제가 만든 혼란스러운 코드를 파악하고, 정리하고, 작동시킬 수 있었습니다.
Spec‑driven development은 강력하지만…
제가 하고자 하는 바가 명확한 경우가 많았고, 스펙을 전혀 작성하지 않은 “바이브 코딩”이 훨씬 생산적이라는 것을 발견했습니다. 개발 팀 입장에서는 현재로서는 AI용 요구사항 스펙이 PM이나 QA가 작성한 스펙을 대체할 수 없다는 뜻입니다—당분간은 말이죠.
Keep specs small
스펙‑드리븐 개발(Kiro 스타일)을 사용할 때, 저는 최대 네 개의 요구사항까지만 생산성을 유지할 수 있습니다. 스펙당 두세 개의 요구사항이 훨씬 더 잘 맞습니다. 그보다 많아지면 요구사항을 읽고, 솔루션을 설계하고, 생성된 코드를 이해하는 데 필요한 인지 능력이 부족해집니다. 스펙을 나눠서 작성하세요. 그게 전부입니다.
Steering files are very important
제가 찾은 최고의 해킹 방법은 바로 스티어링 파일을 꾸준히 업데이트하는 것입니다. 무언가를 구현하고 난 뒤 스티어링 파일을 최신 상태로 유지하면, AI가 이전에 모호했거나 제가 이미 마음을 바꾼 부분을 이해하는 데 도움이 됩니다. 이전에는 출력 결과를 수정해야 했지만, 스티어링 파일을 업데이트한 뒤에는 처음부터 원하는 결과에 훨씬 가깝게 나왔습니다. 정량적으로 측정하지는 않았지만, 시간 절감 효과가 매우 눈에 띄었습니다.
AI는 조용히 문제를 일으킨다
스티어링 파일과 Kiro가 작업을 구현하기 전에 코드베이스를 검색하고 읽는 과정을 거치더라도, 여전히 문제를 일으켰습니다. 기존 코드를 재사용하는 대신 구현을 새로 만들 수도 있어 숨겨진 불안정성을 초래하고, 실제로 빌드하고 배포할 때까지 눈에 띄지 않는 충돌하는 CSS 규칙을 추가하거나, 앱을 사용할 수 없게 만드는 과도하게 엄격한 보안 설정을 주입하기도 합니다. 또한 Kiro가 과도하게 엔지니어링하는 경향이 있다는 것도 발견했습니다.
실제로 무슨 일이 일어났는지 이해하기 위해, 나는 자주 git에 커밋하여 전체 파일 차이를 비교할 수 있었습니다. 이는 작업 실행 중에 표시되는 작고 흩어진 차이들을 따라가는 것보다 훨씬 쉬웠습니다.
체크포인팅은 과소평가된다
Kiro에는 내가 정말 좋아하는 기능이 있습니다: 체크포인팅. 무언가를 구현하는 중간에 마음이 바뀌면, 채팅과 코드를 모두 이전 시점으로 쉽게 복원할 수 있었습니다. 이것은 기본적으로 코딩을 위한 되돌리기 버튼과 같습니다. 되돌리고 다른 접근 방식으로 다시 시도할 수 있다는 것은 매우 가치가 있으며, 솔직히 말해서, 내가 아직 삶이 있던 시절에 Football Manager에서 세리에 C의 무작위 클럽을 유럽 챔피언으로 만들 수 있었던 이유를 떠올리게 했습니다.
ChatGPT는 Kiro를 위한 스테로이드 부스터
아마도 자동 모델 선택을 사용하고 가끔 약한 모델을 받기 때문일 수도 있지만, 솔루션을 설계할 때 ChatGPT의 추론이 종종 더 뛰어나다는 것을 발견했습니다. Kiro는 당신이 말하는 것을 그대로 받아들이고 바로 구현에 뛰어들기 쉬워 디버깅이 시행착오처럼 느껴집니다. ChatGPT와 함께라면 채팅 기반 상호작용을 통해 충분히 생각할 시간을 가질 수 있습니다. 결국 저에게 가장 좋은 설정은 저와 ChatGPT가 Kiro를 공동으로 관리하면서 실제 작업을 진행하는 것이었습니다.
Humans beat AI in short‑range sprinting
Did I say vibe coding can be more productive? Sometimes the most productive thing is implementing or fixing the code myself, especially when I’m already very clear on what needs to be written. I found that humans—at least me—retain context better than AI for a small project, so I don’t need to keep scanning existing code just to get going. I simply can’t type as fast as the AI.
전과 후
구 사이트
(원본 사이트의 스크린샷 또는 설명)
재구축
(재구축된 사이트의 스크린샷 또는 설명)
무엇보다도, 이제 저는 다른 사람들을 도울 수 있는 탄탄한 기반을 마련했으며 AI 코딩 어시스턴트 사용을 보다 복잡한 것으로 확장할 수 있게 되었습니다.