- 기술 블로그
- 릴리즈/뉴스
포스트
이 글에서는 GitLab의 ‘Project Import’ 기능을 활용해 GitHub에서 GitLab으로 프로젝트를 마이그레이션 하는 방법을 소개합니다. 아울러 GitHub Actions에서 GitLab 파이프라인으로 수동 마이그레이션 하는 방법도 알아봅니다. A 플랫폼에서 B 플랫폼으로 마이그레이션 하는 과정을 복잡하고 어렵게 느끼는 분들도 있을 텐데요. GitLab에서는 마우스 클릭 몇 번으로 쉽고 간단하게 마이그레이션을 진행할 수 있습니다.
이번 포스팅에서는 코드 주석의 중요성과 코드 주석을 잘 쓰는 방법을 알아봅니다. 코드에 남기는 주석은 개발자에게 가장 기본적인 콘텐츠 유형입니다. 이는 ‘자신이 작성한 코드가 하는 일’을 설명하는 걸 넘어서 설계 결정 사항과 트레이드 오프 등 고민 사항을 문서화합니다. 이로써 ‘코드 작성자가 무슨 일을 했고, 왜 그렇게 했는지’ 설명해 줍니다.
현대 소프트웨어 개발 환경에서는 빠른 속도와 높은 품질을 동시에 달성하는 것이 매우 중요합니다. 이를 위해 DevOps 문화와 CI/CD(Continuous Integration/Continuous Deployment) 접근 방식이 강조되고 있고요. 오늘날 개발 속도를 높여 고품질 소프트웨어를 만드는 데 도움이 되는 다양한 도구가 개발되고 있습니다. 그중에서도 GitLab CI/CD와 Jenkins는 CI/CD 파이프라인을 구축하고 관리하는 데 널리 사용되는 도구인데요. 이는 개발팀과 운영팀의 협업 프로세스를 자동화하여 생산성을 높입니다.
소프트웨어 테스트는 개발한 소프트웨어가 요구사항을 잘 반영하였는지, 기능이 정상적으로 작동하는지, 안정적인지 등을 확인하여 품질을 유지하고 결함을 확인하는 활동으로 개발 라이프사이클에서 중요한 과정 중 하나입니다. 개발 초기에 버그와 결함을 감지할수록 개발 시간 단축, 비용 최적화, 품질 향상 등의 이점이 있지만 늦게 발견할수록 잠재적 부채가 증가하여 품질이 떨어지고 위험도가 증가하게 됩니다. 따라서 개발 초기부터 주기적으로 테스트 오류와 결함을 줄이는 것이 장기적으로 중요합니다. 이 글에서는 소프트웨어 테스트를 자동화하고 주기적으로 실행하는 지속적 테스트를 알아보겠습니다.
이 글에서는 DevOps를 쉽고 빠르게 구현하도록 돕는 노코드, 로코드(no code, low code) 도구 4가지를 다뤘습니다. DevOps 자동화 플랫폼 ‘Humalect’, CI/CD(지속적 통합/지속적 배포) 파이프라인 관리 플랫폼 ‘R2Devops Platform’, 인포그랩의 CI/CD 파이프라인 에디터 ‘Plumber’, ****AWS 배포 플랫폼 ‘OpsFlow’가 그 주인공인데요. 각 도구는 DevOps 프로세스를 간소화하고, CI/CD 템플릿을 바로 쓸 수 있도록 제공하며, 파이프라인을 빠르게 실행하도록 돕고, AWS로 간편하게 배포하도록 지원합니다. 이는 노코드, 로코드에 기반했기에 마우스를 클릭하거나 드래그 앤드 드롭하며 쉽게 이용할 수 있죠. 지금부터 각 도구의 기능과 특징을 하나하나 살펴보겠습니다.
최근 몇 년 새 IT 업계에서 급속도로 떠오른 키워드가 하나 있습니다. 바로 ‘노코드, 로코드(no code, low code)’인데요. 이는 코딩을 최소화하고, 간소화한 것이죠. 노코드, 로코드 도구를 활용하면 코딩할 줄 모르는 비개발자도 소프트웨어를 간단히 개발할 수 있습니다. DevOps 업계에서도 ‘노코드, 로코드를 DevOps에 적용하는 방안’을 모색하고 있는데요. 그 결과물은 노코드, 로코드 기반의 DevOps 플랫폼, CI/CD 파이프라인 에디터 등 서비스로 나오기도 합니다. DevOps 업계는 노코드, 로코드의 어떤 점에 주목해 이를 DevOps에 접목하려는 걸까요? 노코드, 로코드는 DevOps가 발전하는 데 도움이 될 수 있을까요? 이 글에서는 DevOps 업계가 노코드, 로코드를 주목하는 배경과 노코드, 로코드가 DevOps에 미치는 영향, 그리고 둘을 결합할 때 일어날 수 있는 문제를 함께 살펴보려고 합니다.
개발을 공부하는 사람들은 ‘코드 리뷰가 개발자 개인과 팀 전체의 성장에 중요한 역할을 한다’고 생각합니다. 그래서 취준생을 대상으로 하는 유료 코드 리뷰 서비스가 있기도 하고, 좋은 개발 문화를 가진 기업은 저마다의 코드 리뷰 방식이 있습니다. 그렇다면 개발자가 코드 리뷰를 받고 성장하려면 어떤 자세를 가지고 있어야 할까요? 코드 리뷰를 잘하는 방법을 소개하는 글은 많지만, 코드 리뷰를 받는 사람이 알아야 하거나 지녀야 할 자세와 관련된 자료는 부족한데요.
이번 포스팅에서는 코드 리뷰로 성장하기 위해 리뷰이가 지녀야 할 자세를 저의 경험과 더불어 정리했습니다. 아울러 인포그랩 프로덕트 팀의 코드 리뷰 문화도 함께 다뤘습니다.
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분 이상씩 하던 단순 반복 작업을 클릭 한 번에 동작하도록 했습니다. 그 결과, 개발자, 테크니컬 라이터의 스트레스를 줄여 더 중요한 업무에 집중할 수 있는 환경을 만들었습니다.
반복 작업을 줄이는 건 단순히 시간만 단축하는 것이 아닙니다. 수많은 사람이 단순 작업을 반복하느라 더 유용한 가치를 만드는 데 시간을 쓰지 못하고 있습니다. 이러한 작업을 줄이면 더 큰 가치를 창출하는 업무 시간을 확보할 수 있습니다. 이에 인포그랩에서는 수많은 교육 자료와 블로그의 배포 프로세스를 자동화하여 멤버들이 더 가치 있는 작업에 주력하도록 돕습니다.
빠르게 변화하는 소프트웨어 개발 세계에서 시간은 귀중한 자원입니다. 개발자는 워크플로의 생산성과 효율성을 개선하기 위해 끊임없이 노력합니다. 이 글에서는 일상적인 개발자 경험을 혁신하는 대규모 언어 모델(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 데모도 선보였죠. 이 글에서는 지난 밋업의 주요 발표내용을 살펴보겠습니다.