포스트

오늘 우리는 GitLab 16.2 출시 소식을 발표해서 기쁩니다. 이번 업데이트에서는 새로운 리치 텍스트 편집기 기능, Cosign을 사용한 ‘키(key) 없는 서명’ 지원, 커맨드 팔레트 기능 등을 선보였습니다. 또 Slack용 GitLab 앱을 자체 관리형 GitLab에서 이용할 수 있도록 했습니다.
위 내용은 이번 릴리즈에서 선보인 110개 이상의 개선 사항 중 몇 가지 주요 사항입니다. 아래에 주요 업데이트 내용을 모두 확인하세요. 다음 달 릴리즈 내용을 미리 보려면 16.3 릴리즈 킥오프 비디오가 있는 예정 릴리즈 페이지를 보세요.


개발을 공부하는 사람들은 ‘코드 리뷰가 개발자 개인과 팀 전체의 성장에 중요한 역할을 한다’고 생각합니다. 그래서 취준생을 대상으로 하는 유료 코드 리뷰 서비스가 있기도 하고, 좋은 개발 문화를 가진 기업은 저마다의 코드 리뷰 방식이 있습니다. 그렇다면 개발자가 코드 리뷰를 받고 성장하려면 어떤 자세를 가지고 있어야 할까요? 코드 리뷰를 잘하는 방법을 소개하는 글은 많지만, 코드 리뷰를 받는 사람이 알아야 하거나 지녀야 할 자세와 관련된 자료는 부족한데요.
이번 포스팅에서는 코드 리뷰로 성장하기 위해 리뷰이가 지녀야 할 자세를 저의 경험과 더불어 정리했습니다. 아울러 인포그랩 프로덕트 팀의 코드 리뷰 문화도 함께 다뤘습니다.


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를 활용하여 업무를 효율적으로 수행하는 기능 및 방법을 알아보는 시간이었습니다. 이 글에서는 이번 밋업의 주요 발표 내용을 살펴보겠습니다.


ChatGPT는 OpenAI에서 개발한 대화형 인공지능(AI) 도구입니다. 이는 2022년 말에 공개되었으며, 전례 없는 놀라운 성능으로 전 세계에 GPT 열풍을 불러일으켰습니다. 그 결과, ChatGPT가 나온 지 반년이 지난 지금도 생성형 AI 뉴스는 끊임없이 쏟아지고 있습니다. AI API를 이용한 다양한 도구도 계속 등장하고 있고요.


OpenAI에서 개발한 ChatGPT가 출시된 지 반년이 조금 지났습니다. 반년 동안 ChatGPT를 필두로 여러 인공지능(AI) 모델이 하루가 멀다하고 등장하는 중이며, 다양한 산업에서 파동을 일으키고 있습니다. 우리는 이를 견뎌내기 위해 빠르게 대처하고 있지만, 마치 빠르게 달리는 열차를 쫓는 느낌을 받습니다.
이렇게 끊임없이 학습과 적응이 필요한 상황에서, 생산성 향상을 위해 많은 사람이 ChatGPT를 사용하고 있습니다. 마케팅 팀은 ChatGPT로 새로운 인사이트를 얻고, 고객 서비스(CS) 팀은 ChatGPT를 이용하여 고객 질문에 답변을 더욱 빠르게 제공할 수 있습니다.
DevOps 엔지니어도 ChatGPT를 업무에 활용할 줄 알아야 합니다. 엔지니어는 그 누구보다도 발빠르게 새로운 기술을 학습하고 변화하는 환경에 적응해야 하기 때문입니다. ChatGPT가 바로 그 ‘새로운 기술’입니다. DevOps 엔지니어가 ChatGPT로 효율적이고, 생산적인 작업 흐름을 만들려면 어떻게 해야 할까요?


