오늘은 제가 최근에 전화 면접과 과제를 하면서 AI 활용도에 대해서 묻는 질문을 많이 받아서 AI를 좀 더 잘 활용해보자
라는 생각이 들어 n8n이라는 것을 사용하게 되었습니다
n8n? 그게 뭐임
AI 기능도 붙일 수 있고, 반복 업무도 자동으로 처리해주는 워크플로 도구입니다
쉽게 말하면 여러 앱과 서비스를 연결해서 사람이 하던 일을 자동으로 대신하게 만드는 프로그램입니다
이 도구는 정말 어마어마한 확장성을 가지고 있다고 개인적으로 말할 수 있을거 같습니다
장점
- 잘 사용하면 작업 속도가 매우 빨라집니다
- 다른 서비스와 잘 조합되어 사용 가능합니다
단점
- 잘 사용하지 못하면 오히려 더 오랜 시간이 걸리고 작업이 늘어납니다
- 초기 세팅이 귀찮고 힘들 수 있습니다
- 100% 신뢰할 수 없습니다
어떻게 활용했을까?
저는 총 3가지 파이프라인을 구성했습니다
순서대로 하나씩 말씀 드리겠습니다
기획 파이프라인
- 매주 월요일 9시에 열려있는 이슈와 최근 커밋을 조회합니다
- 앞에 조회한 결과로 Gemini에게 보낼 payload를 생성합니다
- Gemini에게 기획 아이디어를 요청합니다
- 아이디 데이터를 정리합니다
- Github Issue에 등록 해줍니다
- 이슈들을 정리해서 디스코드 웹훅을 이용해서 전달합니다
- 괜찮은 이슈를 골라 ai-implement 라벨을 달아줍니다
개발 파이프라인
개발 파이프라인도 만들어두었는데 이건 자동화 하는 것이 비효율적인 것 같다고 느껴져서 추후에 제거하게 되었습니다
그래도 어떤 흐름으로 진행 되었는지 말씀 드리자면
- 깃허브에서 ai-implement 라벨이 달린 이슈를 찾아서 가져옵니다
- 이슈들 중에 ai-pr-created 라벨이 없는 이슈를 찾아 한가지를 선택합니다
- 선택한 이슈에 ai-implementing 라벨을 추가합니다
- 깃허브에서 구현에 필요한 기존 코드 읽어줍니다
- 파일 내용 디코딩을 하여 Gemini 프롬프트를 생성합니다
- Gemini에게 구현을 요청하고 응답을 받아 파싱합니다
- 새 ai/~~ 브랜치를 생성하여 commit, push, pr 생성을 합니다
- draft로 변경 후 ai-pr-created 라벨 추가하고 ai-implementing, ai-implement 라벨은 제거합니다
- Discord로 구현 완료 알림을 전송합니다
자동 수정 파이프라인
- PR 리뷰를 웹훅 수신으로 계속 확인합니다
- Gemini 봇 리뷰인지 확인합니다
- PR 정보 추출하여 코멘트와 변경사항을 조회합니다
- 리뷰/파일/코멘트 컨텍스트 정리하고 수정할 내용이 있다면 진행합니다
- 현재 변경 파일을 한 번 더 확인하고 Gemini에 리뷰 반영과 CI 수정 요청을 진행합니다
- 수정 결과를 파싱하고 한 번에 커밋 후 PR 코멘트를 작성합니다
- Discord 알림 전송합니다
코멘트 기반 수정 파이프라인
공통 시작
- PR 코멘트 이벤트를 수신합니다
- 새 코멘트인지 확인합니다
- /fix-build, /fix-lint, /fix 중 하나 감지합니다
/fix-build
- PR 파일 + CI 실패를 조회합니다
- Gemini로 빌드/타입 수정합니다
- 수정 파일 있으면 한 번에 커밋합니다
- auto-format workflow 실행합니다
- PR 코멘트를 작성합니다
/fix-lint
- PR JS/TS 파일을 조회합니다
- Gemini로 Prettier 포맷 수정 합니다
- 수정 파일 있으면 한 번에 커밋합니다
- PR 코멘트를 작성합니다
/fix
- 원본 리뷰 코멘트를 조회 합니다
- 해당 파일 + 관련 파일을 읽어 파악합니다
- Gemini로 리뷰 코멘트를 반영합니다
- 수정 파일 있으면 한 번에 커밋합니다
- auto-format workflow 실행합니다
- 리뷰 코멘트에 답글 작성합니다
글을 마치며
매일매일 하던 생각이 AI 시대에 맞게 제가 AI를 잘 활용하고 있는지 고민했었는데 이런 좋은 기능을 사용해서 AI를 적극적으로 활용해 제 프로젝트를 유지보수할 수 있어서 너무 좋았던거 같습니다
하면서 계속 ci가 터지거나 여러 이슈를 한 번에 가져와버린다던지 여러 오류들이 있어서 조금 힘든 점도 있었지만 다른 것도 자동화 하고 싶은 마음이 가득해지는 경험이었습니다