안녕하세요. 인포그랩 DevOps 엔지니어 Toma입니다. 오늘은 제가 인포그랩에 입사한 후, 온보딩을 거쳐 고객사의 DevOps 프로젝트에 투입된 과정을 공유하려 합니다. 특히 고객사의 GitLab 운영 안정화에 도움이 되도록 GitLab을 빠르게 마스터하고, 고객사 아키텍처를 신속히 파악해 업무에 적응한 방법을 주로 말씀드리겠습니다.

expertLABS로 GitLab 고속 학습

인포그랩 DevOps 전문 학습 솔루션 expertLABS 코스 모음 | 인포그랩 GitLab
인포그랩 DevOps 전문 학습 솔루션 expertLABS 코스 모음

저는 경력직 DevOps 엔지니어로 인포그랩에 입사했습니다. 평소 저는 리눅스, Docker, Kubernetes, Git, Jenkins 파이프라인 기본 지식은 충분히 있었습니다. 그러나 GitLab은 Git을 사용하는 정도로 알고 있었습니다. 저는 경력이 있어서 입사 이후 고객사의 DevOps 프로젝트에 빨리 투입될 예정이었습니다. 따라서 단기간에 GitLab을 마스터하고, 고객사를 능숙하게 지원할 만큼 역량을 쌓아야 했습니다.

저는 GitLab을 신속히 마스터하기 위해 다양한 콘텐츠를 학습했습니다. 그중 가장 큰 도움이 된 콘텐츠는 expertLABS의 ‘GitLab 운영 시작하기’ 코스와 ‘리얼월드 앱으로 GitLab CI/CD 시작하기’ 코스였습니다. expertLABS는 인포그랩의 DevOps 전문 학습 솔루션입니다. 이는 버전 제어, CI/CD, GitOps, Infrastructure as Code(IaC), 컨테이너, 옵저버빌리티 등을 주제로 다양한 DevOps 학습 콘텐츠를 제공합니다.

저는 ‘GitLab 운영 시작하기’ 코스로 GitLab 운영의 기본과 실무를 배우고 실습했습니다. 이 코스에는 고객사의 GitLab 운영을 지원하는 데 도움이 되는 내용이 많았습니다. 제가 ‘GitLab 운영 시작하기’ 코스에서 배운 내용과 학습 효과는 다음과 같습니다.

  1. GitLab 설치, 설정: GitLab 설치 방법, 프로젝트 생성 방법, 리포지터리 관리 방법을 학습했습니다. 이로써 GitLab의 주요 기능과 컴포넌트를 이해했습니다.
  2. 백업, 복원 실습: GitLab 데이터를 안정적으로 운영하기 위한 백업 설정 방법과 복원 방법을 실습했습니다. 이 내용은 운영 환경 문제를 대비하는 데 도움이 됐습니다.
  3. CI/CD 파이프라인 설정: YAML 파일을 사용해 빌드, 테스트, 배포 단계를 나눈 파이프라인을 테스트했습니다. 이로써 GitLab CI/CD 기능 이해도를 높였습니다.
  4. Docker 기반 GitLab 실행: Docker로 GitLab을 실행해 로컬 환경에서 다양한 실험을 진행했습니다. 이로써 GitLab 설정 이해도가 향상됐습니다.

아울러 ‘리얼월드 앱으로 GitLab CI/CD 시작하기’ 코스에서는 CI/CD 개념과 GitLab Runner 설정 방법, Spring Boot 프로젝트 CI/CD 적용 방법을 학습하고 실습했습니다. 이 코스로 GitLab CI/CD 기초부터 파이프라인 작성법, 워크플로까지 두루 경험했습니다. 제가 ‘리얼월드 앱으로 GitLab CI/CD 시작하기’ 코스로 배운 내용과 학습 효과는 다음과 같습니다.

  1. 실무 환경에서 CI/CD A to Z 구현: 실무 관점에서 GitLab CI/CD를 구축하고 실습했습니다. 이로써 개인 프로젝트 수준뿐만 아니라 현업 실무 수준의 CI/CD 구현 경험을 쌓았습니다.
  2. 운영에 필요한 GitLab Runner 기본 구성 이해: GitLab Runner 역할과 설정 방법을 심층 학습했습니다. CI/CD 파이프라인을 원활하게 실행하기 위한 GitLab Runner 설정과 관리 노하우도 습득했습니다.

홈 랩 실습으로 학습 효과 극대화

홈 랩 구성 개념도 | 인포그랩 GitLab
홈 랩 구성 개념도