이번 블로그에서는 내부 개발자 포털(IDP)인 Port를 사용해 사내 블로그 포스팅 프로세스를 자동화한 썰을 풉니다. 인포그랩에서는 블로그를 포스팅하기 위해 매일 10분 이상씩 하던 단순 반복 작업을 클릭 한 번에 동작하도록 했습니다. 그 결과, 개발자, 테크니컬 라이터의 스트레스를 줄여 더 중요한 업무에 집중할 수 있는 환경을 만들었습니다.
반복 작업을 줄이는 건 단순히 시간만 단축하는 것이 아닙니다. 수많은 사람이 단순 작업을 반복하느라 더 유용한 가치를 만드는 데 시간을 쓰지 못하고 있습니다. 이러한 작업을 줄이면 더 큰 가치를 창출하는 업무 시간을 확보할 수 있습니다. 이에 인포그랩에서는 수많은 교육 자료와 블로그의 배포 프로세스를 자동화하여 멤버들이 더 가치 있는 작업에 주력하도록 돕습니다.


오늘 우리는 GitLab 16.1 출시 소식을 발표해서 기쁩니다. 이번 업데이트에서는 새로운 내비게이션 기능, Kubernetes 리소스 시각화 기능, 서비스 계정으로 인증 기능, Artifact 페이지를 통한 Job 아티팩트 관리 기능 등을 선보였습니다. 또 GitLab Dedicated를 GA(General Availability) 버전으로 출시했습니다.
위 내용은 이번 릴리즈에서 선보인 100개 이상의 개선 사항 중 몇 가지 주요 사항입니다. 아래에 주요 업데이트 내용을 모두 확인하세요. 다음 달 릴리즈 내용을 미리 보려면 16.2 릴리즈 킥오프 비디오가 있는 예정 릴리즈 페이지를 보세요.


지난해 우리는 엄격한 컴플라이언스 요구사항이 있는 고객 니즈를 충족하도록 설계한, 종합 DevSecOps 플랫폼의 완전 관리형, 단일 테넌트 SaaS 배포인 ‘GitLab Dedicated’의 Limited Availability 출시 소식을 발표했습니다. 그 이후로 우리는 Limited Availability 고객과 긴밀히 협력해 그들의 피드백을 목표 개선사항과 새로운 필수 기능에 반영했습니다.
이제 우리는 ‘고객이 자신의 암호 키로 인스턴스에 저장된 데이터를 암호화하는 기능’과 같은 컴플라이언스 기능이 있는 ‘GitLab Dedicated’를 GA(General Availability) 버전으로 선보여 기쁩니다.
조직은 GitLab Dedicated를 사용해 데이터 상주, 격리, 프라이빗 네트워킹과 같은 컴플라이언스 요건을 충족하면서 더 빠른 릴리즈, 더 나은 보안, 더 생산적인 개발자를 포함해 DevSecOps 플랫폼의 모든 이점을 이용할 수 있습니다.
GitLab의 2023 Global DevSecOps Survey에 따르면, 운영 전문가의 44%는 자신의 현재 역할이 “하드웨어나 인프라를 ‘항상’ 또는 ‘대부분의 시간’동안 관리하는 일”이라고 답했습니다. GitLab Dedicated는 이러한 부담을 덜어줘, 조직이 핵심 비즈니스 모델에 집중하고, 복잡한 DevSecOps 환경을 관리하는 오버헤드 없이 컴플라이언스 요구를 충족하도록 지원합니다.


빠르게 변화하는 소프트웨어 개발 세계에서 시간은 귀중한 자원입니다. 개발자는 워크플로의 생산성과 효율성을 개선하기 위해 끊임없이 노력합니다. 이 글에서는 일상적인 개발자 경험을 혁신하는 대규모 언어 모델(LLM) 기반 기술인 ‘코드 제안’을 소개합니다.
다음은 코드 제안의 사용 사례입니다:
- 작업 간소화
- 신규 개발자의 언어 탐색 지원
- 숙련된 개발자의 잦은 웹 검색 필요성 제거
이 모든 사례는 코드 제안이 어떻게 일상적인 개발자 경험을 향상하는지 보여주는 예시입니다. 이러한 사용 사례의 구체적인 예를 살펴보겠습니다.


