인포그랩은 최근 실무자를 위한 DevOps 교육 서비스인 ‘DevOps Expert Labs’를 선보였는데요. DevOps Expert Labs에서는 난이도와 프로그래밍 언어/플랫폼에 따라 다양한 러닝 패스(커리큘럼)를 운영합니다. DevOps 실험실, DevOps 기초, DevOps 플랫폼 구축, DevOps 소프트웨어 개발, DevOps 파이프라인 등이 그 예인데요. 인포그랩은 이 가운데 ‘DevOps 플랫폼 구축’ 러닝 패스를 주제로 지난 10월 16~20일 분당 서현 동네소셜라운지에서 DevOps Expert Labs의 첫번째 워크숍을 진행했습니다. 5일 동안 열린 워크숍에는 CJ올리브네트웍스(3명)와 두산 디지털이노베이션(2명) 실무자들이 참여했고요. DevOps Expert Labs의 메인 강사인 제가 DevOps 플랫폼 구축 방법을 교육했습니다.

인포그랩은 지난 6개월 동안 DevOps Expert Labs를 개발하고, 출시를 준비했습니다. 이번 워크숍은 고객사를 대상으로 처음 진행한 DevOps Expert Labs 워크숍이었기에 회사로서 의미가 컸는데요. 저는 이전에도 워크숍을 여러 차례 진행한 경험이 있지만 이번 워크숍은 그 어느 때보다 기대되고, 긴장감도 느꼈습니다. 이 글에서는 DevOps Expert Labs 특징과 러닝패스, 서비스 업데이트 내용을 살펴보고요. 워크숍 준비 과정과 진행 방식, 고객 피드백 내용을 공유하려고 합니다.

DevOps Expert Labs 소개

DevOps Expert Labs는 현업에서 DevOps 실무를 수행하는 엔지니어의 눈높이에 맞춘 핸즈온(실제 손으로 조작) 방식의 DevOps 교육 서비스입니다. 그동안 인포그랩은 다양한 기업과 기관에서 DevOps 컨설팅을 수행하고, DevOps 플랫폼을 구축했는데요. 저희는 이러한 경험과 노하우를 바탕으로 DevOps Expert Labs의 교육 콘텐츠를 직접 제작했습니다.

기존 국내외 DevOps 교육 서비스는 초급, 중급 수준의 프로그래밍 강의를 주로 공급하는데요. DevOps Expert Labs는 기존 DevOps 교육 서비스의 이러한 한계를 극복하기 위해 출시됐습니다. 이 서비스는 SaaS(Software-as-a-service) 플랫폼으로, 초급~전문가 난이도를 두루 아우르는 DevOps 교육 콘텐츠를 제공합니다.

DevOps Expert Labs는 현업 실무자들이 전문 DevOps 엔지니어로 성장하도록 지원하는데요. 이를 위해 DevOps 전문 지식과 역량을 키우고, 엔지니어링 성숙도를 높이는 데 도움이 되는 교육 콘텐츠와 코칭 서비스를 제공합니다.

DevOps Expert Labs의 교육 진행 방식은 이렇습니다. 러닝 패스를 토대로, DevOps 워크숍을 오프라인에서 실시하는데요. 참가 인원은 46명으로, 워크숍은 25일 동안 진행합니다. 이밖에 DevOps Expert Labs의 특징은 다음과 같습니다.

  • DevOps Expert Labs는 Google Codelabs 스타일로 만들었습니다. 이는 실습형 콘텐츠를 활용해 학습하는 환경을 제공하고요. 이로써 학습자가 집중해서 실습을 하나씩 완료하도록 지원합니다.
  • 슬라이드와 동영상을 사용하는 수동적인 단방향 학습 방법과 달리, DevOps Expert Labs에서는 학습자가 단계별 미션을 수행하면서 DevOps 기술을 익히고, 플랫폼을 구축할 수 있습니다. 학습자는 이러한 방식으로 실제 DevOps 엔지니어의 업무 수행 방식을 경험할 수 있습니다.
  • DevOps Expert Labs는 난이도와 주제에 따라 다양한 러닝 패스로 구성되어 있습니다. 따라서 학습자가 방향을 잃지 않고 단계별로 체계적으로 학습할 수 있습니다.
  • DevOps Expert Labs는 핸즈온 방식의 실습 중심 교육으로 진행돼, DevOps 팀의 엔지니어링 시행착오를 획기적으로 줄이는 데 도움이 됩니다.
  • 학습자는 수강 과정에서 최신 DevOps 구축 레퍼런스와 인포그랩의 풍부한 DevOps 구축 경험, 노하우를 얻을 수 있습니다.
  • 학습자는 DevOps 전문 코치가 이끄는 워크숍에 참여하면서 실전 경험을 빠르게 쌓을 수 있습니다.
  • DevOps Expert Labs 콘텐츠는 SaaS 형으로 제공되기에, 워크숍 이후에도 온라인에서 이용할 수 있습니다.
참고

Google Codelabs 웹사이트는 개발자를 위한 학습 리소스를 담았습니다. Codelabs는 다양한 주제와 기술 관련 실습을 제공하여 개발자가 실제 프로젝트에 적용하는 기술 역량을 향상하도록 돕습니다.

‘DevOps 기초’ 러닝 패스

DevOps Expert Labs의 ‘DevOps 기초’ 러닝 패스 웹 UI | 인포그랩 GitLab
DevOps Expert Labs의 ‘DevOps 기초’ 러닝 패스 웹 UI