저는 매주 학습한 내용을 노션에 기록했습니다. 주말이나 여유 시간이 있을 때, 노션에 정리한 문서를 다시 읽으며 복습했습니다. 특히 학습 효과를 극대화하기 위해 홈 랩(Home Lab)을 구축해 자주 실습했습니다.

홈 랩은 학습과 실습을 위해 개인이 가정에 구축한 소규모 IT 인프라 환경입니다. 이는 서버, 네트워크 장비, 저장 장치를 활용해 실제 기업 환경과 비슷한 환경에서 실습하도록 구성합니다. 주로 사용하지 않는 PC로 홈 랩을 구성하며, 공유기의 포트 포워딩 기능으로 개인 도메인을 추가해 실습 환경을 구축할 수 있습니다.

저의 홈 랩도 이러한 방식으로 구축했습니다. 현재도 학습한 내용을 홈 랩으로 실습하고 복습하며 이해도를 높입니다. 다음은 저의 홈 랩 환경입니다.

  • Master Server 상세
    • CPU : AMD GX-424CC
    • RAM : 16GB
    • OS : Ubuntu 22.04
  • Runner Server 상세
    • CPU : Intel(R) Celeron(R) 2957U
    • RAM : 16GB
    • OS : Ubuntu 22.04

저는 이러한 홈 랩 환경을 활용해 CI/CD를 학습했습니다. 구성은 Master Server에서 파이프라인 요청을 하고, Runner Server가 이를 실행하는 방식으로 설정했습니다. 보안을 강화하기 위해 기본 포트(22, 80, 443 등)는 사용하지 않았습니다. 이는 트래픽 부하, 랜섬웨어와 같은 보안 취약점을 줄이기 위함입니다.

홈 랩은 단기간에 GitLab 학습 효율을 높이는 데 유익했습니다. 기술을 심화 학습하고 실습하는 환경이 집에도 있으니 언제든지 기술을 공부하고, 실험하며, 검증할 수 있었습니다. 이러한 방식으로 GitLab Runner 설정, CI/CD 구성, 배포 전략 등 다양한 실무를 단계별로 깊이 있게 이해할 수 있었습니다. 나아가 DevOps, 네트워크 관리, 시스템 운영 등 지식을 실습으로 쉽고 빠르게 익힐 수 있습니다.

홈 랩 실습이 고효율 학습에 좋은 이유

출처=픽사베이 | 인포그랩 GitLab
출처=픽사베이

홈 랩 실습은 다음 측면에서 빠른 학습에 도움이 됐습니다.

  1. 현업 환경과 유사한 수준 실습

    홈 랩은 가상 환경이 아닌 실제 서버와 네트워크를 구성해 실습하는 환경을 제공합니다. 이로써 현장 실무와 유사한 시나리오로 실습할 수 있어 이론 지식을 실무 기술로 체득하는 데 효과적입니다.

  2. 보안, 네트워크 실습

    홈 랩에서는 포트 포워딩, 방화벽 설정, 네트워크 세분화, 보안 구성 등 실제 네트워크와 보안 개념을 적용해 실습할 수 있습니다. 이로써 시스템 취약성 테스트, 네트워크 모니터링, 접근 제어 등을 실습하면서 보안 역량을 강화할 수 있습니다. 외부 카페나 기타 전철 등 실내에서 사용하는 IP, Port, User, Password를 알면 쉽게 접근할 수 있습니다.

  3. 자유로운 학습

    기업의 인프라 환경에서는 모든 테스트와 실습이 제한될 수 있습니다. 그러나 홈 랩에서는 자유롭게 다양한 기술을 시도할 수 있습니다. 이는 Docker, Kubernetes 등 최신 DevOps 도구로 실험하고, 파이프라인을 구성하거나 배포 전략을 실습하는 데 적합합니다.

  4. 문제 해결 능력 향상

    홈 랩 환경에서는 실습 도중 예상치 못한 문제가 자주 발생합니다. 그러나 이러한 문제를 스스로 분석하고 바로잡으면 문제 해결 능력이 향상됩니다. 또 운영상 오류나 장애 해결 경험을 쌓을 수 있습니다.

  5. 비용 절감, 유연성

    홈 랩에서는 클라우드 인프라 대신 기존에 사용하지 않던 하드웨어를 재활용해 인프라를 직접 구성할 수 있습니다. 이로써 비용을 절감할 수 있습니다. 또 필요에 따라 서버 확장, 가상화 환경 추가, 네트워크 변경 등 다양한 구성을 유연하게 변경해 실습할 수 있습니다.

  6. 자기 주도 학습

    홈 랩을 구성하고 운영하는 과정에서 다양한 기술을 자기 주도적으로 학습할 수 있습니다. 이로써 새로운 기술을 습득하고 응용하는 역량을 키울 수 있습니다. 그 결과, 실무에서 필요한 기술 역량 전반을 강화할 수 있습니다.

