6월 26일, GitLab 코리아에서 16번째 밋업을 진행하였습니다. 이날은 평소보다 많은 분이 밋업에 참가해 주었는데요. 아마도 밋업 주제가 상당한 흥미를 불러온 것으로 생각합니다. 이날의 밋업 주제는 ‘GitLab + AI로 생산성 **높이기, 코드 리뷰 자동화’**였습니다.
밋업은 세션 1, 2로 나눠 진행됐습니다. **세션 1에서는 유인철 GitLab 코리아 이사가 ‘GitLab AI Assisted 주요 기능 알아보기’**를 주제로 발표했고요. 주요 내용으로 Code Suggestions, Suggested Reviewers 등 업무에 강력한 도움을 주는 AI 기능을 모은 GitLab Duo를 설명했습니다.
**세션 2에서는 신철호(Dexter) 인포그랩 이사가 ‘GitLab MR에서 코드 리뷰하기 - GPT & Plumber를 활용한 코드 리뷰 자동화’**를 주제로 발표를 진행했습니다. 주요 내용으로 리뷰의 중요성 및 다른 IT 회사의 모범사례, 코드 리뷰 자동화 방안을 설명해 주었고요. 코드 리뷰에 사용하는 도구로 ‘Plumber’도 소개했습니다. Plumber는 CI/CD 파이프라인을 손쉽게 구축하도록 도와주는 제품으로, 인포그랩이 개발했습니다.
최근 AI를 활용한 업무 자동화로 생산성을 높이는 것이 큰 화두인데요. 두 세션 모두 공통적으로 AI를 활용하여 업무를 효율적으로 수행하는 기능 및 방법을 알아보는 시간이었습니다. 이 글에서는 이번 밋업의 주요 발표 내용을 살펴보겠습니다.
세션 1. GitLab이 지원하는 AI 기능
세션 1에서는 GitLab의 주요 AI 기능을 알아봤는데요. 앞서 GitLab AI 기능을 모은 ‘GitLab DUO’를 언급했죠. GitLab DUO는 ‘개인정보보호를 우선시하고 다양한 직군을 만족시키자’라는 GitLab의 주요 원칙에서 비롯됐습니다.
GitLab은 개발 영역뿐만 아니라 운영 영역과 보안 영역까지 AI로 보완하는 것을 목표로 하고 있습니다. 또한 보안 및 모니터링에 이르는 소프트웨어를 빠르게 구축하도록 지원하고 있다고 합니다.
현재 많은 사람이 ChatGPT 등을 활용해 보안·운영 업무를 보완하고 있는데요. GitLab DUO를 이용하면 GitLab 자체 AI 기능을 이 업무에 적용할 수 있겠군요.
GitLab에서는 다음과 같은 기능들이 릴리즈 됐거나 베타 테스트 중 또는 릴리즈 예정이라고 합니다.
이 중에서 저한테 많이 와 닿았던 5가지 기능들이 있는데요. Suggested Reviewers, Code Suggestions, Explain this Code, GitLab Chat입니다.
각 기능들을 간략하게 살펴보겠습니다.
-
Suggested Reviewers
코드 변경 후 리뷰 시 해당 프로젝트 내 Merge Request(MR) 데이터를 참고하여 리뷰어 를 추천해 주는 기능입니다.
Suggested Reviewers를 잘 활용한다면 리뷰어를 찾는 시간을 줄일 수 있고 가장 합리적인 리뷰어 선택이 가능해지겠습니다.
-
Code Suggestions
개발자의 개발 효율성을 향상하는 코드 자동 완성(추천) 기능입니다.
GitHub에서는 ‘co-pilot’이라는 이름으로 비슷한 기능을 지원하고 있는데요. GitLab의 Code Suggestions는 GitHub과 다르게 On-Premise 환경의 GitLab 자체 인스턴스에서도 지원이 된다고 합니다.
-
Explain this code
인라인 코드를 설명하여 코드를 빠르게 이해할 수 있도록 지원합니다. 코드를 더 빠르게 파악하도록 도와주는 기능입니다.
아무리 실력 좋은 개발자라도 다른 사람이 개발한 코드를 이해하려면 정말 오랜 시간이 걸렸는데요. 앞으로 Explain this code를 활용한다면 GitLab에서 빠른 시간 내에 코드를 이해할 수 있겠습니다.
-
GitLab Chat
GitLab에 대한 모든 질문에 답변을 해주는 도구인데요.
GitLab의 특정 기능을 사용하기 위해 설정을 변경하다가 어려운 부분을 만나 시간을 허비한 적이 몇 번 기억납니다. 이때 GitLab Chat을 이용하면 좋겠습니다.
GitLab에 특화된 챗봇이다 보니 ‘GitLab과 관련된 질문에 가장 정확한 답변을 받을 수 있는 AI 챗봇이 아닐까’ 기대됩니다!
이외에도 지속적으로 보안 개선에 도움을 주는 Explain this vulnerability나 이슈를 요약해 주는 Issue summaries, 과거 추세를 기반으로 가치 흐름 지표를 예측하는 Value streams forecasting 등 개발 분야뿐만 아니라 보안, 운영 등 다양한 분야에서 사용 가능한 기능들이 있었습니다.
이러한 기능들을 잘 사용한다면 회사의 업무 효율을 크게 향상할 수 있겠습니다.
세션 2. 코드 리뷰의 중요성 및 자동화 방안
세션 2에서는 ‘코드 리뷰를 왜, 어떻게 해야 하는지’를 알아보고, 코드 리뷰 자동화 방안을 시연했는데요. 신철호 이사는 코드 리뷰를 해야 하는 이유를 다음과 같이 제시했습니다.
- 동기 부여 - 리뷰어에게 피해 주지 않도록 프로의식을 발휘
- 지식 공유 - 양방향 지식 공유로 조직 전체의 기술력 향상
- 오류 발견 - 오류의 사전 발견 가능성 상승
이어 신 이사는 코드 리뷰에서 체크할 포인트로 다음 내용을 소개했는데요.
이는 코드 형식, 테스트, 문서화, 구현, API 정의 5단계로 구분했습니다. 위 그림에서 보다시피 구간별로 체크해야 할 사항들이 피라미드 형태로 나뉘어 있는데요.
자동화 가능한 윗부분과 리뷰에 집중할 아랫부분이 나뉘어 있습니다. 해당 피라미드는 2022년에 트위터에 올라온 코드 리뷰 소개인데요. AI를 활용한다면 더 아랫부분까지 자동화가 가능할 것으로 기대됩니다.
세션 2에서는 좋은 개발 문화가 있는 회사의 코드 리뷰 방식도 살펴봤습니다.
대표적으로 구글, 마이크로소프트(MS)가 있고요. 전 국내 기업 중 위메프와 토스페이먼츠, 뱅크샐러드와 우아한 형제들이 인상 깊었습니다.
먼저 구글의 리뷰 문화를 알아보겠습니다.
구글의 리뷰 문화를 요약하자면
- 모든 코드를
- 사내 정책에 맞는 룰(rule)에 맞춰서
- 최대한 작게, 자주
- 4시간 이내로
리뷰합니다.
MS는 어떨까요?
MS는 하루에 한 번 이상 리뷰하는 사람이 39%나 된다고 하는군요.
구글과 MS 사례의 특징은 ‘코드 리뷰 활동이 정말 많다는 것’입니다.
다시 한번 코드 리뷰 자동화의 필요성을 느꼈습니다.
이번엔 국내 기업을 알아보도록 하겠습니다.
먼저 뱅크샐러드입니다.
뱅크샐러드도 마찬가지로 최대한 작은 MR(PR)을 자주 진행하여 여러 가지 이점을 얻어가고 있습니다.
또한 리뷰어가 쉽게 이해하고 빠르게 리뷰할 수 있도록 변경 사항, 관련 화면, 테스트를 위한 체크리스트 등을 템플릿으로 만들어 협업에 신경 쓴 모습이 인상 깊습니다.
비슷한 사례로 우아한 형제들도 MR 템플릿을 만들어서 사용하고 있고요. 추가로 MR봇을 사용해 ‘어떤 MR들이 있는지’ 알람이 오도록 사용합니다.
마지막으로 토스페이먼츠와 위메프의 사례입니다.
먼저 토스메이먼츠는 ‘Good Review’라는 레이블을 달아서 긍정적인 표현을 해주는 게 인상 깊습니다.
위메프는 자세한 리뷰와 이 모티콘 사용을 권장하는 문화가 있군요.
제가 위메프의 코드 리뷰 사례에서 눈여겨본 점은 ‘이모티콘을 자주 쓰자’인데요. 토스페이먼츠의 ‘Good Review’ 레이블과 동일한 목적으로 보입니다.
사실 리뷰가 딱딱한 분위기에서 진행된다면 리뷰를 받는 주니어의 입장에서 ‘혼나는 상황’이라고 생각하는 등 자칫 오해의 소지가 있을 수 있습니다.
이때 이모티콘을 사용한다면 서로 좋은 분위기에서 리뷰를 진행해 긍정적인 리뷰 문화를 안착하니 좋은 아이디어라고 생각합니다.
앞서 알아본 모범 사례들을 요약하자면 ‘코드 리뷰는 최대한 많이, 자주, 긍정적인 분위기로 진행하는 게 공통 목표인 것’을 알 수 있습니다.
이렇듯 현재 IT 업계에서는 코드 리뷰가 정말 많이 진행되고 있습니다. 코드 리뷰를 자동화한다면 업무 생산성을 높일 수 있지 않을까요?
이어서 신철호 이사는 코드 리뷰 자동화 방안을 제시해 주었습니다. 이때 사용한 도구로는 GitLab, ChatGPT 그리고 Plumber가 있습니다.
참고로 Plumber는 CI/CD 파이프라인 밀키트로, 인포그랩이 개발했습니다. 이는 약 30개의 프로덕션 환경에서 쓸 수 있는 CI/CD 파이프라인을 약 70개의 잡(job)으로 구성한 템플릿인데요. Plumber를 활용하면 CI/CD 파이프라인을 더 손쉽게 구축할 수 있습니다.
GitLab, ChatGPT API 그리고 Plumber를 활용한 코드 리뷰 자동화 흐름은 다음과 같습니다.
흐름을 요약하자면 이렇습니다.
- 코드 작성 후 MR 생성, 해당 MR에 /review-all 코멘트 작성
- /review-all 코멘트로 리뷰 작성 봇을 실행하는 트리거 웹훅 실행
- 리뷰 작성 봇에서 파이프라인 동작, ChatGPT-API로 리뷰 작성
다음은 GitLab, ChatGPT 그리고 Plumber로 코드 리뷰 자동화를 시연한 화면입니다.
시연에서 알 수 있었던 점은 다음과 같습니다.
- 적절한 프롬프트(ChatGPT에 요청하는 문구)를 사용하는 것이 중요하다.
- 코드가 외부(ChatGPT)에 유출되는 것을 조심해야 한다.
- 코드 리뷰를 전적으로 AI에 의존하기에는 AI 성능이 아직 부족하다.
따라서 코드 리뷰를 완벽히 AI로 대체하는 것보다는 1차적으로 AI를 사용해 코드 리뷰를 받고 이후 원래 프로세스대로 리뷰어에게 코드 리뷰를 받는 것도 좋은 방법이라고 생각합니다.
또한 회사의 자산(코드)이 외부(ChatGPT)로 유출되는 것을 인지하여 대체 방안을 고민해 봐야겠습니다.
아직 부족한 점도 있습니다. 다만 중요한 것은 이제는 AI를 활용하지 않는다면 도태된다는 것이겠죠.
이번 GitLab 밋업에서 AI의 중요성을 다시 한번 깨닫게 됐습니다.