‘DevOps 기초’ 러닝 패스에서는 DevOps 기본 지식과 DevOps 필수 도구 등을 다룹니다. DevOps Expert Labs에서는 워크숍을 시작하기 며칠 전에 DevOps 기초 러닝 패스의 콘텐츠를 워크숍 참가자(수강생)에게 미리 제공하는데요. 이는 중급 이상 수준인 ‘DevOps 플랫폼 구축’ 러닝 패스를 워크숍에서 다루기 전에 진행하는 절차이기도 합니다. 워크숍 참가자가 DevOps 기초 러닝 패스를 사전 학습하면 DevOps의 기본 지식과 도구 이론을 이해하는 데 도움이 되고요. DevOps 기초 러닝 패스의 다음 단계인 DevOps 플랫폼 구축 러닝 패스의 내용을 더 쉽게 따라갈 수 있습니다.

DevOps 기초 러닝 패스의 구체적인 교육 내용은 다음과 같습니다.

DevOps Expert Labs의 ‘DevOps 기초’ 러닝 패스 교육 내용 | 인포그랩 GitLab
DevOps Expert Labs의 ‘DevOps 기초’ 러닝 패스 교육 내용

‘DevOps 플랫폼 구축’ 러닝 패스

DevOps Expert Labs의 ‘DevOps 플랫폼 구축’ 러닝 패스 중 ‘Labs 소개 > 기술 스택’ 내용 | 인포그랩 GitLab
DevOps Expert Labs의 ‘DevOps 플랫폼 구축’ 러닝 패스 중 ‘Labs 소개 > 기술 스택’ 내용

‘DevOps 플랫폼 구축’ 러닝 패스는 중급 이상 과정인데요. 여기서는 DevOps 플랫폼 인프라와 DevOps 플랫폼 도구셋 구성 방법, DevOps 플랫폼 활용 방법, 옵저버빌리티(Observability) 구축 방법 등을 다룹니다. 앞서 언급한 ‘DevOps 기초’ 러닝 패스를 사전 학습한 뒤, 오프라인 워크숍에서 DevOps 플랫폼 구축 러닝 패스를 주제로 교육하는데요. 이 러닝 패스는 프로덕션 수준으로 준비된 환경, 코드, 설정을 사용하여 ‘제로베이스 상태에서 완성된 DevOps 플랫폼 환경 구축하기’를 목표로 구성했습니다.

DevOps 플랫폼 구축 러닝 패스의 구체적인 교육 내용은 다음과 같습니다.

DevOps 플랫폼 인프라 만들기

  • 핸즈온 워크스페이스 구성

AWS Cloud9을 이용하여 DevOps Platform Labs의 실습 환경을 구성하는 방법을 학습합니다. AWS Console에서 Cloud9을 구성하고, EBS 볼륨 조정 및 IAM 권한을 설정하는 방법과 AWS CLI, Terraform, kubectl, Helm 등 도구를 설치하는 방법 등을 설명합니다.

  • Terraform으로 AWS EC2 생성

Terraform 기본 정보와 이를 사용하여 AWS EC2 인스턴스를 프로비저닝하는 방법을 학습합니다. AWS VPC, Subnet, Security Group, EC2 리소스를 생성하는 Terraform 코드 작성법, Terraform으로 User data 템플릿 파일을 사용하여 EC2 초기 구성 작업을 실행하는 방법, 변수 사용법, Terraform 명령어를 실행하는 방법 등을 설명합니다.

  • Terraform으로 AWS EKS 생성

AWS EKS 기본 정보와 Terraform으로 EKS 클러스터를 프로비저닝하는 방법을 학습합니다. Network, Security Group, EKS Cluster, EKS Add-ons, Node Group을 생성하는 Terraform 코드 작성법, kubeconfig 파일을 생성하고 EKS 클러스터에 접속하는 방법, OpenLens를 설치하는 방법 등을 설명합니다.

플랫폼 기본 도구셋 구성

  • Metrics Server, Autoscaler 구축

Kubernetes 클러스터에서 리소스 메트릭을 수집하고 Autoscaler를 활용하여 리소스, 노드 수를 동적으로 확장하는 방법을 학습합니다. Helm 차트로 Kubernetes 클러스터에 Metrics Server, Autoscaler를 배포하는 방법, Metrics Server를 이용하여 클러스터의 메트릭을 수집하고 확인하는 방법, Autoscaler를 사용하여 클러스터 자원 사용량에 따른 리소스와 노드 수를 조정하는 방법 등을 설명합니다.

  • Reflector, Sealed Secret 구축

GitOps 워크플로에서 Kubernetes Secret을 암호화하여 관리하고, 네임스페이스 간 Secret을 복사하고 동기화하는 방법을 학습합니다. Helm 차트로 Sealed Secrets, Reflector를 배포하는 방법, Sealed Secrets를 사용하여 Kubernetes Secret을 암호화하는 방법, Reflector를 사용하여 Secret 네임스페이스 간에 복제하고 동기화하는 방법 등을 설명합니다.

  • cert-manager 구축

cert-manager는 TLS/SSL 인증서 발급과 갱신을 자동화하는 도구입니다. 이 과정에서는 cert-manager를 배포하고, 인증서를 발급하는 방법을 학습합니다. 구체적으로는 Helm 차트로 Kubernetes 클러스터에 cert-manager를 배포하는 방법, cert-manager가 DNS01 챌린지를 수행할 때 AWS Route 53에 액세스하도록 AWS IAM 정책을 생성하고 설정하는 방법, ClusterIssuer 리소스를 생성하고, Ingress를 사용해 Certificate 리소스를 생성하며, TLS/SSL 인증서를 발급하는 방법 등을 설명합니다.

  • NGINX Ingress Controller 구축

