![Github 변경에 대한 mattermost bot 코드를 Cursor AI 활용해서 재작성하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWGwhf%2FbtsMbBtkHqF%2FYWFCokkCTi5NlTpgRnw740%2Fimg.webp)
Cursor AI를 통해서 코드 재작성 및 배포에 얼마나 효율적인지를 확인해보려고합니다.
일단은 요구사항부터 아래와 같이 정리를 해보겠습니다.
1. 요구사항 분석
Github Review 관련 알림
- PR 생성 감지:
새로운 Pull Request가 생성되었을 때 알림을 전송합니다. - PR 업데이트 감지:
기존 PR에 커밋이 추가되었을 때 업데이트 이벤트를 감지합니다. - 리뷰 추가 감지:
PR에 리뷰가 작성된 경우 알림을 전송합니다. - PR 머지 감지:
PR이 머지되었을 때 해당 이벤트를 체크합니다.
CI/CD 알림
- CI/CD 빌드 실패:
특정 리포지토리의 빌드가 실패하면, Github Actions Summary에서 제공하는 링크(예: 상세 빌드 로그)를 포함하여 알림 메시지로 전송합니다.
데이터베이스 구성
- Postgres 사용:
이벤트 로그나 마지막 처리 시각 등을 기록하기 위해 Postgres를 사용합니다. - PostgREST API:
Postgres에 대한 API 연동은 기존에 존재하는 PostgREST와 같은 API 솔루션을 활용하여 구현합니다.
이 요구사항에 대해서 Cursor AI, Chatgpt에 아키텍처를 요구해보겠습니다.
2. 아키텍처 요구하기
ChatGPT o3-mini의 경우 아래와 같이 나오네요
- Github 정보 Crawler:
- TypeScript로 작성하여 Github API에서 데이터를 가져오고, Mattermost API를 호출하여 알림을 전달합니다.
- DB(Postgres):
- Postgres 컨테이너로 실행합니다.
- PostgREST:
- Postgres DB에 대한 RESTful 인터페이스를 제공하는 PostgREST 컨테이너를 실행합니다.
아래 코드를 참고하여 프로젝트를 구성해보도록 하겠습니다.
이는 Cursor를 써서 해보려고 합니다.
3. 코드 생성
Cursor AI는 여러 개의 코드 파일을 한번에 만들어주네요..
엄청납니다.
그리고 여러파일을 다 읽고 코드를 수정하는 능력 조차 엄청난것으로 보입니다.
거의 프롬프트만 써서 코드를 다짰습니다
물론 바로 돌아가는지는 검증이 필요합니다만 아래와 같은 코드 구조를 프롬프트만 써서 짤 수 있었습니다 ㄷㄷ..
project-root/
____docker-compose.yml
|____github-crawler
| |____Dockerfile
| |____package.json
| |____src
| | |____db.ts
| | |____githubCrawler.ts
| | |____server.ts
| |____tsconfig.json
|____mattermost-notifier
| |____Dockerfile
| |____package.json
| |____src
| | |____db.ts
| | |____mattermostNotifier.ts
| | |____server.ts
| |____tsconfig.json
|____postgres
| |____init.sql
|____scheduler
| |____Dockerfile
| |____package.json
| |____src
| | |____scheduler.ts
| |____tsconfig.json
일부 코드의 경우 어느정도 직접 수정이 필요하지만 이정도는 직접 짜는것보다는 훨씬 쉽기에 참작 가능한 부분이라고 생각이 됩니다.
Cursor를 쓰니 프로그램 개발이 마치 다른사람의 코드 리뷰하는것 같은 느낌입니다.
ray5273/mattermost-github-alarm-bot
GitHub - ray5273/mattermost-github-alarm-bot
Contribute to ray5273/mattermost-github-alarm-bot development by creating an account on GitHub.
github.com
mattermost notifier쪽은 크게 안건드렸는데 webhook링크만 잘 주니까 바로 notify가 잘 가는 모습을 확인할 수 있었습니다.
테스트
아래 기능에 대한 테스트를 진행해봤습니다.
테스트 코드는 아직 어떻게 짜야할지는 모르겠는데 우선은 직접 테스트해서 추가해봤습니다.
기능이 확인되면 각 함수에 대한 테스트 코드를 Cursor AI에게 요구해보려고합니다.
1. PR 커밋 업데이트
2. PR 커맨트 업데이트
3. PR merge
4. 리뷰 업데이트
5. Workflow 실패
workflow는 실패하자마자 해당 데이터가 Github API를 통해서 확인이 되는것 같지는 않았습니다.
일부 시간이 걸리는것 같네요.
Cursor AI vs Github Copilot
1. 기본적으로 Cursor AI는 Copilot에 비해서 UI/UX가 훨씬 좋은것 같습니다.
코드에 대한 질문을 추가하고 코드를 변경할때 git과 같이 diff를 보여주고 적용할지 아닐지를 결정할 수 있는 유저 친화적인 UX를 가지고 있었습니다.
2. 여러 파일을 한번에 수정해줍니다.
여러 파일에 대한 변경들을 한번에 apply해버릴 수도 있어서 상당히 편합니다.
Chat을 통해 여러 코드들을 생성하고 이를 여러파일에 한번에 적용할수도 있고
한줄한줄씩 적용할 수도 있습니다.
3. 문서 조차 여러 코드들을 잘 읽고 깔끔하게 만들어줍니다.
README.md 파일을 만들어 달라고했는데 엄청 깔끔하게 잘 만들어줍니다.
만족스럽네요 ㅎㅎ
실제 코드 결과물은 아래와 같습니다.
ray5273/mattermost-github-alarm-bot
GitHub - ray5273/mattermost-github-alarm-bot
Contribute to ray5273/mattermost-github-alarm-bot development by creating an account on GitHub.
github.com
전체적으로 AI를 엄청나게 잘 만들었다는 생각이 듭니다.
AI도 결국은 어떻게 제품으로 만들어내느냐가 관건인데 체감상 Cursor AI가 코드 작성에 있어서 가장 앞서있다고 생각이 듭니다.
이정도의 MVP 프로그램을 이틀 안에 완성할 수 있다는 점에서 아주 훌륭한 점수를 주고 싶습니다.
다만, 그래도 개발자가 일부 버그나 사소한 부분들을 직접 확인해서 처리해야하는것은 아직까지는 copilot과 동일하긴하다고 느껴집니다.
물론 그것조차 프롬프트로 어느정도 해결은 되니 Copilot 보다 낫다고 결론을 내려봅니다.
'프로젝트 > Github Rest API로 프로젝트 리뷰 대시보드 구성하기' 카테고리의 다른 글
Mattermost alert bot 구현하기 (0) | 2024.02.01 |
---|---|
Mattermost alert bot 설계하기 (0) | 2024.01.31 |
Grafana Dashboard에 Webhook 서버 (Mattermost 봇) 연결해서 알람 봇 만들기 - 작성중 (0) | 2024.01.08 |
mattermost deploy 및 봇 사용해보기 (1) | 2024.01.07 |
NodeJS Express를 통해서 API 서버 구축 및 DB 업데이트 하기 (0) | 2023.12.25 |
개발 및 IT 관련 포스팅을 작성 하는 블로그입니다.
IT 기술 및 개인 개발에 대한 내용을 작성하는 블로그입니다. 많은 분들과 소통하며 의견을 나누고 싶습니다.