고객사 프로젝트 본격 투입

출처=픽사베이 | 인포그랩 GitLab
출처=픽사베이

이러한 과정을 거쳐 저는 고객사의 DevOps 프로젝트에 본격 투입됐습니다. 저는 GitLab 운영 관련 업무를 맡았습니다. 프로젝트에 투입됐을 때, 먼저 고객사의 아키텍처를 파악하고, 보안 요건과 시스템 구조를 익히고자 애썼습니다. 아울러 서버 접근 권한 관리, 방화벽 설정, 다양한 보안 절차를 이해하기 위해 노력했습니다. 특히 놓치는 부분이 생기지 않도록 시스템과 아키텍처를 꾸준히 추가 확인했습니다.

저는 사전 학습으로 GitLab 운영의 기본 이해는 있었습니다. 그러나 ‘실제 고객사 환경에서 GitLab의 각 기능이 어떻게 설정되고 관리되는지’는 직접 부딪혀봐야 알 수 있었습니다. 따라서 ‘GitLab의 특정 기능이 고객사의 요구 사항을 어떻게 충족하는지’, ‘각 기능이 어떻게 구현돼야 하는지’ 현장에서 반복 확인했습니다. 또 기능별 테스트설정 확인 절차로 GitLab 운영 상태를 구체적으로 파악했습니다. 이로써 ‘GitLab 기능이 고객사 요구에 맞는지’ 점검하고, 추가로 필요한 기능을 확인했습니다.

저는 고객사가 GitLab을 효율적으로 사용하도록 API 기반 자동화 작업도 지원했습니다. 관련 내용을 문서화해 고객사에 전달했습니다. 또 실습과 검증을 거쳐 ‘예상된 결과가 나오는지’ 확인했고, 이를 기반으로 GitLab 운영 가이드라인을 작성해 고객사에 제공했습니다. GitLab 운영 가이드라인은 고객사 실무 환경에 맞춰 제작했습니다. 특히 운영팀이 시스템을 자율적으로 관리하는 데 도움이 되도록 작성했습니다.

현재 저는 기능 신청, 설정 관련 요청 사항을 처리하는 지원 업무를 수행 중입니다. 고객사가 시스템을 안정적으로 사용하도록 교육하고 지원합니다. 상세 업무는 다음과 같습니다.

  1. 기능 설정 요청 처리: 운영팀에서 요청한 GitLab 기능을 설정하고, 필요한 설정을 적용합니다.
  2. API 사용법 정리, 제공: GitLab을 효율적으로 운영하는 데 필요한 API 사용법을 정리하고, 운영팀에 제공합니다.

맺음말

저는 프로젝트 중간에 투입됐으며, 고객사의 GitLab 시스템 안정화가 주 업무였습니다. 이미 구축된 시스템을 정확히 이해하고, 적응하는 건 큰 과제였습니다. GitLab 기능 설정, 운영 방식을 파악하면서 도전도 많았습니다. 그러나 이 과정에서 GitLab의 다양한 기능을 테스트하고, ‘고객사 요구 사항에 맞게 최적화된 설정을 적용하는 방법’을 익혔습니다.

저는 프로젝트를 수행하면서 GitLab 운영뿐만 아니라 ‘전체 DevOps 프로세스 최적화 방법’도 자주 고민합니다. 고객사의 GitLab 시스템을 안정화하고, 운영 효율성을 높이는 여러 방법을 모색하며 교훈도 얻었습니다. 고객사 지원 경험은 DevOps 프로세스 최적화를 깊이 탐구하는 데 도움이 됐습니다. 또 운영 효율성을 극대화하고 더 나은 솔루션을 제공하는 DevOps 엔지니어로 발전하는 데 밑거름이 됐습니다.

지금까지 제가 GitLab을 빠르게 마스터하기 위해 기울인 노력과 학습 방식을 소개했습니다. 각자 기반 지식과 기술력이 다르기에 일괄로 적용하기에 어려움이 있을 수 있습니다. 그래도 개발자, DevOps 엔지니어가 GitLab을 비롯한 다양한 DevOps 기술셋을 익히는 데 이 글이 도움이 되면 좋겠습니다. 이상 글을 마칩니다.

DevOps와 GitLab을 효과적으로 도입하는 방법, 지금 인포그랩에 문의하세요.