NGINX Ingress Controller를 Kubernetes 클러스터에 배포하고 구성하는 방법을 학습합니다. Ingress는 Kubernetes 클러스터 서비스의 외부 액세스를 관리하는 리소스인데요. NGINX Ingress Controller는 이 Ingress가 작동하는 데 필요한 Ingress Controller 중 하나입니다. 이밖에 Helm 차트를 사용하여 NGINX Ingress Controller를 배포하는 방법, NGINX Ingress Controller로 생성된 NLB를 확인하고 DNS에 레코드를 등록하는 방법 등도 설명합니다.

  • Argo CD 구축

Argo CD는 선언적 GitOps의 지속적 배포 도구입니다. 이 과정에서는 Argo CD를 Kubernetes 클러스터에 배포하고 구성하는 방법을 학습합니다. 구체적으로는 Argo CD Helm 차트의 구성 정보를 배포 환경에 맞게 설정하는 방법, Helm 차트로 Kubernetes 클러스터에 배포하는 방법, Argo CD 웹 UI에 접속하는 방법 등을 배웁니다.

  • MinIO 구축

MinIO는 고성능 AWS S3 호환 오브젝트 스토리지(Object Storage)입니다. 이 과정에서는 MinIO를 구축하기 위해 Helm 차트 Values 파일을 작성하고 Kubernetes 클러스터에 배포하는 방법을 학습합니다. 설정 파일에는 MinIO 서버의 배포 관련 옵션, 컨테이너 실행에 필요한 리소스, 퍼시스턴트 볼륨, Ingress 설정 등이 포함됩니다.

  • GitLab 구축

GitLab을 구축하기 위해 Helm 차트 Values 파일을 작성하고 Kubernetes 클러스터에 배포하는 방법을 학습합니다. GitLab 배포 상태 확인, MinIO와 GitLab 웹 접속, 증분 로깅 활성화 등도 다룹니다.

  • GitLab Runner 구축

GitLab Runner를 Kubernetes 클러스터에 배포하고 GitLab에 등록하는 방법을 학습합니다. 이 과정에서는 Runner Token을 발급받아 Runner를 등록하고, Helm Repository를 구성하며, Runner Helm 차트 Values 파일을 작성한 다음 배포합니다. 그다음, GitLab에서 ‘Runner가 온라인 상태인지’ 확인합니다.

  • GitLab Kubernetes Agent 구축

GitLab Kubernetes Agent는 GitLab 인스턴스와 Kubernetes 클러스터 간에 지속적이고 안전한 연결을 제공하는 서비스입니다. 이 과정에서는 GitLab Kubernetes Agent를 구축하는 방법을 학습합니다. 먼저 GitLab에서 Agent 토큰을 발급하고 Helm Repository를 구성한 뒤, Helm 차트 Values 파일을 작성하여 Agent를 Kubernetes 클러스터에 배포합니다. 그다음, ‘GitLab과 연동되는지’ 확인하고요. 마지막으로, GitLab 그룹과 프로젝트에 액세스 권한을 부여합니다.

  • SonarQube 구축

SonarQube는 30개 이상의 프로그래밍 언어에서 버그, 코드 스멜(Code Smell), 보안 취약점 등을 분석하고 보고서를 제공하는 정적 코드 분석 도구입니다. 이 과정에서는 SonarQube를 구축하는 방법을 학습합니다. 먼저 Helm Repo를 추가하고 업데이트한 뒤, Values 파일을 작성하고 SonarQube를 Kubernetes 클러스터에 배포합니다. 마지막으로, 웹 브라우저에서 SonarQube에 접속하여 결과를 확인합니다.

  • Sentry 구축

Sentry는 실시간으로 애플리케이션 오류를 추적하고, 모니터링하는 도구입니다. 이 과정에서는 Sentry를 구축하는 방법을 학습합니다. 먼저 Helm Repo를 추가하고 업데이트한 뒤, Values 파일을 작성하고 Sentry를 Kubernetes 클러스터에 배포합니다. 마지막으로, 웹 브라우저에서 Sentry에 접속하여 결과를 확인합니다.

  • Vault 구축

HashiCorp Vault는 ID 기반 비밀과 암호화를 관리하는 시스템입니다. Vault Secrets Operator는 CRD(Custom Resource Definitions) 세트를 활용하여 Vault와 Kubernetes 간에 Secret을 동기화하는 Kubernetes Operator입니다. 이 과정에서는 Vault를 구축하고 Kubernetes와 연동하는 방법을 학습합니다. 이밖에 Vault 초기화, Unseal, 웹 접속, Secret Operator를 이용한 연동 방법도 다룹니다.

  • Prometheus Stack 구축

Prometheus Stack은 Kubernetes 클러스터에서 Prometheus와 관련 구성 요소의 배포, 관리, 모니터링을 쉽게 하도록 설계된 도구, 구성 모음입니다. 이를 사용하면 대시보드, 알림, 메트릭 조회 등을 구성할 수 있습니다. 이 과정에서는 Kubernetes 환경에서 모니터링 또는 옵저버빌리티를 구성할 수 있는 Prometheus Stack 구축 방법을 학습합니다. 구체적으로는 Helm Repo를 추가하고 업데이트한 뒤, Values 파일을 작성하고 Prometheus Stack을 Kubernetes 클러스터에 배포합니다. 그다음, 웹 브라우저에서 Grafana, Prometheus, Alertmanager에 접속하여 확인합니다. 마지막으로, Grafana에서 Prometheus 데이터 소스를 추가하고 대시보드를 구성합니다.

  • Loki 구축