거의 모든 최신 소프트웨어 인프라에는 필수적으로 모니터링 또는 로깅이 존재합니다. 1980년대에 Unix 시스템에 syslog가 출시되면서 ‘시스템 내부에서 무슨 일이 일어나고 있는지 감사하고 이해할 수 있다’는 가치와 이러한 메커니즘 분리의 아키텍처적 중요성이 모두 확립되었습니다.
그러나 시스템 동작의 가시성의 가치와 중요성에도 불구하고 모니터링과 로깅은 자주 우선순위가 뒤로 밀릴 때가 많습니다. 거기다 중요한 정보를 수집하거나 로그를 분석하지 않고 로그를 내보내는 시스템의 사례는 무수히 많습니다. 또는 레거시 모니터링 시스템이 10년 전에 설치되어 최신 표준으로 업데이트되지 않은 인프라도 있습니다.
최근 운영 환경의 변화로 인해 Observability라는 개념이 등장했습니다. 엔지니어가 정적 측정값을 사용해 애플리케이션의 성능 자체에 가정을 세우는 대신, Observability로 애플리케이션 동작의 전체 그림을 볼 수 있습니다. 아울러 사용자가 성능을 어떻게 인식하는지를 알 수 있습니다.
Observability 란?
Observability의 가치를 이해하려면 먼저 ‘모니터링이 무엇인지’, ‘정보와 콘텍스트 측면에서 모니터링이 제공하는 것과 제공하지 않는 것이 무엇인지’에 대해 이해하는 게 도움됩니다.
모니터링의 핵심은 특정 시스템 또는 소프트웨어 스택의 다양한 값과 출력의 측정 결과를 제시하는 것입니다. 측정의 일반적인 메트릭은 CPU 사용량, RAM 사용량, 응답 시간 또는 Latency 등입니다. 기존 로깅 시스템도 이와 유사하며, 시스템 작동 중에 발생한 이벤트의 정적 정보를 제공합니다.
모니터링은 시스템의 더 큰 문제를 나타낼 수 있는 제한된 콘텍스트 측정값을 제공합니다. 기존 모니터링 도구를 사용하여 집계 및 상관관계를 파악할 수 있지만, 전체적인 관점을 제공하려면 일반적으로 수동 구성 및 튜닝이 필요합니다. 업계가 발전함에 따라 효과적인 모니터링의 개념은 CPU, RAM과 같은 정적인 측정값을 넘어서는 수준으로 발전했습니다. 유명한 사이트 신뢰성 엔지니어링(Site Reliability Engineering·SRE) 책에서 Google은 "Golden Signals"로 알려진 네 가지 주요 지표에 집중해야 한다고 강조합니다.
- Latency: 요청을 처리하는 데 걸리는 시간
- Traffic: 전체 네트워크를 측정한 것
- Errors: 요청이 실패하는 비율
- Saturation: 리소스 사용량을 전체의 일부분으로 측정하는 것, 일반적으로 제한된 리소스에 중점을 둠.
이러한 메트릭은 전반적인 시스템 성능을 더 잘 파악하는 데 도움이 됩니다. 완전한 모니터링 시스템을 설계, 구축, 통합, 구성하려면 적지 않은 엔지니어링 투자가 필요합니다. 장애 상황을 측정하려면 상당한 노력이 필요합니다. 간단한 상황에도 올바른 상관관계를 정의하고 연결하는 데는 많은 시간이 소요될 수 있습니다.
이러한 데이터와 지표를 기반으로 시스템의 내부 상태를 파악하고 추론하는 능력이 바로 Observability입니다. Observability로 빠른 문제 파악, 해결, 의사 결정에 도움을 줘 시스템 안전성이나 확장성에 기여할 수 있습니다. 또한 CI/CD 실행 중에 중요한 성능 피드백을 제공하여 개발자에게 코드 운영 피드백을 제공합니다. 이로써 소프트웨어 개발 수명 주기(SDLC)를 더 확장할 수 있습니다. 궁극적으로 Observability는 더 전체적인 디버깅과 시스템 이해를 지원합니다. Observability가 중요한 '이유'를 더 자세히 알아보기 위해 다음 섹션에서 모니터링만으로는 부족할 경우를 소개합니다.
Observability가 중요한 이유
Observability에 집중하면, 가동 중단을 줄이고 평균 해결 시간(MTTR)을 단축할 수 있습니다. 이로써 애플리케이션 성능을 개선하고 고객 경험을 개선할 수 있습니다. 모니터링이 같은 이점을 제공하는 것처럼 보일 수 있지만, 다음과 같은 사례가 있을 수 있습니다.
Observability는 비기술 분야 이해관계자 및 비즈니스 부서에도 중요합니다. 기술이 주요 수익 사일로와 더욱 밀접하게 얽히면서 소프트웨어 인프라 KPI는 비즈니스 KPI가 되었습니다. Observability는 KPI 성과에 더 나은 인사이트를 제공할 뿐만 아니라 여러 팀용 셀프 서비스 옵션을 제공할 수 있습니다.
한 엔지니어링 조직이 회계 부서에서 이메일을 받았습니다. '클라우드 서비스 청구서가 너무 비싸서 CFO가 이를 알아차릴 정도다.' DevOps 엔지니어는 모니터링 시스템을 면밀히 살펴봤지만 메모리, CPU, 디스크 I/O 등 시스템의 모든 부분이 지속적으로 정상으로 보고되었습니다. 알고 보니 근본 원인은 또 다른 'Unknown' 이벤트였습니다. CI/CD 파이프라인의 DNS 지연으로 인해 빌드 실패율이 높아진 것입니다. 더 많이 빌드를 함으로써 많은 클라우드 리소스를 소모했습니다. 그러나 이러한 영향은 모니터링 시스템에 반영될 만큼 오래 지속되지 않았습니다. Observability 도구를 추가하고 환경의 모든 이벤트 유형을 수집함으로써 운영팀은 문제의 원인을 정확히 파악하고 문제를 해결할 수 있었습니다. 기존 모니터링 시스템에서는 조직이 DNS 지연 문제를 사전에 알고 있어야 했습니다.
최신 소프트웨어와 애플리케이션은 우수한 사용자 경험(UX)을 제공하는 데 크게 의존합니다. 이전 사례에서 알 수 있듯이, 정적 메트릭을 모니터링한다고 해서 UX 또는 시스템 성능의 완전한 이야기를 항상 알 수 있는 것은 아닙니다. 겉보기에 정상적으로 보이는 지표 대시보드 뒤에 심각한 문제가 숨어 있을 수 있습니다.
Observability 메트릭
Observability 도구를 구현하기로 결정한 조직은, 다음 단계로 Observability 의 핵심 목표와 이를 스택 전체에서 가장 잘 구현할 방법을 식별할 수 있습니다. 다은 Observability의 세가지 기본 요소로 시작하는 것이 좋습니다.
- Logs: 정보 및 이벤트
- Metrics: 특정 메트릭 및 성능 데이터의 측정
- Tracing: 런타임 동안 엔드투엔드 성능 요청
이 작업이 부담스러울 수 있습니다. 그러나 OpenTelemetry 같은 프로젝트는 Logs, Metrics, Tracing의 광범위한 표준 수용을 촉진합니다. 이로써 Observability를 구현하는 조직이 OpenTelemetry 표준에 기반한 도구를 사용해 더 일관된 생태계를 구축하고, 가치 실현 시간을 단축하도록 돕고 있습니다
추가적인 Observability 데이터 및 요소는 다음과 같습니다.
- Error 추적: 집계가 포함된 더욱 세분화된 Log
- 지속적인 프로파일링: 세분화된 코드 성능 평가
- 실제 사용자 모니터링(RUM): 실제 사용자의 관점에서 애플리케이션 성능 이해
이러한 요소를 살펴보면 중심 주제가 드러나기 시작합니다. 최신 분산 시스템에서는 더 이상 시간과 공간의 작은 조각을 보는 것만으로는 충분하지 않습니다. 전체적인 10,000 피트 뷰가 필요합니다. 애플리케이션 성능의 이해는 실제 고객이 경험하는 대로 샘플링한 다음, 소프트웨어와 상호 작용할 때 전체 성능과 동작을 추가로 모니터링하는 것에서 시작됩니다.
기존의 애플리케이션 모니터링을 넘어 Observability는 모든 엔지니어링 조직의 운영 환경을 개선하는 데 도움이 될 수 있습니다. 잘 만들어진 알림 및 인시던트 관리 프로그램은 대개 실제 중단을 통해 얻은 혹독한 교훈에서 비롯됩니다. 카오스 엔지니어링을 구현하면 결과가 알려진 통제된 환경에서 실제 장애가 발생하는 동안 Observability 플랫폼을 테스트할 수 있습니다. 프로덕션 워크로드뿐만 아니라 CI/CD 파이프라인, 공급망, DNS 등 'Unknown'이 숨어 있을 수 있는 시스템에 카오스 엔지니어링을 도입하면 운영 기반에서 상당한 이점을 얻을 수 있습니다.
Observability의 중요성
Observability는 데브옵스뿐만 아니라 조직 전체에 매우 중요합니다. Observability는 레거시 모니터링 솔루션의 정적 데이터를 대체하여 애플리케이션 인프라의 전체 스펙트럼을 보도록 지원합니다.
DevOps 팀은 이해관계자와 협력하여 조직 전체에 도움이 되는 방식으로 Observability 메트릭을 공유하고 구현을 개선하는 조치를 취해야 합니다. 앱 계측의 이점을 학습하고 개발 팀에 전파하면 Observability를 더욱 효과적으로 만들 수 있습니다. 또한 DevOps 팀은 프로덕션 인시던트의 근본 원인을 더 빨리 파악할 수 있으며, 잘 계측된 애플리케이션 코드는 인프라 문제와 쉽게 구분할 수 있습니다. 마지막으로, CI/CD 파이프라인을 따라 Observability가 달라집니다. 잠재적인 서비스 수준 목표(SLO) 델타를 프로덕션에 도달하기 전에 발견할 수 있습니다.
애플리케이션 성능과 비즈니스 성과에 의미 있는 개선을 제공하고자 하는 DevOps 팀은 두 가지를 모두 제공하는 방법으로 Observability를 고려할 수 있습니다.
Reference


