AI로 코드를 만드는 시대에, 나는 출시하는 법을 가르치려 한다
인프런에 올릴 ‘AI 에이전트로 프로덕션 풀스택 출시하기’ 강의를 만들고 있다. 요구사항 정리부터 검증, 테스트, 배포와 운영까지 끝내는 과정을 강의로 만들려는 이유와 현재 진행 상황을 기록한다.
인프런에 올릴 ‘AI 에이전트로 프로덕션 풀스택 출시하기’ 강의를 만들고 있다. 아이디어의 범위를 정하고, AI와 함께 구현한 결과를 검증한 뒤, 실제 서비스로 배포하는 과정을 다루려 한다.
커리큘럼은 두 차례 크게 수정했고 첫 수업의 슬라이드와 스크립트 초안을 만들었다. 실습 서비스와 수업별 결과물도 정리했다. 이제 수강생이 직접 실행하고 참고할 완성 저장소를 만들어야 한다.
이 글에는 강의를 만들기 시작한 이유와 가르치려는 내용, 현재 진행 상황을 적었다. 글과 강의로 수입을 얻을 방법을 고민하게 된 이유는 이전 글에 정리했다.
코드를 만든 뒤에도 해결할 일이 남는다
AI 코딩 도구의 도움을 받으면 화면이나 API를 빠르게 만들 수 있다. 하지만 기능이 늘어날수록 각 부분이 같은 조건으로 동작하는지 확인해야 한다.
화면은 성공으로 표시하는데 API는 실패를 반환하거나, 데이터베이스에 중복 데이터가 저장될 수 있다. 로컬에서 실행되던 코드가 배포 환경에서는 환경변수 설정 때문에 멈추기도 한다. AI가 작업을 마쳤다고 해도 주요 사용자 동작을 테스트하지 않았다면 실제로 쓸 수 있는지 알기 어렵다.
부트캠프에서 풀스택을 가르치고 프로젝트를 멘토링할 때도 비슷한 문제를 봤다. React와 API를 사용할 줄 알아도 이번 버전에 넣을 기능, 프론트엔드와 백엔드의 데이터 규격, 배포 전 확인 기준을 정하지 못해 프로젝트가 끝나지 않는 경우가 있었다.
AI로 생성하는 코드가 많아지면 검토할 내용도 많아진다. 어떤 변경을 반영하고 무엇을 수정해야 하는지 판단하는 과정이 필요하다. 강의에서는 AI와 함께 서비스를 완성하고 배포하는 방법을 가르치고 싶다.
혼자서는 배포까지 끝내지 못한 개발자를 위해
React나 API의 기본을 배우고 Git으로 코드를 관리해 봤지만, 프로젝트가 CRUD 데모나 로컬 실행에 머물러 있는 사람을 대상으로 생각하고 있다.
포트폴리오에 실제 운영 가능한 서비스를 추가하고 싶은 부트캠프 수료생과 1~3년차 개발자, AI로 기능을 구현해도 구조와 품질을 관리하기 어려운 사람에게 도움이 되면 좋겠다. 그래서 서비스 하나를 완성하는 작업 순서와 각 단계의 완료 기준을 다루려 한다.
강의를 마치면 공개된 서비스 주소와 실행 가능한 저장소를 남기는 것이 목표다. 요구사항 문서, API와 데이터 규격, 자동 테스트 결과, 실패 기록, 배포 절차와 운영 안내서도 함께 정리하도록 구성하고 있다.
실습 프로젝트는 SignalDesk
실습 서비스의 이름은 가칭 SignalDesk다. 공개 데이터나 강의에 포함된 합성 이벤트 데이터를 모아 주제별 브리핑을 만드는 웹 서비스다.
목록과 상세 화면을 구현하면서 데이터의 중복 저장을 막고, AI 응답이 정해진 형식인지 검증하는 기능을 만들려 한다. 응답이 잘리거나 늦어질 때 실패를 감지하고, 어떤 모델과 프롬프트를 사용했는지도 기록한다.
핵심 실습은 외부 API 키 없이도 실행할 수 있게 설계하고 있다. 합성 데이터와 미리 준비한 AI 응답을 사용하는 모의 실행 모드를 제공하고, 실제 AI API 연결은 선택 실습으로 다룬다.
테스트 데이터에는 정상 입력과 함께 중복 데이터, 잘못된 날짜, 필드가 빠진 AI 응답, 타임아웃 사례도 넣을 생각이다. 오류를 직접 발생시키고 처리해 보면서 실패 원인을 찾는 연습을 하게 하려는 것이다.
커리큘럼은 다음 여덟 단계로 정리했다.
- 이번에 구현하고 배포할 기능의 범위를 한 페이지로 정리한다.
- AI가 참고할 저장소 규칙과 금지사항, 완료 조건을 작성한다.
- 화면·API·데이터베이스·AI 기능 사이의 데이터 형식과 처리 규칙을 정한다.
- 목록에서 상세로 이어지는 최소한의 사용자 동작을 구현한다.
- AI 응답 검증, 실행 이력, 재시도와 중복 방지로 실패를 감지하고 복구하는 기능을 만든다.
- 단위·통합·E2E 테스트와 코드리뷰로 AI가 만든 변경을 검증한다.
- 개발·운영 환경을 나누고 배포한 뒤 로그, 비용, 롤백과 장애 대응 절차를 정리한다.
- 공개 URL과 테스트 결과를 포트폴리오에서 설명할 수 있게 정리한다.
AI의 결과를 판단하는 과정을 보여 주기
특정 도구의 버튼과 명령어만 설명하면 제품이 바뀔 때 강의 내용도 빠르게 오래된 정보가 된다. 목표를 정하고 결과를 검증하는 과정을 수업에서 반복해서 보여 주려 한다.
먼저 사람이 작업의 목표와 제약, 완료 조건을 정한다. AI에는 읽을 범위와 수정하면 안 되는 부분을 알려 준다. 설계나 코드 변경이 나오면 변경 내역과 근거를 확인하고, 테스트와 실제 실행으로 결과를 판단한다. 기준을 통과하지 못하면 실패 원인을 찾아 다시 수정한다. 통과하면 결정한 이유와 검증 결과를 기록하고 다음 작업으로 진행한다.
코드가 생성되는 화면은 짧게 편집하되, 잘못된 제안을 발견한 이유와 테스트가 실패한 원인, 기능 범위를 줄인 판단은 설명하려 한다. 배포된 화면을 직접 확인하는 과정도 보여 주고 싶다. 수강생이 자기 프로젝트에서도 같은 방식으로 결과를 검증할 수 있게 하는 것이 목적이다.
완성 서비스를 먼저 만들고 수업을 구성하기
처음에는 커리큘럼을 정한 뒤 순서대로 녹화하려 했다. 지금은 SignalDesk의 완성본을 먼저 개발하고 배포하려 한다. 그 과정에 필요한 문서와 테스트, 실패 사례, 복구 절차를 모은 뒤 수업 순서를 정할 생각이다.
강의부터 녹화하면 나중에 구조를 바꿀 때 앞 수업도 다시 촬영해야 할 수 있다. 실제 개발에 필요하지 않은 절차를 가르치게 될 수도 있다. 내가 먼저 전체 과정을 끝내 보고 수강생이 따라 할 수 있는지 확인하려 한다.
이를 위해 시작 저장소와 단계별 결과물, 오류를 재현하는 테스트 데이터, 테스트와 배포 절차를 준비하고 있다.
범위와 실습 자료를 정하는 일
로그인, 결제, RAG, 벡터 검색, 멀티에이전트, Docker 등 다룰 수 있는 주제는 많다. 모두 포함하면 강의를 완성하기 어렵고 수강생이 구현할 내용도 늘어난다. 첫 강의에는 핵심 사용자 동작과 AI 응답 검증, 테스트와 배포에 필요한 내용을 우선 포함하기로 했다.
촬영에 사용할 AI 도구도 정해야 한다. 우선 내가 가장 익숙한 도구 하나로 실습 환경을 맞추려 한다.
강의용 코드와 데이터는 새로 만들어야 한다. 현업 저장소나 고객 데이터, 내부 문서를 사용하지 않고도 실제 개발에서 겪는 오류를 재현할 수 있는 예제가 필요하다. 누구나 내려받아 같은 조건으로 실행할 수 있도록 준비하려 한다.
현재 진행 상황과 다음 작업
강의 대상과 학습 목표를 정했고, 본편을 여덟 개 섹션으로 나눈 커리큘럼 v0.2를 작성했다. 첫 수업 ‘이 강의가 해결하는 문제’의 슬라이드와 스크립트 초안도 만들었다. SignalDesk의 기능 범위와 수강생 미션, 최종 제출물, 자기평가 기준을 정리한 상태다.
다음은 완성 저장소를 만드는 일이다. 목록과 상세 화면을 구현하고, AI 응답이 잘리거나 늦어지는 상황을 테스트한 뒤 배포까지 확인하려 한다. 이후 완성 화면과 프로젝트 정보, 실패 복구 과정을 설명하는 파일럿 수업을 녹화할 생각이다.
제작 계획을 공개했으니 실제 결과도 보여 주고 싶다. 수강생이 강의를 따라 한 뒤 자신의 서비스를 배포할 수 있도록, 나부터 그 과정을 끝내 보려 한다. 다음 제작 기록에는 SignalDesk에서 구현하고 검증한 기능을 구체적으로 적을 수 있으면 좋겠다.