Loki는 수평 확장할 수 있으며 가용성이 높은 다중 테넌트 로그 집계 시스템입니다. 이 시스템은 Prometheus에서 영감을 받아 만들었습니다. Promtail은 Loki를 위해 특별히 제작된 로그 수집기입니다. 이 과정에서는 Kubernetes 클러스터와 애플리케이션의 로그를 수집하고 분석하는 Loki, Promtail 구축 방법을 학습하는데요. MinIO에 로그 데이터를 저장하는 버킷과 액세스 키를 생성하는 방법, Loki와 Promtail을 구성하고 배포하는 방법, 배포 상태를 확인하는 방법, Grafana에서 Loki를 데이터 소스로 추가하는 방법을 설명합니다.

  • Tempo 구축

Tempo는 사용하기 쉬운 오픈소스 대규모 분산 추적 백엔드(distributed tracing backend)입니다. 이는 Grafana, Prometheus, Loki와 긴밀하게 통합됩니다. 이 과정에서는 Kubernetes에 분산 추적 시스템인 Tempo를 구축하는 방법을 학습합니다. 먼저 MinIO에 트레이스 데이터를 저장하는 버킷과 액세스 키를 생성합니다. 그다음, Helm Repo를 추가하고 업데이트한 뒤 Values 파일을 작성하며, Tempo를 Kubernetes 클러스터에 배포하고 확인하죠. 마지막으로, Grafana에서 Tempo 데이터 소스를 추가합니다.

DevOps 플랫폼 활용하기

  • CI 파이프라인 구축

GitLab CI 파이프라인을 구축하여 단위 테스트와 정적 코드 분석을 자동화하는 방법을 배웁니다. 이 과정에서는 파이프라인을 실행하기 전에 필요한 환경을 확인하고 구성합니다. 단위 테스트 결과는 파이프라인 상세 페이지의 Tests 탭에서 확인할 수 있습니다. 정적 코드 분석은 SonarQube와 연동하여 실행됩니다. 이로써 코드 품질을 체크하고 보안 취약점 등을 감지하며, 대시보드에서 프로젝트의 코드 품질을 한눈에 파악할 수 있습니다.

  • CD 파이프라인 구축(Manifest)

GitLab CD 파이프라인을 구축하여 Kubernetes 클러스터에 애플리케이션 배포를 자동화하는 방법을 배웁니다. 이 과정에서는 GitLab Kubernetes Agent 구성 파일을 추가하고 GitLab에 Agent를 등록한 뒤, Kubernetes 클러스터에 Agent를 설치합니다. 아울러 TLS/SSL 와일드카드 인증서를 발급하고, GitLab CD 파이프라인을 실행하는 데 필요한 환경을 구성합니다. 또 프론트엔드, 백엔드 애플리케이션을 각각 빌드하여 아티팩트를 생성하는 ‘빌드 Job’, 애플리케이션을 각각 Docker 빌드하여 컨테이너 이미지를 Container Registry에 Push 하는 ‘Docker Job’, Manifest 파일을 사용하여 프론트엔드, 백엔드 애플리케이션을 Kubernetes 클러스터에 배포하는 ‘배포 Job’을 추가하여 CI/CD 파이프라인을 구성합니다.

  • CD 파이프라인 구축(Helm)

Kubernetes 클러스터에 Helm Chart를 사용해 애플리케이션을 배포하는 GitLab CD 파이프라인 구축 방법을 학습합니다. 이 과정에서는 GitLab Container Regsitry 인증 정보와 DB 접속 정보를 저장하는 Kubernetes Secret을 Sealed Secret으로 암호화하고 관리합니다. 아울러 애플리케이션에서 사용하는 TLS/SSL 인증서의 TLS Secret은 Reflector를 사용하여 복제되도록 구성합니다. ‘빌드 Job’과 ‘Docker Job’은 Manifest 방식과 동일하게 구성하고, ‘배포 Job’은 Helm 차트를 사용하여 프론트엔드, 백엔드 애플리케이션을 Kubernetes 클러스터에 배포하도록 구성합니다.

  • GitOps 파이프라인 구축

GitLab과 Argo CD를 사용하여 Kubernetes 클러스터에 애플리케이션 배포를 자동화하는 GitOps 파이프라인 구축 방법을 배웁니다. 이 과정에서는 GitLab에 두 개의 프로젝트를 생성하고 구성합니다. 첫 번째 프로젝트는 애플리케이션의 코드베이스를 관리하고 CI 파이프라인을 구성하는 용도로 사용합니다. 두 번째 프로젝트는 Helm 차트를 저장하여 Argo CD가 애플리케이션의 상태 정보를 관리하는 용도로 사용합니다. 또한, Secret을 Vault에 생성하고 Vault Secrets Operator를 사용하여 Kubernetes Secret을 생성하고 동기화합니다.

  • Sentry 연동하기

Sentry를 사용하여 애플리케이션의 오류를 추적하고 성능을 모니터링하는 방법을 학습합니다. 이 과정에서는 Spring Boot 기반의 애플리케이션에 Sentry SDK를 구성하고, 오류 트래킹, 성능 모니터링을 수행하는 방법을 안내합니다. 또한, Slack과 연동해 알림 규칙을 설정하는 방법도 다룹니다.

옵저버빌리티 구축

  • Spring Boot 옵저버빌리티 구성

옵저버빌리티(Observability) 개념, 필요성, 기존 모니터링과의 차이점을 알아보고, Grafana 스택을 사용하여 Spring Boot 애플리케이션의 옵저버빌리티를 구현하는 방법을 학습합니다. 먼저 애플리케이션 코드베이스에 트레이스, 로그, 메트릭을 계측하도록 설정하고 Kubernetes 클러스터에 배포합니다. 그다음, 애플리케이션의 메트릭 정보를 가져오도록 Prometheus ServiceMonitor를 배포합니다. Grafana에서 Prometheus, Tempo, Loki 데이터 소스에 필요한 설정을 추가하고 대시보드를 구성합니다. 마지막으로, 애플리케이션에 부하를 생성한 뒤, 대시보드에서 메트릭, 트레이스, 로그 데이터를 확인합니다.

