DevOps 플랫폼 구축 워크숍 진행 회고
지난 10월 16일부터 5일간, 분당 서현역 근처에 위치한 동네소셜라운지에서 CJ올리브네트웍스 3명과 두산 디지털이노베이션 2명을 대상으로 DevOps 플랫폼 구축 워크숍을 오프라인으로 진행했습니다. Expert Labs에는 DevOps 실험실, DevOps 기초, DevOps 플랫폼 구축, DevOps 소프트웨어 개발, DevOps 파이프라인 등, 난이도와 프로그래밍 언어/플랫폼에 따른 다양한 러닝 패스가 있는데요. 이번 워크숍은 그 중 DevOps 플랫폼 구축 러닝 패스를 가지고 진행했습니다. 6개월 동안의 준비를 거쳐 고객을 대상으로 처음 진행한 Expert Labs 워크숍이었기 때문에, 그 의미가 컸습니다. 여러 차례 워크숍을 진행한 경험이 있음에도 불구하고, 이번 워크숍은 기대감과 함께 긴장감도 느껴졌죠.
먼저, 이론적 지식과 실습 가이드를 제공하는 SaaS형 교육 서비스인 Expert Labs에 대해 살펴보겠습니다. 그 다음으로 워크숍의 준비 과정, 진행 방식, 피드백에 대해 이야기하고, 워크숍 수료증 전달 및 기념 촬영으로 마무리한 경험을 공유하겠습니다.
Expert Labs 소개
Expert Labs는 현업에서 DevOps 실무를 수행하는 엔지니어의 눈높이에 맞춘 핸즈온 방식의 DevOps 교육 서비스입니다. 이 서비스는 인포그랩이 다양한 기업 및 기관에서 DevOps 컨설팅을 수행하고 DevOps 플랫폼을 구축한 경험과 노하우를 바탕으로 컨텐츠를 제작한 것입니다.
Expert Labs는 초급 및 중급 수준의 프로그래밍 강의를 중심으로 한 국내외 교육 서비스의 한계를 극복하기 위해 출시하였습니다. 이는 초급에서 전문가 수준까지 아우르는 DevOps 교육 컨텐츠를 제공하는 SaaS 플랫폼입니다.
Expert Labs는 현업 실무자들이 전문적인 DevOps 엔지니어로 성장할 수 있도록 지원합니다. 또한, 전문 지식과 역량을 갖추고 엔지니어링 성숙도를 높이는 교육 컨텐츠와 코칭 서비스를 제공합니다.
다음과 같은 특징이 있습니다.
- Google Codelabs 스타일로 만들어져 실습형 콘텐츠를 가지고 학습하는 환경을 제공하여, 학습자가 집중해서 하나씩 실습을 완료할 수 있는 흐름을 제공합니다.
- 슬라이드 및 동영상을 통한 수동적인 단방향 학습 방법과 달리, 단계별로 주어진 미션을 완료하면서 DevOps 기술을 익히고, 플랫폼을 구축하는 방식으로 실제 DevOps 엔지니어가 수행하는 업무를 경험할 수 있습니다.
- 난이도와 주제에 따라 다양한 러닝 패스로 구성되어 있어, 방향을 잃지 않고 단계별로 체계적으로 학습할 수 있습니다.
- DevOps 팀의 엔지니어링 시행착오를 획기적으로 줄여줍니다.
- 최신 DevOps 구축 레퍼런스와 인포그랩의 경험과 노하우를 얻을 수 있습니다.
- DevOps 코치와 함께 워크숍을 진행해 기술적인 문제 없이 빠르게 실전 경험을 완성하는 하이브리드 학습 프로그램입니다.
- Expert Labs 컨텐츠는 SaaS형으로 제공되어, 워크숍 이후에도 온라인으로 이용할 수 있습니다.
Google Codelabs 웹사이트는 개발자들을 위한 학습 리소스입니다. 코드랩은 다양한 주제와 기술에 관한 실습을 제공하여 개발자들이 실제 프로젝트에 적용할 수 있는 기술적인 스킬을 향상시킬 수 있게 도와줍니다.
DevOps 기초 러닝 패스

