- 개요
- 인공지능으로 서비스 개발하기
- 중요한 건, ‘비즈니스 그 자체’
- 업무지시 1 : localStorage에서 indexedDB로 변경하기
- 업무지시 2 : 개선된 Flow
- 업무지시 3 : 자동화된 테스트
- 느낀점
인공지능으로 서비스 개발하기
요즘에 하나 생각한 서비스가 있다. 오픈 전 까지는 어떤 서비스인지 말할 수 없지만, 대략적인 방향은 ‘기록’ 앱이다. 처음 아이데이션은 ChatGPT와 함께 대화를 나누며 진행했다. 대략적인 방향은 내가 정하고, 이야기를 나누면서 디테일에 대한 영감을 받는 식이었다. 처음에는 이런식으로 아이디어만 정하고 개발은 내가 하려고 했다. 하지만 요즘에 바이브코딩을 하는 사람들이 많이 보인다. 그리고 인공지능을 통한 개발도구들도 어느정도 구색을 갖추기 시작한 것 같다. 그러던 차에 클로드 코드 개발자가 추천하는 인공지능으로 개발하는 방법론을 유튜브로 접했다. 간단하게 말하면, 사람에게 일을 시키는 방식, 주로 ‘TDD’기법으로 가이드라인을 잡으라는 것이었다. 예시가 되는 CLAUD.md도 제공을 해줘서, 해당 가이드라인으로 인공지능을 통해 개발해보기로 했다.
중요한 건, ‘비즈니스 그 자체’
그렇게 개발을 인공지능에 위임하고 나니, 내가 해야하는 건 ‘기획’이구나, 라는 생각이 들었다. 인공지능이 개발을 대신 해줄 수는 있었지만, 내 비즈니스를 만들어줄 수는 없었다. 물론, 개중에는 비즈니스 기획마저 인공지능에게 맡기는 케이스도 있다고 들었지만, 그런 부분을 잘 알지는 못하기 때문에, 일단은 내가 생각해야하는게 옳은 것 같다. 그렇게 멈춰 있던 개발을 재개하면서, 몇 가지 기능을 다듬기로 했다. 그리고 그전에, PRD라는 것에 대해 대략적으로 찾아봤다. 서비스의 목적, 방향성, 타겟, 등등 필요한 기획을 정리해둔 문서라고 한다. 이런 걸 잘 정리해두는게 인공지능의 맥락을 제대로 살려줄 수 있다고 생각됐고, ChatGPT의 도움을 받아, 그간의 문서를 기반으로 새롭게 정리해두었다.
업무지시 1 : localStorage에서 indexedDB로 변경하기
최초로 작업을 맡긴 건 데이터 저장과 관련된 부분이었다. 최초에 방향을 정할 때, 이 앱을 애자일하게 만들고 싶었다. 때문에 백엔드를 두기보다 프론트엔드 중심으로 데이터는 브라우저에 저장하고자 했다. 그때 처음 떠올렸던게 localStorage였다. 그런데 웬걸 유튜브에서 indexedDB에 대한 소개를 발견했다. 영상을 모두 보지는 않았지만, 이름만 봐도 내가 원하는 기능이라고 생각했다. 해당 프로젝트에는 아직 테스트가 구성되어 있지 않았는데, 가이드라인은 TDD를 기반으로 하기 때문에, 에이전트는 가장 먼저 테스트를 셋업했다. (물론, 그 전에 플래닝을 먼저 실시했다.) 셋업이 완료되고, 내가 지시한 작업을 진행했다. 완료가 되고, 외형은 물론 변하지 않았지만, 개발자 도구를 통해 indexedDB의 사용을 확인할 수 있었다.
업무지시 2 : 개선된 Flow
이후 작업은 flow를 개선하는 것이었다. 청사진상의 일부였는데, 일단은 가장 실행이 가능한 형태로 text input만 받게 되어 있던 부분을, Date input, Currency Input, Textarea등으로 분화하도록 했다. 그리고 flow자체의 모난부분들도 정리했다. 그리고 하나의 마크다운 문서로 정리했고, 해당 문서를 토대로 개발을 지시했다. 머지않아 작업이 완료되었고, 결과물은 의도한대로 만족스러웠다.
업무지시 3 : 자동화된 테스트
마지막 작업은 자동화된 테스트를 지시했다. 내가 해보고 싶었던 것인데, Storybook을 통해 컴포넌트 단위로 UX flow를 렌더링하고, 해당 flow의 process를 검증하는 것이었다. 이렇게 하는 이유는 User Flow의 특정 부분이 맥락에서 격리된 채 실행될 수 있기 때문이다. 가령 로그인이 필요한 플로우의 경우 매뉴얼 테스트에서 로그인 정보가 없거나한 경우 난감하게 된다. MSW를 통해 해결할수도 있겠지만, 설정하는 리소스도 비용이고, 만약 자동화라도 하게 된다면 설정이 꽤나 복잡해진다. 이런 이유들로 인해서 Storybook을 기반으로 플로우를 관리하고, 플로우를 playwright를 통해 자동으로 테스트하도록 지시하였다. 이 때는 특정 문서 없이 말로만 지시하였는데도, 스스로 storybook을 설치하고, playwright와 연계한 테스트를 작성하였다. 솔직히 제대로 해줄지 의문이었는데, 모든 것이 제대로 작동했고, 에이전트가 짠 코드를 보면서 몇 가지 배울점도 있었다. story를 stories디렉토리가 아닌 컴포넌트 디렉토리에 놓는 것이라던지, 관련 설정, 그리고 playwright에서 error시에 video와 screenshot, 로그 등을 저장하게 하는 방법 등이었다.
느낀점
시대가 참 빠르게 변하고 있다는 생각이 든다. 1년 전만 하더라도 나는 인공지능으로 도저히 개발을 할 수 없다고 생각했다. 그런데 지금은 인공지능 자체 뿐만 아니라, 방법론도 많이 발전하여 믿고 맡길 수 있는 수준이 된 것 같다.
이렇게 일련의 작업을 해놓고 보니, 최근 주니어 개발자가 쉽지 않은 이유도 알 것 같다. 지금 인공지능을 통해 개발하는 이 방식이, 시니어가 팀원에게 일을 주는 방식이기 때문이다. 시니어가 올바른 개발의 방향성을 알고, 그리고 그것에 대해 정리하면 주니어가 구현을 담당하던 구조는 이미 끝나버린 것이다. 그렇기 때문에 요즘 개발자는 구현 그 자체보다 코드와 비즈니스의 방향성, 규칙 등을 정의하는데 보다 날카로워져야하는 것 같다.
그런 측면에서 나는 코드를 리뷰하거나, 방향성을 문서로 정리하는 것 보다, 스스로 만들고 보여주고, 설명하는 것에만 치중했던 것 같다. 물론 팀의 규모에 따라 그렇게 할 수는 있었겠지만, 내가 그리는 미래에는 보다 정교한 방법이 필요하고 요구된다. 팀과 일하는 것이라고 생각하고, 인공지능을 활용하여 이 프로젝트를 잘 마무리 해봐야겠다.