지난 3월 7일 서울 강남 파이낸스센터 21층 대회의실에서 GitLab 코리아 19번째 밋업이 열렸습니다. 밋업 주제는 ‘AI와 옵저버빌리티로 개발자 생산성 UP!’이었는데요. 이 자리에서는 두 기술로 개발자 생산성을 극대화하고, 개발 워크플로를 효율적으로 개선하는 방법을 소개했죠.
이날 밋업은 기조연설과 세 개 세션으로 진행됐습니다. 구도완 구글 클라우드 ISV 파트너 리드가 ‘Better together with GitLab and Google Cloud’를 주제로, GitLab과 구글 클라우드 간 파트너십을 설명했고요. 구글 클라우드의 머신러닝 플랫폼인 Vertex AI와 이를 GitLab에 적용한 사례도 발표했습니다.
세션 1에서는 윤영진(Andy) 인포그랩 백엔드 엔지니어가 ‘개발자를 위한 GitLab AI 핸즈온’을 주제로, GitLab AI 기능 모음인 GitLab Duo를 소개했고요. 세부 기능인 Code Suggestions의 핸즈온을 진행했습니다. 또 GitLab Duo Chat과 Repository X-Ray 사용 예시를 설명했고요.
세션 2에서는 손성훈(Jeff) 인포그랩 DevOps 엔지니어가 ‘Google Vertex AI를 활용한 공식 기술 문서 번역 사례’를 주제로, 구글 생성형 AI 모델 Gemini를 활용한 기술 문서 ‘번역용 AI’ 설계 방식을 발표했습니다. 아울러 번역 비용 최적화 방법, 대규모 번역 자동화 시 유의 사항도 공유했죠.
세션 3에서는 조성민(Rei) 인포그랩 DevOps 엔지니어가 ‘백엔드 엔지니어를 위한 O11y 사례’를 주제로, 옵저버빌리티 개념과 작동 방식을 설명했고요. 옵저버빌리티를 활용하는 방법을 시연했죠. 이날 밋업의 주요 발표 내용을 살펴보겠습니다.
GitLab과 구글 클라우드 AI 협력
GitLab Duo에서 활용하는 대규모 언어 모델(LLM) 목록. 출처=GitLab기조연설에서는 GitLab과 구글 클라우드 간 파트너십, 구글 클라우드의 머신러닝 플랫폼 ‘Vertex AI’를 GitLab에 적용한 사례를 다뤘는데요. 지난해 구글은 대화형 AI 챗봇 ‘Bard’를 출시했고요. 이를 ‘Gemini’로 리브랜딩했습니다. 아울러 구글은 Vertex AI를 운영하는데요. Vertex AI의 모델 가든에서 사용하고 싶은 모델을 고를 수 있고요. 이를 파인 튜닝하고 최적화하면 AI 서비스를 개발할 수 있습니다.
구글은 GitLab을 포함해 여러 기업 과 생성형 AI 생태계를 구축합니다. GitLab AI 기능 모음인 GitLab Duo는 Vertex AI가 제공하는 파운데이션 모델을 활용하는데요. GitLab Duo의 Code Suggestions 기반 모델인 Codey가 그중 하나죠. 구도완 구글 클라우드 ISV 파트너 리드는 “GitLab은 구글 클라우드를 잘 활용하는 회사 중 하나”라고 말했습니다. GitLab.com(SaaS 버전)은 구글 클라우드에서 돌아가고요. 이제 GitLab은 구글 클라우드와 파트너십을 AI로도 확대하고 있습니다.
위 이미지는 GitLab Duo에서 활용하는 대규모 언어 모델(LLM) 목록인데요(2024년 3월 27일 기준). Code Suggestions 외에도 Git Suggestions, Merge Request Template Population, Merge Request Summary, Code Review Summary, Vulnerability Explanation, Vulnerability Resolution, Code Explanation, GitLab Duo Chat, Root Cause Analysis에서 Vertex AI의 Codey를 사용합니다.
GitLab AI로 개발 간소화하기
GitLab AI 아키텍처. 출처=GitLab세션 1에서는 GitLab AI 기능 모음인 GitLab Duo 기능과 세부 기능인 Code Suggestions 핸즈온, GitLab Duo Chat과 Repository X-Ray 사용 예시를 소개했습니다. GitLab Duo는 Code Suggestions(코드 제안), Code Review Summary(코드 리뷰 요약), Merge Request Summary(MR 요약) 등 다양한 AI 기능을 제공하는데요. 특히 Code Suggestions는 현재 GA(Generally Available) 버전으로 이용할 수 있습니다. 이 기능을 사용하려면 GitLab 티어(tier)가 Premium 이상이어야 하죠.
윤영진(Andy) 인포그랩 백엔드 엔지니어는 세션에서 GitLab AI 아키텍처를 설명했는데요. IDE부터 서드 파티 AI 모델까지 통신 과정을 짚었습니다. 먼저 IDE에서 SaaS나 자체 관리형 GitLab 인스턴스에 데이터를 전달하고요. 그다음, 이 인스턴스에서 AI 게이트웨이에 프롬프트와 텔레메트리를 전달합니다. AI 게이트웨이에서는 서드 파티 AI 모델에 프롬프트를 전달하는데요. 이때 Anthropic과 구글 Vertex AI의 모델을 사용하죠. 그다음, AI 모델에서 AI 게이트웨이로 프롬프트 결과를 전달하고요. AI 게이트웨이에서는 GitLab 인스턴스로 결과를 전달합니다. 마지막으로 GitLab 인스턴스에서 IDE로 결과를 전달하고요.
GitLab이 ‘프롬프트가 포함된 컨텍스트’와 ‘텔레메트리’를 어떻게 다루는지 궁금할 수 있는데요. 윤 엔지니어에 따르면, 컨텍스트와 관련해 조직을 식별할 수 있는 데이터는 전송하지 않고요. GitLab은 AI 응답을 생성하기 위해 데이터를 사용한 다음, 이를 폐기합니다. 텔레메트리와 관련해 고객 데이터는 저장되지 않고요. 이 데이터는 익명화돼 ‘누구에게서 온 데이터인지’ 알 수 없죠. 앞서 GitLab이 Anthropic의 AI 모델도 사용한다고 언급했는데요. Anthropic은 데이터를 바로 폐기하고요. 구글도 사용자 데이터를 저장하지 않고 즉시 폐기한다고 합니다.
GitLab Duo Chat 기능. 출처=GitLab이어서 윤 엔지니어는 GitLab Duo의 세부 기능인 Code Suggestions 핸즈온을 선보였습니다. 핸즈온에서는 NestJS 프로젝트에 Code Suggestions 도움을 받아 API를 만드는 작업을 진행했죠. React 프로젝트에 Code Suggestions 도움을 받아 로그인 컴포넌트를 만드는 작업도 데모로 선보였습니다. 아울러 Repository X-Ray 활용법도 살펴봤는데요. 이는 Code Suggestions를 더 정밀하게 사용하는 부가 기능이죠. Repository X-Ray는 프로젝트 소스 코드 중 go.mod
, package.json
과 같이 프로젝트를 정의하는 구성 파일을 분석하고요. 이 파일을 읽어 프로젝트 코딩 패턴, 코딩 스타일에 맞게 코드를 추천해 줍니다.
마지막으로 GitLab AI 어시스턴트 기능인 GitLab Duo Chat 활용법도 알아봤는데요. GitLab Duo Chat은 효율적으로 개발하는 데 도움이 되는 기능을 지원하죠. 윤 엔지니어는 세부 기능으로 이슈와 에픽 요약, 코드 취약점 파악, 코드 요약, 소스 코드 리팩토링, 테스트 코드 작성 기능을 소개했습니다. 그는 “Code Suggestions를 사용하면 풀 스택 개발을 할 수 있다”며 “GitLab Duo는 보안을 지키면서 개발자 생산성을 높이고, 이는 기업 생산성과도 연결될 것”이라며 발표를 마무리했습니다.
Gemini로 GitLab 기술 문서 번역 끝내기
Gemini 1.0 Pro를 활용한 GitLab 공식 기술 문서 번역 자동화 아키텍처세션 2에서는 구글 생성형 AI 모델인 Gemini 1.0 Pro로 GitLab 공식 기술 문서 ‘번역용 AI‘를 설계한 방식을 발표했고요. 번역 비용 최적화 방법, 대규모 번역 자동화 시 유의 사항도 다뤘습니다. 참고로 인포그랩은 GitLab 기술 문서 총 2000여 개를 생성형 AI 모델로 번역해 사이트에서 제공하는데요. 바로 ‘GitLab 공식 기술 문서 한글판 by 인포그랩’이라는 서비스입니다. 인포그랩은 다양한 생성형 AI 모델에 관심이 있고요. 이를 업무에 활용하는 방안을 검토 중입니다. 세션 2에서는 구글 Gemini로 GitLab 기술 문서 번역을 테스트한 사례를 공유했어요.
손성훈(Jeff) 인포그랩 DevOps 엔지니어는 Gemini 기반 번역 자동화의 전체 아키텍처를 먼저 설명했습니다. 위 이미지 왼쪽에는 GitLab 기술 문서 원본 소스 코드와 문서, 오른쪽에는 인포그랩의 GitLab 공식 기술 문서 한글판 소스 코드와 문서가 있습니다. 아래 중간에는 ‘CPTL’이란 봇이 있죠. 여기에는 기술 문서 번역 정책을 탑재합니다. 이를 Gemini 1.0 Pro와 연동하는데요. 그다음, Gemini 1.0 Pro에 번역을 지시하면 자동 번역 결과를 받을 수 있습니다. 그다음 번역 결과를 커밋하는데요. 커밋되면 파이프라인이 자동으로 실행되고, S3로 배포되고요. 마지막으로 사용자가 GitLab 공식 기술 문서 한글판 사이트에서 번역 결과를 보는 구조입니다.
Gemini 1.0 Pro에 주입할 번역용 프롬프트 구성Gemini 1.0 Pro로 GitLab 기술 문서를 번역하려면 먼저 프롬프트를 작성해야 하는데요. 손 엔지니어에 따르면, 이는 Instructions, Directions, Examples, Data Input으로 이뤄집니다. Instructions에는 AI 정체성과 역할, 목표를 작성하고요. Directions에서는 AI가 번역할 때 지켜야 할 규칙을 순번으로 제시하죠. Examples에는 번역 예시를 담고요. Data Input에는 번역하려는 마크다운 문서를 입력합니다. 손 엔지니어는 프롬프트에 Examples를 작성할 때, “AI가 일반적 케이스는 다 학습했기에 AI가 모를 법한 내용, 특수한 케이스를 넣으라”고 제언했죠.
그러나 세세하게 프롬프트를 작성해도 번역 결과에 문제가 있을 수 있다고 합니다. 손 엔지니어는 그 고충을 이렇게 털어 놓았는데요. 사내 용어 정책에 맞지 않게 번역되는 게 대표적입니다. 예를 들어, 인포그랩은 ‘Technical Account Manager’를 ‘테크니컬 어카운트 매니저’로, ‘authenticate yourself’를 ‘본인 인증’으로 번역하는데요. AI는 이를 ‘기술 계정 관리자’, ‘나 자신을 인증한다’로 각각 번역하기도 하죠. 참고로 인포그랩은 수백 개의 기술 용어 표기 지침을 두고 있는데요. 손 엔지니어는 “이게 너무 많아서 AI에 다 주입하기가 어려웠다”고 밝혔습니다.
아울러 번역할 때마다 번역 결과가 달라지는 문제도 있죠. 예를 들어, AI가 어떨 때는 ‘사전 요구 사항’으로 번역했다가, 다른 때는 ‘전제 조건’이라고 번역하기도 합니다. 둘 다 맞는 표현이지만 문서마다 같은 용어를 다르게 번역하면 문서 전체의 통일성이 떨어지죠. 문서 품질 측면에서 조심스러운 부분입니다. 또 텍스트가 너무 길어 번역이 중단될 때도 있다는데요. ‘오류가 났다’는 메시지가 나오지 않고요. 번역이 중단된 상태로 커밋되는 일도 있었다고 합니다.
Gemini 가격 정책. 출처=구글그래도 AI를 사용하면 비용 효율적으로 대규모 문서를 자동 번역한다는 장점은 확실합니다. 손 엔지니어는 “Gemini 1.0 Pro로 GitLab 기술 문서를 무료로 번역할 수 있다”고 설명했는데요. Gemini 가격 정책을 보면 1분에 무료로 쿼리를 60번 보낼 수 있습니다. 손 엔지니어는 1분에 60번 이하로 쿼리를 보낼 수 있는 파이썬 라이브러리를 부가 설정했고요. 이어서 GitLab 전체 기술 문서의 자동 번역을 실행했다고 하죠. API Rate Limit를 지키면 이렇게 무료로 번역할 수 있습니다. 손 엔지니어는 API Rate Limit에 상관없이 Gemini 1.0 Pro로 번역해도 가격이 저렴할 걸로 예상했는데요. 이 가격은 25.83달러(약 3만5000원)로 책정됐는데 GitLab 기술 문서가 2296개임을 고려하면 낮은 금액이었습니다.
한편 손 엔지니어는 GitLab 외에도 Mattermost, ClickHouse, OpenTelemetry, SigNoz의 기술 문서 번역도 자동화했다는데요. 그는 “국내 개발자들이 영어로 된 기술 문서를 더 편리하게 이용하도록 노력한다”고 밝혔습니다. AI와 DevOps를 잘 다뤄 개발자, 기획자, 디자이너, 테크니컬 라이터 등 IT 업계 모든 관계자가 더 수월하게 업무를 보고, 즐겁게 일하길 바란다는데요. 그는 “이를 위해 노력하는 게 DevOps”라는 멘트로 발표를 마쳤습니다.
옵저버빌리티, 뭐부터 측정할까?
옵저버빌리티 구성 단계세션 3에서는 옵저버빌리티 개념과 작동 방식, 오픈 소스와 SaaS 옵저버빌리티 지원 도구 특징을 살펴봤고요. 옵저버빌리티 구성에 필요한 레퍼런스 아키텍처를 알아보고, 마이크로서비스 아키텍처(MSA) 애플리케이션과 Java 애플리케이션에 옵저버빌리티를 활용하는 방법을 시연했습니다.
조성민(Rei) 인포그랩 DevOps 엔지니어는 세션에서 ‘Unknown Unknowns’ 개념을 짚으며 옵저버빌리티 의미를 설명했어요. 옵저버빌리티에서 Unknown Unknowns는 시스템 운영 중 발생할 수 있는, 예측하지 못한 문제나 이상 상황입니다. 이는 시스템 설계, 구현, 운영 단계에서 고려되지 않은 새로운 문제가 발생한다는 의미죠. 시스템의 비정상적 행동이나 성능 저하의 새로운 패턴, 새로운 보안 취약점이나 공격 유형, 예상치 못한 사용자 행동이나 시스템 상호작용이 여기에 해당하고요. 옵저버빌리티는 시스템을 진단하며 이러한 상황까지 관측합니다.
옵저버빌리티는 모 니터링과 종종 비교되죠. 조 엔지니어는 옵저버빌리티 특징을 이렇게 정리했는데요. 1)시스템 내부 상태를 이해하고 분석해 복잡한 문제를 진단하고 해결하고요. 2)능동적이고 사전 예방적 접근 방식을 취하며, 알려지지 않은 미지의 것을 발견합니다. 3)가동 중단, 장애가 발생하기 전 문제를 식별하고 해결하고요. 모니터링은 다음 측면에서 옵저버빌리티와 차별화됐다고 하죠. 1)시스템 성능과 상태를 지속적으로 검사해 문제를 확인하고 알리고요. 2)반응적 접근방식을 취하며, 알려진 미지의 것을 탐색합니다. 3)성능 병목 현상, 리소스 비효율성을 식별하고요.
옵저버빌리티 지원 도구. 출처=Cloud Native Landscape옵저버빌리티는 크게 세 가지 데이터를 측정한다는데요. 메트릭(metric), 로그(log), 트레이스(trace)입니다. 조 엔지니어에 따르면, 메트릭은 시스템이나 애플리케이션 성능, 상태, 사용량을 확인하기 위해 사용되는 데이터로 정량 측정한 값입니다. 로그는 시스템이나 애플리케이션에서 발생하는 이벤트 기록이죠. 트레이스는 사용자 요청이나 트랜잭션이 여러 서비스나 컴포넌트를 거쳐 수행되는 과정을 추적한 겁니다. 이를 통틀어 ‘텔레메트리 데이터’라고 부르며, 이는 추후 분석에 쓰이고요. 이러한 데이터를 계측→수집→저장→가시화, 분석해 옵저버빌리티를 구성합니다.
조 엔지니어는 옵저버빌리티 지원 도구도 소개했는데요. 이는 모 니터링, 로깅, 트레이싱, SaaS로 나뉩니다.
- 모니터링: Prometheus, InfluxDB, Zabbix
- 로깅: ELK, Sumo Logic, Loki
- 트레이싱: Jaeger, Zipkin, Otel, Tempo
- SaaS: Datadog, Dynatrace, Splunk, New Relic
옵저버빌리티 도구 선택지: 오픈 소스 or SaaS
팀 규모별 옵저버빌리티 지원 도구 사용 비용 비교. 출처=SigNoz옵저버빌리티 지원 도구로 오픈 소스 도구와 SaaS 도구 중 뭘 선택할지 고민될 수 있죠. 조 엔지니어는 “오픈 소스 도구는 활발한 커뮤니티와 확장성, 낮은 비용이 장점”이며 “SaaS 도구는 간단하게 구성해 운영 부담을 덜고 인력을 더 줄여도 되는 게 장점”이라고 말했습니다. 한편 옵저버빌리티로 시스템을 이해하려면 거의 모든 데이터를 계측, 수집, 저장해야 하는데요. 조 엔지니어는 “각 단계에서 수행하는 모든 작업에는 추가 리소스와 저장 공간이 필요하고, 서비스와 트래픽 규모에 따라 데이터 양도 많이 증가한다”고 설명했습니다. 그 결과, 비용이 기하급수적으로 높아지죠.
조 엔지니어는 팀 규모별로 옵저버빌리티 지원 도구를 사용할 때 비용도 비교했는데요. 소규모 팀(엔지니어 25명), 중견 팀(엔지니어 100명), 대규모 팀(엔지니어 200명)별로 구분해 SigNoz, Grafana, New Relic, Datadog를 사용할 때 풀 스택 옵저버빌리티 비용을 살펴봤죠. 팀 규모에 따라 비용은 약 2~8배 차이가 났습니다. 조 엔지니어는 “SaaS 도구의 과금 구조를 보면 탄력성과 유연성을 갖춰야 하는 요즘 시스템에서 운영 비용을 산정하기 힘들고, 예상치 못한 청구서를 받을 수 있다”고 말했습니다.
즉, SaaS 도구로 옵저버빌리티를 운영하면 위와 같은 문제가 생길 수 있는데요. 이에 조 엔지니어는 오픈 소스 도구로 옵저버빌리티를 구성하기로 했다고 밝혔습니다. 그는 아키텍처를 구상할 때 다음 사항을 고려했다는데요. 1)클라우드 네이티브나 분산 시스템에 적합한가? 2)유연하게 확장할 수 있는가? 3)벤더에 종속되거나 록인(lock-in) 우려는 없는가? 4)중앙 집중식으로 관리할 수 있는가? 입니다.
오픈 소스 활용 아키텍처조 엔지니어는 오픈 소스 도구로 OpenTelemetry와 Grafana Stack을 선택했다는데요. 계측에는 Open Telemetry를, 수집에는 Collector를, 저장에는 Prometheus와 Tempo, Loki를, 가시화와 분석에는 Grafana를 사용했다고 합니다. OpenTelemetry는 벤더 중립적이고, 다양한 서비스와 앱을 지원하며, 데이터 포맷을 표준화하고요. Grafana Stack은 효율적 저장, 빠른 쿼리 속도, 수평 확장을 지원한다고 하죠.
이어서 세션에서는 MSA 애플리케 이션과 Java 애플리케이션에 옵저버빌리티를 활용하는 방법을 시연했고요. 조 엔지니어는 옵저버빌리티를 구성할 때 얻는 유익을 아래와 같이 짚으며, 발표를 마무리했습니다.
- 가시성 확보로 개발 속도 단축
- 문제 원인 파악, 해결 시간 감소
- 구축, 운영 비용 절감
맺음말
지금까지 GitLab 코리아 19번째 밋업의 주요 발표 내용을 살펴봤습니다. 이 글의 요점은 다음과 같은데요.
1.GitLab Duo는 구글 Vertex AI가 제공하는 파운데이션 모델을 활용합니다. GitLab Duo의 Code Suggestions 기반 모델인 Codey가 그중 하나죠.
2.GitLab Duo는 코드 제안, 코드 리뷰 요약, MR 요약 등 다양한 AI 기능을 제공합니다.
3.GitLab Duo Chat은 이슈와 에픽 요약, 코드 취약점 파악, 코드 요약, 소스 코드 리팩토링, 테스트 코드 작성 기능을 지원합니다.
4.GitLab Duo의 Code Suggestions를 사용하면 풀 스택 개발을 할 수 있습니다.
5.구글 Gemini 1.0 Pro로 GitLab 공식 기술 문서를 번역할 때 프롬프트를 작성하는데요. 이는 Instructions, Directions, Examples, Data Input으로 이뤄집니다.
6.AI로 기술 문서를 번역할 때, 번역 결과가 사내 용어 정책에 맞지 않거나 번역 결과가 매번 달라질 수 있습니다. 또 텍스트가 너무 길어 번역이 중단될 수도 있고요.
7.Gemini 1.0 Pro를 사용하면 GitLab 기술 문서를 비용 효율적으로 번역할 수 있습니다.
8.옵저버빌리티는 시스템 내부 상태를 이해하고 분석해 복잡한 문제를 진단하고 해결합니다. 또 능동적이고 사전 예방적 접근 방식을 취하며, 알려지지 않은 미지의 것을 발견하죠.
9.옵저버빌리티는 메트릭, 로그, 트레이스를 측정합니다. 이를 계측→수집→저장→가시화, 분석해 옵저버빌리티를 구성할 수 있습니다.
10.옵저버빌리티를 구성하면 가시성 확보로 개발 속도를 단축할 수 있고요. 문제 원인을 파악하고 해결하는 시간도 줄일 수 있습니다.
인포그랩은 GitLab 및 DevOps에 대한 맞춤 기술 지원을 제공합니다. GitLab(Omnibus/Cloud Native Hybrid) 구축 관련한 지원이 필요하시면 문의하기 로 연락 주십시오.