DevOps 기초 러닝 패스는 워크숍 시작 며칠 전에 미리 제공되는데요. 이는 DevOps 플랫폼 구축 러닝 패스가 중급 이상의 수준을 요구하기 때문에, 워크숍 참가자들이 DevOps의 기본 지식과 도구에 대한 이론을 사전 학습할 수 있도록 돕기 위함입니다.
| 기술 | 사전 학습 Lab | 설명 |
|---|---|---|
| DevOps 기초 | DevOps 기초 | DevOps가 발전한 여정, 안티패턴, 모범사례 등을 알아보며 DevOps 배경을 이해합니다. |
| 패키지 매니저 및 빌드 도구 이해하기 | 프로그래밍 언어별 패키지 매니저 및 빌드 시스템 기초를 이해합니다. | |
| Git 기초 | Git 기초 | Git의 개념과 원리를 이해하며, 자주 쓰는 명령어를 실습하며 Git에 대해 학습합니다. |
| Git Common-Flow 이해 | Git 브랜치 체계 중 Git Common Flow를 알아보며, Git으로 프로젝트를 관리하는 방법을 이해합니다. 또한, 단계별로 주로 어느 파이프라인을 동작하는지 학습합니다. | |
| GitLab 기초 | GitLab 프로젝트 준비하기 | GitLab의 프로젝트 구성 방식을 알아보고 초기 구축 방법에 대해 학습합니다. |
| GitLab 환경 준비 - 개인화 설정 | Account 등 여러 설정을 통해 GitLab을 개인에 맞춤 적용하는 방법을 학습합니다. | |
| GitLab CI 기본 이해하기 | GitLab 파이프라인을 구성해 보고, 구조를 이해합니다. GitLab CI 문법에 대해 학습합니다. | |
| Docker 기초 | Docker 기본 | Docker의 기본적인 요소에 대해 살펴보고, 실행 원리를 이해합니다. |
| Terraform 기초 | Terraform 기본 | 대표적인 IaC 도구인 Terrafrom을 알아보며, 기본적인 문법을 학습합니다. |
| K8S 기초 | Kubernetes 콘셉트 및 아키텍처 이해 | Kubernetes의 개념과 등장배경에 대해 알아봅니다. kubeadm 등 여러 도구로 클러스터를 설치하는 방법을 학습합니다. |
| Kubernetes YAML 이해 | 쿠버네티스는 어떻게 YAML을 통해 선언형으로 오브젝트를 관리하는지 학습합니다. | |
| Kubernetes Service 이해 | Service 리소스와 Service의 종류를 알아봅니다. 이후 Ingress를 학습합니다. | |
| Kubernetes Service 네트워크 모델 이해 | “Cluster IP 동작 방식”, “외부와 서비스 간의 통신”에 대해 알아보며 K8S 서비스 네트워크 모델에 대해 이해합니다. | |
| Sentry 기초 | Sentry 기초 | Sentry를 왜 사용 하는지를 이해하며, 애플리케이션 트래킹 방법을 학습합니다. |
DevOps 플랫폼 구축 러닝 패스