지난달 27일 GitLab 코리아 15번째 밋업이 온라인으로 진행됐습니다. 이날 밋업 주제는 ‘GitLab이 옵저버빌리티(Observability)를 만드는 방식’이었는데요. Observability는 ‘외부 데이터에서 시스템 내부 상태를 얼마나 잘 유추할 수 있는지’ 나타내는 척도이죠.
밋업은 세션 1, 2로 나눠 진행됐습니다. 세션 1에서는 유인철 GitLab 코리아 이사가 ‘Observability를 향한 GitLab의 새로운 여정’을 주제로 발표했고요. Observability 개념과 GitLab의 Observability 전략, 원칙, 올해 출시할 기능을 공유했습니다.
세션 2에서는 신철호(Dexter) 인포그랩 이사가 ‘오픈 소스로 시작하는 Observability’를 주제로 발표했고요. Observability를 바라보는 엔지니어 관점과 Observability 필요성, 발전 과정을 소개했습니다. 또 Observabilit 도구인 Open Telemetry, SigNoz를 알아보고, SigNoz 데모도 선보였죠. 이 글에서는 지난 밋업의 주요 발표내용을 살펴보겠습니다.


오늘 우리는 GitLab 16.0 출시 소식을 발표해서 기쁩니다. 이번 업데이트에서는 Value Streams 대시보드 기능을 정식 출시했습니다. 아울러 Linux에서 GPU 지원 SaaS 러너를 사용할 때, GitLab으로 워크로드를 원활히 지원하도록 구축했습니다.
코멘트 템플릿 기능과 특정 브랜치만 미러링하는 기능도 추가했습니다. 또 Web IDE를 GitLab 전체에 기본 multi-file 코드 편집기로 선보였습니다. 이밖에 프로젝트 수준의 Value Stream Analytics에 Overview stage, Custom value streams를 만드는 옵션도 추가했습니다.


GitLab 및 여러 기업은 페어 프로그래밍(짝 프로그래밍)을 통해 혼자 해결하기 어려운 과제들을 해결해 나가고 있습니다. 이 글에서는 페어 프로그래밍이 무엇이고, 어떤 장점이 있는지 확인해보고, 또 원격 페어 프로그래밍의 장점 및 적절한 활용을 위한 4가지 팁을 알아보겠습니다.


최근 IT 업계에서 마이크로서비스 아키텍처, 클라우드 네이티브와 같은 최신 기술 트렌드가 빠르게 채택되고 있습니다. 그러나 규모가 확장되면서 복잡해진 아키텍처에 대해 사용자들이 어려움을 겪고 있습니다.