워크숍 준비 과정

파일럿 워크숍 진행

지난 9월 진행한 인포그랩 내부 파일럿 워크숍 현장 | 인포그랩 GitLab
지난 9월 진행한 인포그랩 내부 파일럿 워크숍 현장

인포그랩에서는 지난 3분기에 DevOps Expert Labs의 콘텐츠 제작과 학습 플랫폼인 웹사이트 개발을 완료했습니다. 서비스를 정식 출시하기 전인 지난 9월 사내 구성원을 대상으로 3일 동안 파일럿 워크숍을 진행했는데요. 이때 웹사이트, 콘텐츠, 강의 진행 방식에서 개선할 점을 찾고, 다양한 의견을 수렴했습니다. 파일럿 워크숍에서 나온 의견은 다음과 같습니다.

  • 웹사이트

    • 반응형으로 사이즈를 줄였을 때 왼쪽 내비게이션에 숫자만 보이면 좋겠다(모니터 1개로 콘텐츠를 보면서 실습하기가 어렵다).
    • 코드 블록을 에디팅할 수 있으면 좋겠다(본인 환경에 맞게 코드를 수정할 때, 다른 에디터에 복사/붙여 넣고 고쳐야 해 번거롭다).
    • 인라인 코드 블록을 복사/붙여넣기 할 수 없어서 불편하다.
    • 코드가 내용이 긴 페이지에서 ‘이전/다음’ 버튼에 가려져 복사되지 않는다.
    • 아키텍처 이미지를 클릭했을 때, 이미지가 더 크게 확대되면 좋겠다.
  • 콘텐츠

    • 슬라이드가 없는 점을 고려해 도식화, 큰 그림을 보완하면 좋겠다.
    • 커맨드와 실행 결과를 하나의 코드 블록으로 묶으면 복사/붙여넣기가 되지 않는다.
    • 부분적으로 복사가 안 돼서 위아래 생략(…) 기호 부분이 없으면 좋겠다(위에 텍스트로 명시해 주면 좋겠다).
    • 같은 AWS 리전에서 실습할 때 이름이 중복되지 않도록 수정하면 좋겠다(eks-admin-policy IAM 정책, 이름 중복으로 생성할 수 없다).
  • 강의

    • 강사 화면이 두 개여서 어디를 설명하는지 놓친다(수강생도 듀얼 모니터 환경이면 좋겠다).
    • 강의 슬라이드가 없다는 사실을 워크숍 사전에 안내하면 좋겠다(강의 슬라이드에 익숙한 사람은 혼란스러울 수 있다).
    • 중간에 잘 못 따라오는 사람을 코칭해야 한다(서브 강사가 필요하다).
    • 워크숍에서 강사는 ‘수강생의 진도를 어떻게 체크할지’ 고민해야 한다.
    • 오픈 채팅방으로 불편, 지원 사항을 취합하고 지원해야 한다.
    • 플랫폼 설치 모두 구성 → 애플리케이션 CI/CD 파이프라인 가이드 → 플랫폼 구축 가이드를 수행하면 각 도구를 구성하는 이유나 역할을 알기 더 쉬울 것 같다(세션이 끝났을 때, 결과를 보여주는 게 좋다. 수강생에게 ‘이런 것을 얻었다’라고 알려주면 좋겠다).

위 내용 가운데 우선순위가 높은 문제와 빠르게 수정할 수 있는 문제를 먼저 개선하였습니다. 그 결과, DevOps Expert Labs 웹 UI를 다음과 같이 보완하였습니다.

첫째, 왼쪽 사이드바에 각 단계의 번호와 제목을 함께 표시하던 구조를 번호만 보이도록 변경하였습니다. 햄버거 아이콘(세 개의 줄이 가로로 놓인 모양)을 클릭할 때만 제목이 함께 보이도록 수정하였습니다.

둘째, 본문 콘텐츠를 가운데에 배치하도록 개선하였습니다.

셋째, 코드 블록에는 원래 복사 기능만 있었는데요. 자물쇠 아이콘을 추가하여 이를 클릭하면 코드를 수정할 수 있도록 바꿨습니다. 이제 코드 블록에서 사용자 환경에 맞게 코드를 수정할 수 있습니다.

넷째, 인라인 코드 블록을 클릭하면 코드가 복사되도록 개선하였습니다.

다섯째, 이미지를 클릭할 때 원본 크기로 확대되도록 수정하였습니다.

여섯째, 수강생이 쉽게 이해하고 사용하도록 콘텐츠를 개선하였습니다.

일곱째, 교육 콘텐츠에 다이어그램을 더 많이 추가하였습니다.

여덟째, 코드를 쉽게 복사하고 붙여 넣도록 복사할 명령 코드 블록과 실행 결과를 분리하고, 복사할 때 불필요한 내용이 포함되지 않도록 보완하였습니다.

아홉째, 사용자 환경에 따라 수정할 부분을 명확히 안내하는 내용도 추가하였습니다.

아울러 워크숍이 원활하게 진행되고, 수강생이 강사의 진도를 잘 따라가도록 다음 사항을 DevOps Expert Labs 운영에 반영하기로 결정하였습니다.