DevOps 플랫폼 구축 러닝 패스는 프로덕션 레벨의 준비된 환경, 코드, 설정을 사용하여 "제로 베이스에서 완성된 DevOps 플랫폼 환경"을 목표로 구성되어 있습니다.
소프트웨어 개발과 배포, 모니터링 전반에 걸친 프로세스와 자동화 환경에서 협업을 돕는 플랫폼이 있는지 없는지에 따라 제품/서비스를 출시하는 속도, 빈도, 품질 및 안정성이 달라집니다.
DevOps 플랫폼은 소프트웨어 개발 라이프사이클(SDLC, Software Development Life Cycle)에서 개발자와 운영자가 모두 활용할 수 있는 도구 모음입니다. 이 플랫폼은 소스코드 형상 관리, 애플리케이션 빌드, 테스트, 배포를 자동화하는 CI/CD 및 GitOps 파이프라인, 그리고 모니터링 및 옵저버빌리티 기능을 제공합니다. 또한, 스크릿(Secret) 및 보안 관리 도구, 애플리케이션 오류를 추적하고 다양한 채널로 알림을 전송하는 도구와 Kubernetes 클러스터를 안정적이고 효율적으로 운영하는 데 필요한 도구도 포함돼 있습니다.
실제로, 인포그랩에서는 Insight, Plumber, Expert Labs 등의 여러 애플리케이션을 AWS EKS 클러스터에서 이 도구셋을 기반으로 운영하고 있습니다.
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 구축
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 클러스터에 배포하고 구성하는 방법을 학습합니다. 이는 Kubernetes 클러스터 서비스의 외부 액세스를 관리하는 리소스인 Ingress가 작동하려면 필요한 Ingress Controller 중 하나입니다. Helm 차트를 사용하여 NGINX Ingress Controller를 배포하는 방법, NGINX Ingress Controller로 생성된 NLB를 확인하고 DNS에 레코드 등록하는 방법 등이 설명되어 있습니다.
-
Argo CD 구축
선언적 GitOps 지속적 배포 도구인 Argo CD를 Kubernetes 클러스터에 배포하고 구성하는 방법을 학습합니다. Argo CD Helm 차트의 구성 정보를 배포 환경에 맞게 설정하는 방법, Helm 차트로 Kubernetes 클러스터에 배포하는 방법, Argo CD 웹 UI에 접속하는 방법 등이 설명되어 있습니다.
-
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 데이터 소스에 필요한 설정을 추가하고 대시보드를 구성합니다. 마지막으로, 애플리케이션에 부하를 생성한 후, 대시보드에서 메트릭, 트레이스, 로그 데이터를 확인합니다.
워크숍 준비과정
파일럿 워크숍 수행
Expert Labs의 컨텐츠 작성과 학습 플랫폼 웹사이트 개발이 완료되어, 정식 출시 전인 9월에 사내 직원들을 대상으로 3일간 파일럿 워크숍을 진행하였습니다.
파일럿 워크숍을 진행하면서 다양한 오류와 개선 의견이 있었습니다.
- 웹사이트
- 반응형으로 사이즈 줄었을때 왼쪽 네비게이션에 숫자만 보이면 좋겠다. (모니터 1개로 컨텐츠를 보면서 실습이 어려움)
- 코드 블럭을 에디팅할 수 있었으면 좋겠다. (본인 환경에 맞게 코드를 수정할 때, 다른 에디터에 복사/붙여넣고 수정해야하는 번거러움이 있음)
- 인라인 코드 블록 복사/붙여넣기가 안돼서 불편함
- 내용이 긴 페이지에서 이전/다음 버튼에 가려져 코드 복사가 안됨
- 아키텍처 이미지를 클릭했을 때 더 크게 확대되었으면 좋겠다.
- 컨텐츠
- 슬라이드가 없는 점을 고려한 도식화 , 큰그림 보완 하면 좋겠다.
- 커맨드와 실행 결과를 하나의 코드 블럭으로 묶으면 복사 붙여넣기가 불가능한 문제 발생
- 부분적으로 복사가 안돼서 위 아래 생략(…) 기호 부분이 없었으면함. (위에 텍스트로 명시해주시면 좋을 듯)
- 같은 AWS 리전에서 실습할 때 이름 중복되지 않도록 수정 (
eks-admin-policyIAM 정책, 이름 중복으로 생성 불가)
- 강의
- 강사의 화면이 두 개여서, 어디를 설명하는지 놓치게 됨 (수강생도 듀얼 모니터 환경이면 좋겠다.)
- 강의 슬라이드가 없다는 것을 워크숍 사전에 안내하면 좋겠다. (강의에 익숙한 사람들은 혼란스러울 수 있음)
- 중간에 잘 못 따라 오는 사람에 대한 코칭 필요함 (서브 강사 필요)
- 워크숍에서 강사는 수강자의 진도를 어떻게 체크할지?
- 오픈채팅방을 통한 불편, 지원 사항 취합 및 지원
- 플랫폼 설치를 다 구성한 상태 → 애플리케이션 CICD 파이프라인 가이드 → 플랫폼 구축 가이드를 수행하면 각 도구를 구성하는 이유나 역할을 알기 더 쉬울 것 같기도 합니다. (세션이 끝났을때, 결과를 보여주는 것 좋다. 그래서 What(?) 이런것을 얻었다. 해주면 좋겠다.)
우선 순위가 높은 것과 빠르게 수정하고 개선할 수 있는 것을 먼저 반영했습니다.
다음과 같이 Expert Labs 웹 UI를 개선하였습니다.
왼쪽 사이드 바에 각 스탭의 번호와 제목을 함께 표시하던 구조를 번호만 보이도록 변경하였습니다. 햄버거 아이콘(세개의 줄이 가로로 놓인 모양)을 클릭했을 때에만 제목이 함께 보이도록 수정하였습니다. 또한, 본문 컨텐츠 영역을 가운데에 배치하도록 개선하였습니다.
코드 블럭에는 원래 복사 기능만 있었는데, 좌물쇠 아이콘을 추가하여 클릭하면 코드를 수정할 수 있도록 개선했습니다. 이제 코드 블럭에서 사용자의 환경에 맞게 코드를 수정할 수 있습니다.
인라인 코드 블록을 클릭하면 복사되도록 개선했습니다. 이미지를 클릭할 때 원본 크기로 확대되도록 수정했습니다.
학습자들이 이해하고 사용하기 쉽도록 컨텐츠를 개선했습니다.
교육 컨텐츠에 다이어그램을 더 많이 추가하였습니다. 복사 및 붙여넣기의 편의성을 위해, 복사할 명령 코드 블록과 실행 결과를 분리하고, 복사 시 불필요한 내용이 포함되지 않도록 보완했습니다. 또한, 사용자의 환경에 따라 수정해야 하는 부분을 명확히 안내하는 내용도 추가하였습니다.
강의가 원활하게 진행될 수 있도록, 수강생이 강사의 진도를 놓치지 않게 다음과 같은 방법을 결정하였습니다.
먼저, 강사와 수강생 모두에게 듀얼 모니터 환경을 제공하기 위해 휴대용 모니터를 구입하였습니다. 또한, 실습 중 문제가 발생하거나 진도를 따라가는데 어려움을 겪는 수강생을 돕기 위해 부 강사를 배치하기로 하였습니다. 강의 중 필요한 메시지 전달이나 질문에 대한 답변 등을 위해 Discord를 사용하기로 결정하였습니다. 이 Discord는 강의가 끝난 후에도 커뮤니티로 활용될 예정입니다.
워크숍 사전 미팅
워크숍의 일정과 장소를 확정하고 요구사항을 수집하기 위해, 9월 26일에 워크숍 사전 미팅을 진행하였습니다.
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 기초 러닝 패스를 학습할 수 있도록 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 기본
- Expert Labs에 대한 피드백이 있으면 자유롭게 알려주세요.

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