먼저 강사와 수강생 모두에게 듀얼 모니터 환경을 제공하기로 하고, 휴대용 모니터를 구입하였습니다. 또한 실습 도중 문제 생기거나 진도를 따라가기가 어려운 수강생을 돕기 위해 보조 강사를 배치하기로 하였습니다. 강의 도중 필요한 메시지를 전달하거나, 수강생 질문에 답변하는 채널로 커뮤니케이션 도구인 Discord를 사용하기로 결정하였습니다. Discord의 DevOps Expert Labs 채널은 강의가 끝난 뒤에도 커뮤니티로 활용될 예정입니다.

워크숍 사전 미팅

내부 파일럿 워크숍 이후, 인포그랩은 CJ올리브네트웍스, 두산 디지털 이노베이션 실무자를 대상으로 DevOps Expert Labs 워크숍을 진행하기로 하였습니다. 지난 9월 26일에는 고객사와 워크숍 사전 미팅을 진행하였는데요. 이 자리에서는 워크숍 일정과 장소를 확정하고, 고객 요구사항을 수집하였고요. DevOps Expert Labs의 ‘DevOps 플랫폼 구축’ 러닝 패스와 워크숍 커리큘럼을 소개하였습니다.

워크숍은 10월 16일(월)~20일(금) 분당 서현 동네소셜라운지에서 진행하기로 확정하였습니다. 워크숍 커리큘럼은 원래 ‘DevOps 플랫폼 인프라 만들기’, ‘DevOps 플랫폼 기본 도구셋 구성하기’, ‘DevOps 플랫폼 활용하기’, ‘DevOps 플랫폼 옵저버빌리티’ 순으로 구성되었습니다. 그러나 고객사가 Kubernetes 클러스터에 배포하는 CD 파이프라인에 관심이 많았고요. ‘이 내용에 중점을 두고 워크숍을 진행하자’는 의견이 워크숍 사전 미팅에서 나왔습니다. 이에 워크숍에서 ‘DevOps 플랫폼 활용하기’에 해당하는 GitLab CI/CD와 GitOps 파이프라인 구축 과정을 먼저 진행하기로 결정하였습니다. 또한 워크숍 관련 추가 요구사항은 이메일로 받기로 하였습니다.

참고로 CJ올리브네트웍스는 인포그랩이 AWS EKS 클러스터에 구축한 GitLab을 이용하는데요. 이 회사는 EKS 업그레이드, GitLab 업그레이드와 복원 방법, EKS 노드 증설, AutoScale 추가 교육을 이메일로 요청하였습니다. 그중에서도 ‘GitLab 백업과 복구’, ‘GitLab 업그레이드’의 우선순위가 높았는데요. 이 내용도 워크숍에서 다루기로 결정하였습니다.

워크숍 준비

워크숍을 시작하기 전에 수강생이 ‘DevOps 기초’ 러닝 패스를 학습하도록 DevOps Expert Labs 웹사이트에 수강생 계정을 생성하고 전달하였습니다. 또한 수강생에게 제공할 AWS IAM 계정을 생성하고 필요한 권한을 부여하였습니다. 원래 계획한 커리큘럼은 개인이 구축한 DevOps 플랫폼을 활용하여 GitLab CI/CD와 GitOps 파이프라인을 구성하는 것이었습니다. 그러나 워크숍에서는 진행 순서를 변경해 파이프라인 구축 과정을 먼저 진행하기로 결정하였습니다. 따라서 실습에 사용할 EKS 클러스터를 생성하고, 파이프라인 구성과 연동에 필요한 도구셋을 구축하여 실습 환경을 준비하였습니다.

수강생의 기초 지식을 확인하기 위해 아래 항목과 관련된 사전 설문지를 전달하고 답변을 받았습니다.

  • 참여자 성명, 이메일, 전화번호
  • Git & Git Workflow
  • Linux 기본
  • Shell Script 사용
  • Docker 활용
  • Kubernetes 활용
  • Terraform 활용
  • AWS 활용
  • AWS Networking 활용
  • AWS EKS 활용
  • CI/CD 기본
  • DevOps Expert Labs 피드백
    워크숍 사전 설문지 일부 | 인포그랩 GitLab
    워크숍 사전 설문지 일부

워크숍 참가자 5명 중 3명이 설문에 응답하였는데요. 이들의 점수는 50점 만점에 각각 39점, 5점, 44점이었습니다. 한 명에게 기초 학습이 필요하다고 판단하여 워크숍 커리큘럼에 DevOps 기초 러닝 패스 일부를 포함하기로 결정하였습니다.

워크숍 진행

강의장 환경 준비

워크숍 강의실 모습 | 인포그랩 GitLab
워크숍 강의실 모습

2023년 10월 16일. 워크숍 시작일이 밝았습니다. 강사진과 운영진은 워크숍 시작 30분 전인 오전 9시 30분에 도착하였습니다. 인포그랩 DevOps 컨설턴트인 Dexter가 휴대용 모니터와 간식용 다과를 가져왔고요. 인포그랩 DevOps 엔지니어이자 보조 강사인 Rei가 강의 환경을 세팅하였습니다.

빔 프로젝터 스크린에 강의 교재가 있는 DevOps Expert Labs 웹사이트를 띄웠고요. 휴대용 모니터에는 Discord로 화면 공유를 설정하였습니다. 이로써 수강자가 빔 프로젝터 스크린으로 강의 내용을 보면서 Discord의 '방송 보기(Watch Stream)' 기능으로 강사의 실시간 실습 내용을 동시에 확인하도록 구성하였습니다. 지난 파일럿 워크숍에서 수강생이 강의 진도를 놓칠 우려가 제기된 바 있는데요. 그 문제를 미리 방지하려고 하였습니다.

아울러 워크숍 참가자가 휴식 시간에 간식을 즐길 수 있도록 강의실 뒤편에 먹거리를 준비해 두었습니다. 강의장이 위치한 분당 서현 동네소셜라운지에서는 음료를 주문해서 마실 수 있는데요. 수강생이 휴식 시간에 커피 등 음료를 마실 수 있도록 동네소셜라운지 카운터에 미리 알려 두었습니다.