강의장 환경 준비
워크숍 시작 30분 전인 오전 9시 30분에 도착했습니다. 첫날이라 참관하였던 Dexter가 휴대용 모니터, 간식용 다과을 가져왔고, 보조 강사인 Rei와 함께 세팅을 하였습니다.
빔 프로젝터 스크린에는 강의 교재인 Expert Labs 웹사이트를, 휴대용 모니터에는 Discord로 화면 공유를 설정하였습니다. 이를 통해 수강자는 스크린에 표시되는 강의 내용을 확인하면서, Discord의 '방송 보기(Watch Stream)' 기능을 이용해 강사가 실시간으로 수행하는 실습 내용도 동시에 확인할 수 있습니다. 이렇게 함으로써, 파일럿 워크숍에서 문제가 되었던 강의 진도를 놓치는 일을 방지하였습니다. 추가로, 워크숍 참가자들이 휴식 시간에 간식을 즐길 수 있도록, 강의실 뒷편에 간식을 준비해 두었습니다. 또한, 커피 등 음료를 주문하여 마실 수 있도록 카운터에 알려 두었습니다.

1일차
워크숍의 첫 시간에는 진행에 관한 안내를 하였습니다. 50분 강의 후 10분 휴식, 점심시간, 그리고 다과와 음료 이용에 대한 안내도 포함되었습니다. 또한, 실습에 필요한 AWS 계정 정보를 제공하였고, 각 참가자가 사용할 AWS 리전을 결정했습니다. Discord 가입 및 채널 참여 방법, 질의응답 방법, 그리고 방송 보기를 통해 강사가 공유한 화면을 보는 방법에 대해 안내하였습니다. 마지막으로, Expert Labs 웹사이트에서 러닝 패스에 접속하고, 코드 블럭과 명령어를 복사/붙여넣기, 그리고 편집하는 기능에 대해 안내하였습니다.
두 번째 시간에는 “DevOps 플랫폼 구축” 러닝 패스의 전체 과정을 소개했습니다. "DevOps 플랫폼 인프라 만들기", "DevOps 플랫폼 기본 도구셋 구성하기", "DevOps 플랫폼 활용하기", 그리고 "DevOps 플랫폼 옵저버빌리티" 각 코스에서 다루는 기술과 도구들의 사용 목적과 활용 방법을 간략히 설명하였습니다.
세 번째 시간에는 "핸즈온 워크스페이스 생성" 과정을 진행했습니다. 이 과정은 AWS Cloud9을 사용하여 워크숍 실습 환경을 구축하는 것입니다. 그 후 점심식사를 하였습니다.
오후에는 "Git 기초", "GitLab CI 기본 이해하기", 그리고 "GitLab CI 파이프라인 구축하기" 과정을 진행했습니다. 이 중 앞의 두 과정은 원래 커리큘럼에 포함되지 않았지만, 기초 학습이 필요한 수강생이 있어 추가하였습니다.
이렇게 1일차가 마무리되었습니다. 워크숍이 종료된 후에는 설문조사를 통해 참가자들에게 피드백을 받았습니다. 이는 다음 날 워크숍 진행에 피드백을 반영하기 위한 것이었습니다.
첫 날이라 피곤하셨던 것 같아서, 한 분만 응답해 주셨습니다. ^^
| Expert Labs (labs.infograb.io) 환경에 대한 피드백을 부탁 드려요. | 워크숍 공간에 대한 피드백 부탁 드려요. | 워크숍 과정에 대해 피드백 부탁 드려요. | 내일 코치에게 요청 하실 사항이 있나요? |
|---|---|---|---|
| 자료가 잘 정리되어 있고, 실습환경이 잘 준비된점이 마음에 들었습니다. 다만, 첫날 수업 내용에 비해 진도가 계획 만큼 나아가지 못해 5일차 계획 내용까지 다 학습할 수 있을지 조금 걱정이 됩니다^^ | 워크숍 공간 아주 마음에 듭니다~! | 과정 중에도 말씀 드렸지만, 코드 area에 결과 부분이 포함되어 있어서 바로 복사해서 붙여넣기를 할수 없는 점이 조금 불편했습니다. | 디스코드 화면 공유 시 bitrate를 좀 높여 주시면 좋겠습니다. 좀 흐릿하게 보입니다^^---디스코드 화면 공유 시 bitrate를 좀 높여 주시면 좋겠습니다. 좀 흐릿하게 보입니다^^과정 중에도 말씀 드렸지만, 코드 area에 결과 부분이 포함되어 있어서 바로 복사해서 붙여넣기를 할수 없는 점이 조금 불편했습니다.워크숍 공간 아주 마음에 듭니다~!자료가 잘 정리되어 있고, 실습환경이 잘 준비된점이 마음에 들었습니다. 다만, 첫날 수업 내용에 비해 진도가 계획 만큼 나아가지 못해 5일차 계획 내용까지 다 학습할 수 있을지 조금 걱정이 됩니다^^ |
2일차
전날 Discord 방송의 화질이 좋지 않아 불편하다는 피드백에 따라, Nitro를 구독하여 화질을 개선하였습니다.
오전에는 "GitLab CD 파이프라인 구축하기 (Manifest)"와 "GitLab CD 파이프라인 구축하기 (Helm)" 과정을 진행했습니다. 오후에는 "GitOps 파이프라인 구축하기", "Sentry 기본", "Sentry를 이용한 에러 트래킹 및 성능 모니터링", 그리고 "Grafana 스택을 이용한 Spring Boot Observability 구현" 과정을 진행했습니다.
마지막 “옵저버빌리티” 과정은 수강생들이 이전에 경험해보지 않아 어려워하였기 때문에, DevOps 플랫폼 도구셋을 구성한 후에 각자의 EKS 클러스터에서 실습을 진행하기로 결정하였습니다. 강의는 이론 설명으로 마무리되었습니다.
2일차 설문에는 세 분이 응답해 주셨습니다.
| 오늘 Expert Labs는 어땠나요?
| (0: 아주 별로 ~ 5: 아주 훌륭) | 워크숍 과정에 대해 피드백 부탁 드려요. | AWS 기반 워크숍 환경에 대한 피드백을 부탁 드려요. | 내일 코치에게 요청 하실 사항이 있나요? |
|---|---|---|---|
| 3 | 옵저버빌리티 구성이 좀 어려운것 같습니다. 사전 학습이 좀 필요한 것인지 yml파일 수가 많다보니 이해하기 어려운 점들이 있는것 같습니다. | GitOps환경 구성에 대한 부분에서 파이프라인 구성시 참고할만한 내용이 많아서 유용하였습니다. | 옵저버 빌리티구성이 결과적으로 무엇을 보기 위해 지금 현재의 작업을 하고 있는것인지 좀 더 설명해주시면 감사하겠습니다. |
| 4 | observability 강의 부분이 이론에 대한 설명과 실습 위주로 진행하면 조금 더 이해를 도울 수 있을거 같아요! | 금주 강의를 진행하면서 아래 자료에 대한 피드백이 가능한 선에서 부탁드립니다! |
- DevOps 장애에 대한 지표 자료
- DevOps 혹은 GitLab을 운영하면서 추천해 주시는 유료/무료 솔루션 자료 | | 5 | 리스소를 삭제 후 재 성성하는 과정에서 let's encrypt 리밋 에러가 발생되었습니다. 추후 실습과정에도 이 부분은 고려가 되어야 할것 같습니다. | 첫날 피드백이 빠르게 개선되어 좋았습니다.^^ | 특이사항 없습니다. |
3일차
2일차 피드백 요청에 따라 옵저버빌리티 구성이 최종적으로 어떤 것을 보려는 것인지 설명하였습니다. 전날 Demo 환경을 구성한 후, 3일차 시작 전에 Grafana의 옵저버빌리티 대시보드를 보여주며, "메트릭에서 트레이스", "트레이스에서 로그", 그리고 "트레이스에서 메트릭"으로 데이터를 탐색하는 시연을 보여주었습니다. Prometheus, Tempo, Loki로 수집한 메트릭, 트레이스, 로그 데이터는 Grafana를 통해 시각화하고 탐색할 수 있습니다. 이를 통해 애플리케이션을 관찰하면 버그나 성능 문제를 미리 감지하고, 심각한 문제가 발생하기 전에 문제를 식별하고 해결할 수 있음을 보여주었습니다.
오전에는 "Terraform 기본"과 "Terraform으로 AWS EC2 생성" 과정을 진행했고, 오후에는 "Terraform으로 AWS EKS 생성", "Metrics Server와 Autoscaler 구축하기", "Reflector, Sealed Secret 구축하기" 과정을 진행했습니다.
3일차는 큰 문제 없이 잘 마무리되었고, 세 분이 설문에 응답해 주셨습니다.
| 오늘 Expert Labs는 어땠나요?
| (0: 아주 별로 ~ 5: 아주 훌륭) | 워크숍 과정에 대해 피드백 부탁 드려요. | AWS 기반 워크숍 환경에 대한 피드백을 부탁 드려요. | 내일 코치에게 요청 하실 사항이 있나요? |
|---|---|---|---|
| 5 | 만족스럽습니다. | 어제보다는 조금 알 것 같습니다. | 없습니다. |
| 5 | 오늘 교육도 좋았습니다~! 다만, 컨텐츠에 일부 오타나 문장이 어색한 표현들이 쪼금 보입니다.^^ 수정되면 더 완벽한 강의가 될것 같습니다. | 넵~! | 오늘 하루도 수고 많으셨습니다! 화이팅 입니다^^ |
| 4 | 전반적으로 만족합니다~! | ||
| EKS 부분을 실습하면서 OIDC, ASSUME ROLE, RBACK 등 IAM에 관련된 부분이 어려운거 같습니다ㅎㅎ | terraform에 대한 실습 부분이 좋았습니다~! |
4일차
오전에는 "cert-manager 구축하기", "NGINX Ingress Controller 구축하기", "MinIO 구축하기", 그리고 "Prometheus Stack 구축하기" 과정을 진행하였습니다. 오후에는 "Loki 구축하기", "Tempo 구축하기"와 더불어 이전에 완료하지 못하여 미루었던 "Grafana 스택을 이용한 Spring Boot Observability 구현" 과정도 진행하였습니다. 추가로 시간이 남아 "Vault 구축하기"도 진행하였습니다.
4일차에는 설문을 전달하지 못하여 응답을 받지 못했습니다.
5일차
오전에는 "Argo CD 구축하기", "SonarQube 구축하기", "Sentry 구축하기"를 진행하였습니다. 오후에는 보조 강사인 Rei가 "GitLab 구축하기" 과정을 진행하였습니다. 이 과정은 CJ올리브네트웍스의 GitLab 구축 담당 엔지니어인 Rei의 실제 경험을 바탕으로 설명하게 된 것입니다. 또한, GitLab 구축이 완료된 후에는 사전 미팅에서 추가로 요구되었던 "GitLab 백업 및 복구"와 "GitLab 업그레이드"도 진행하였습니다.
전체 워크숍 과정을 완료하고 설문 응답을 받았습니다.
| 워크숍의 난이도는 어떠셨나요? | 워크숍의 전반적인 만족도는 어떠셨나요? (0: 아주 별로 ~ 5: 아주 훌륭) | 워크숍에서 가장 유용한 점을 알려주시겠어요? | 워크숍에서 개선이 필요하다고 생각하는 부분은 무엇인가요? | 워크숍에서 어려웠던 점이 있다면 어떤 부분일까요? | 다음 워크숍에서 다루면 좋을 주제나 내용이 있다면 자유롭게 알려주세요. | | ---------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | 적절함 | 5 | AWS cloud9 / Openlens 좋았습니다. | 복사 / 붙여넣기가 많은데 시간 조정이 필요할 것 같습니다. | | | | 어려움 | 5 | 다양한 devops 툴셋들을 학습하여, 실무에 많은 도움이 될것 같습니다. | 일부 외부적인 제약(let's encrypt 문제 등)으로 인해 실습에 문제가 있었던 부분이 있었습니다. 이러한 부분들이 개선되면 더욱 좋은 교육이 될것 같습니다.^^ | 내용이 많다보니, 처음 보는 내용은 일부 따라가기 조금 어려운 부분이 있었습니다.^^ | 데브옵스에 대한 best practice 사례들을 소개하는 부분들이 추가되면 좋겠습니다^^ 좋은 교육 제공해 주셔서 감사하며, 긴시간 정말 고생 많으셨습니다! 인포그랩 화이팅~~!! | | 적절함 | 5 | 이론과 실습기반의 수업이 좋았습니다! | export lab의 코드 부분 복사 기능이 있으면 좋을거 같아요! | 다루는 내용이 전반적으로 방대하다보니 특정 부분에서는 ex) IAM 등 잘 이해를 못하고 넘어가는 부분이 있었는데,, 그런 부분이 조금 어려웠다고 생각합니다~ | IAM, SA, OIDC 등 권한과 정책에 대해서 특별 세션이 있으면 좋을거 같아요! | | 어려움 | 5 | aws나 쿠버네티스 헬름 등에 대해서도 자연스럽게 친숙해 질 수 있었어서 좋았습니다. | 코드블럭들에 주석들이 좀 더 들어가 있으면 좋을것 같습니다. 수업중에 수정하는것 이외의 내용에 대한 | 쿠버네티스 등에 대한 사전지식도 필요할것 같습니다. | | | 어려움 | 4 | 깃랩을 EKS환경에서 운영함에있어 꼭필요했던 백업과 복원등을 학습할 수 있어 좋았으며 헬름을 잘 활용해 다양한 솔루션들을 쉽게 설치해보고 조작해볼 수있던점들이 유익하였습니다 | Values.Yaml에 구성되는 속성들이 너무많은데 주요속성에 주석이있었으면 좋았을것같습니다 | 워크숍보다는 개인적으로 AWS권한설정들이 많이 어렵게 느껴졌습니댜 | Ansible/ Argo rollout 등 |
수료증 수여 및 기념품(선물?) 증정
5일 동안의 워크숍을 완료 후 수료증을 전달하고, 첫 번째 워크숍 참여에 대한 감사의 의미로 준비한 선물도 증정하였습니다.

워크숍 참가하신 분들과 기념 촬영도 하였습니다.

마무리
Let's Encrypt의 Rate Limits로 인한 SSL/TLS 인증서 발급 문제 등 몇 가지 이슈가 있었음에도 불구하고, 참가자들의 열정적인 참여와 피드백 덕분에 워크숍은 성공적으로 마무리되었습니다. 이는 워크숍 전에 다양한 오류와 개선사항을 수정하고, 불편한 상황을 방지하기 위한 여러 대비책을 준비했던 것과 보조 강사의 도움이 큰 역할을 했기 때문입니다. 이러한 대비책에는 휴대용 모니터, Discord 등이 포함되어 있습니다.
특히, 처음에 기초 지식이 부족했던 분은 참관하는 형태로 진행하려고 했습니다. 그러나 문제가 발생하거나 어려운 부분에 대해서는 보조 강사가 밀착 지원해 주었습니다. 이러한 지원 덕분에 워크숍 과제를 끝까지 완수할 수 있었고, AWS, Kubernetes, 여러 플랫폼 도구에 친숙해질 수 있었다는 긍정적인 피드백을 받아 뿌듯했습니다.
워크숍에서 발생한 문제점과 참가자들의 피드백에 근거하여, 불편함 없이 이해하기 쉽게 컨텐츠를 개선하겠습니다. 또한, 진행 방식을 개선하여 참가자들에게 더 실질적인 경험을 제공할 수 있는 Expert Labs와 워크숍을 만들기 위해 노력하겠습니다.
무료 러닝패스로 경험하고 맞춤 러닝패스를 요청하세요! 전체 러닝패스 카탈로그와 무료 체험 신청은 인사이트 Expert Labs 페이지에서 가능합니다.
사전 동의 없이 2차 가공 및 영리적인 이용을 금하며, 온·오프라인에 무단 전재 또는 유포할 수 없습니다.
Jason
DevOps Architect
DevOps 도입이 필요하신가요?
인포그랩 전문가가 맞춤 을 도와드립니다.