아래에 워크숍 1일차~5일차에 진행한 활동과 수강생 피드백을 각각 정리했습니다.

확장 모니터와 Discord 화면 공유/방송 보기 화면 | 인포그랩 GitLab
확장 모니터와 Discord 화면 공유/방송 보기 화면

1일 차

워크숍 첫 번째 시간에는 강의 진행 방식을 안내하였습니다. 50분 강의 후 10분 휴식, 점심시간, 다과와 음료 이용 방법을 소개하였습니다. 아울러 실습에 필요한 AWS 계정 정보를 제공하였고, 각 참가자가 사용할 AWS 리전을 결정하였습니다. 또 Discord 가입과 채널 참여 방법, 질의응답 방법, 방송 보기 기능을 활용해 강사가 공유한 화면을 보는 방법을 안내하였습니다. 마지막으로 DevOps Expert Labs 웹사이트에서 러닝 패스에 접속하고, 코드 블록과 명령어를 복사/붙여넣기하며, 편집하는 기능을 설명하였습니다.

두 번째 시간에는 ‘DevOps 플랫폼 구축’ 러닝 패스의 전체 과정을 소개하였습니다. ‘DevOps 플랫폼 인프라 만들기’, ‘DevOps 플랫폼 기본 도구셋 구성하기’, ‘DevOps 플랫폼 활용하기’, ‘DevOps 플랫폼 옵저버빌리티’ 등 각 코스에서 다루는 기술과 도구의 사용 목적과 활용 방법을 간략히 설명하였습니다.

세 번째 시간에는 ‘핸즈온 워크스페이스 생성’ 과정을 진행하였습니다. 이 과정에서는 AWS Cloud9을 사용하여 워크숍 실습 환경을 구축하였습니다. 그다음, 점심을 먹었습니다.

오후에는 ‘Git 기초’, ‘GitLab CI 기본 이해하기’, ‘GitLab CI 파이프라인 구축하기’ 과정을 진행하였습니다. 이 가운데 앞의 두 과정은 원래 커리큘럼에 포함되지 않았는데요. 기초 학습이 필요한 수강생이 있어 추가하였습니다.

이렇게 워크숍 1일 차를 마무리하였습니다. 워크숍이 종료된 뒤에는 설문조사를 진행하여 참가자들에게 피드백을 받았습니다. 첫날이라 피곤하셨는지 한 분만 응답해 주셨습니다. ^^ 설문조사 답변은 아래와 같습니다.

워크숍 1일 차 설문조사 응답 내용 | 인포그랩 GitLab
워크숍 1일 차 설문조사 응답 내용

2일 차

전날 Discord 방송 화질이 좋지 않아 불편하다는 피드백이 있었는데요. 워크숍 두번째 날에는 이 문제를 개선하기 위해 Discord Nitro 기능을 구독하여 화질을 개선하였습니다.

이날 오전에는 ‘GitLab CD 파이프라인 구축하기(Manifest)’와 ‘GitLab CD 파이프라인 구축하기(Helm)’ 과정을 진행하였습니다. 오후에는 ‘GitOps 파이프라인 구축하기’, ‘Sentry 기본’, ‘Sentry를 이용한 에러 트래킹 및 성능 모니터링’, ‘Grafana 스택을 이용한 Spring Boot Observability 구현’ 과정을 다뤘습니다.

마지막 ‘옵저버빌리티’ 과정은 수강생들이 이전에 경험해 보지 않아 어려워하였는데요. 이 문제를 해결하기 위해 DevOps 플랫폼 도구셋을 구성한 뒤, 각자의 EKS 클러스터에서 실습을 진행하기로 결정하였습니다. 강의는 이론 설명으로 마무리되었습니다.

워크숍 2일 차가 끝난 뒤 설문조사를 진행하였는데요. 이날 설문조사에는 세 분이 응답해 주셨습니다. 설문조사 답변은 아래와 같습니다.

워크숍 2일 차 설문조사 응답 내용 | 인포그랩 GitLab
워크숍 2일 차 설문조사 응답 내용

3일 차

워크숍 2일 차 피드백을 반영하여 워크숍 세 번째 날에는 수강생에게 ‘옵저버빌리티 구성이 최종적으로 어떤 것을 보려고 하는지’ 설명하였습니다. 전날 Demo 환경을 구성한 뒤, 3일 차 워크숍을 시작하기 전에 Grafana의 옵저버빌리티 대시보드를 보여주었고요. ‘메트릭에서 트레이스’, ‘트레이스에서 로그’, ‘트레이스에서 메트릭’으로 데이터를 탐색하는 과정을 시연하였습니다. Prometheus, Tempo, Loki로 수집한 메트릭, 트레이스, 로그 데이터는 Grafana를 사용해 시각화하고 탐색할 수 있는데요. 시연에서는 ‘이렇게 애플리케이션을 관찰하면 버그나 성능 문제를 미리 감지하고, 심각한 문제가 발생하기 전에 문제를 식별하며 해결할 수 있다’는 걸 보여주었습니다.

한편, 이날 오전에는 ‘Terraform 기본’과 ‘Terraform으로 AWS EC2 생성’ 과정을 진행하였고요. 오후에는 ‘Terraform으로 AWS EKS 생성’, ‘Metrics Server와 Autoscaler 구축하기’, ‘Reflector, Sealed Secret 구축하기’ 과정을 다뤘습니다.

워크숍 3일 차는 큰 문제 없이 잘 마무리되었고요. 이날도 워크숍이 끝난 뒤, 설문조사를 진행하였습니다. 세 분이 설문조사에 응답해 주셨습니다. 설문조사 답변은 아래와 같습니다.

워크숍 3일 차 설문조사 응답 내용 | 인포그랩 GitLab
워크숍 3일 차 설문조사 응답 내용

4일 차

이날 오전에는 ‘cert-manager 구축하기’, ‘NGINX Ingress Controller 구축하기’, ‘MinIO 구축하기’, ‘Prometheus Stack 구축하기’ 과정을 진행하였습니다. 오후에는 ‘Loki 구축하기’, ‘Tempo 구축하기’와 더불어 이전에 완료하지 못해 미뤘던 ‘Grafana 스택을 이용한 Spring Boot Observability 구현’ 과정을 다뤘습니다. 워크숍 시간에 여유가 있어 ‘Vault 구축하기’도 진행하였습니다.

워크숍 4일 차에는 설문지를 전달하지 못해 따로 피드백을 받지 못했습니다.

5일 차

어느덧 워크숍 마지막 날이 왔습니다. 이날 오전에는 **‘Argo CD 구축하기’, ‘SonarQube 구축하기’, ‘Sentry 구축하기’**를 다뤘고요. 오후에는 보조 강사인 Rei가 ‘GitLab 구축하기’ 과정을 진행하였습니다. Rei는 CJ올리브네트웍스의 GitLab 구축 담당 엔지니어로서 자신의 실제 경험을 바탕으로 GitLab 구축 방법을 설명하였습니다. 이날 워크숍에서는 GitLab 구축을 완료한 뒤, 고객사가 사전 미팅에서 추가로 요구했던 ‘GitLab 백업 및 복구’와 ‘GitLab 업그레이드’ 강의도 진행하였습니다.

전체 워크숍 과정을 마친 뒤, 설문조사를 진행하였습니다. 이번에는 다섯 분 모두 설문조사에 응답해 주셨습니다. 설문조사 답변은 아래와 같습니다.

워크숍 5일 차 설문조사 응답 내용 | 인포그랩 GitLab
워크숍 5일 차 설문조사 응답 내용

수료증 수여, 기념품 증정

워크숍 5일 차 과정이 끝난 뒤, 바로 수료식을 진행하였습니다. 인포그랩 CEO인 Penny가 수강생에게 수료증을 전달하였고요. DevOps Expert Labs의 첫 번째 워크숍을 참여한 데 따른 감사의 의미로 선물도 증정하였습니다. 선물은 구글 스마트 스피커 ‘구글 홈 미니’였습니다.

인포그랩 CEO인 Penny(왼쪽)가 수강생에게 수료증을 전달하는 모습 | 인포그랩 GitLab
인포그랩 CEO인 Penny(왼쪽)가 수강생에게 수료증을 전달하는 모습

또 워크숍 참가자들과 기념 촬영도 진행하였습니다.

DevOps Expert Labs의 메인 강사인 Jason(맨 오른쪽)과 보조 강사 Rei(맨 왼쪽), 수강생들이 기념 촬영하는 모습 | 인포그랩 GitLab
DevOps Expert Labs의 메인 강사인 Jason(맨 오른쪽)과 보조 강사 Rei(맨 왼쪽), 수강생들이 기념 촬영하는 모습

맺음말

DevOps Expert Labs의 첫 번째 워크숍은 수강생의 열정적인 참여와 피드백 덕분에 성공적으로 마무리되었습니다. 아쉽게도 Let's Encrypt의 Rate Limits로 인한 SSL/TLS 인증서 발급 문제 등 몇 가지 이슈도 있었는데요. 그래도 워크숍 전에 다양한 오류와 개선 사항을 발견, 수정하였고요. 여러 대비책(휴대용 모니터, Discord 등)을 준비하여 불편한 상황을 방지할 수 있었습니다.

특히 보조 강사 Rei가 강의를 원활히 진행하는 데 큰 도움이 되었는데요. 수강생 가운데 기초 지식이 많이 필요한 수강생이 있었습니다. 이분은 원래 워크숍을 참관만 하고, 실습에는 참여하지 않으려고 했는데요. Rei가 밀착 지원하여 이 수강생이 워크숍을 참관만 하기보다 직접 실습에 참여하도록 유도하였습니다. 이러한 지원 덕분에 이 수강생은 워크숍 과제를 끝까지 완수할 수 있었고요. 그분이 “AWS, Kubernetes, 여러 플랫폼 도구에 친숙해질 수 있었다”는 긍정적인 피드백을 전달해 줘 저희도 뿌듯하였습니다.

인포그랩은 이번 워크숍과 수강생 피드백을 토대로 DevOps Expert Labs의 콘텐츠를 업그레이드하겠습니다. 아울러 서비스 진행 방식도 나날이 개선하겠습니다. 이로써 실무자에게 실질적으로 도움이 되는 DevOps 경험을 제공하고요. 실무자가 DevOps를 더 쉽게 이해하고, DevOps Expert Labs에서 원활하게 DevOps를 실험하도록 적극 지원하겠습니다.

DevOps Expert Labs를 무료 러닝 패스로 경험해 보세요. 또 여러분을 위한 맞춤형 러닝 패스를 인포그랩에 요청하세요! 인포그랩 공식 홈페이지 DevOps Expert Labs 페이지에서 전체 러닝 패스 카탈로그를 다운로드 받고, 무료 체험도 신청하실 수 있습니다.

인포그랩은 GitLab 및 DevOps에 대한 맞춤 기술 지원을 제공합니다. GitLab(Omnibus/Cloud Native Hybrid) 구축 관련한 지원이 필요하시면 문의하기 로 연락 주십시오.