docker, k8s, ArgoCD, Nexus, GitLab, GitLab-Runner 등의 기술을 경험하였습니다.
사실 데이터 분석가 출신에게 익숙지 않은 linux기반의 CUI 작업은 익숙하지만 조금 두려운(?) 업무였지만,
반복숙달을 하다 보니 어느새 저도 모르게 커맨드라인을 척척 만들어내며 자랑스러워하는 저의 모습을 볼 수 있었습니다.
역시 군대처럼 반복 숙달이 최고야
도커(Docker), 쿠버네티스(Kubernetes), ArgoCD, Nexus, GitLab, GitLab Runner와 같은 DevOps 기술들은 소프트웨어 개발과 배포의 자동화에 사용됩니다. 이 기술들은 컨테이너 기반 환경에서 동작하며, 이 과정에서 흔히 항해 및 물류 관련 용어들이 사용됩니다. 아래에서 기술별로 관련 용어를 정리하겠습니다.
---
1. Docker (도커)
도커는 컨테이너 기술을 사용해 애플리케이션을 패키징, 배포, 실행하는 플랫폼으로, 항해 용어를 많이 차용하고 있습니다.
Image (이미지): 컨테이너 실행에 필요한 파일과 설정을 포함하는 템플릿.
비유: 선박의 설계도와 같음.
Container (컨테이너): 도커 이미지를 기반으로 실행되는 애플리케이션의 실행 단위.
비유: 선박의 화물 컨테이너.
Registry (레지스트리): 도커 이미지를 저장하고 공유하는 저장소.
예: Docker Hub는 항구처럼 이미지를 저장/배포.
Pull (풀): 레지스트리에서 도커 이미지를 가져오는 작업.
비유: 항구에서 화물을 싣는 과정.
Push (푸시): 도커 이미지를 레지스트리에 업로드하는 작업.
비유: 화물을 항구에 내려놓는 과정.
Orchestration (오케스트레이션): 여러 컨테이너를 관리하는 작업.
비유: 선단(船團)을 관리하는 것.
---
2. Kubernetes (쿠버네티스)
쿠버네티스는 컨테이너 오케스트레이션 도구로, 이름 자체가 그리스어로 조타수(Helmsman)를 의미합니다. 많은 용어가 항해와 관련 있습니다.
Node (노드): 클러스터의 컴퓨팅 리소스를 제공하는 서버.
비유: 함대의 개별 선박.
Pod (파드): 쿠버네티스에서 관리되는 컨테이너의 가장 작은 배포 단위.
비유: 한 선박에 있는 화물 컨테이너 그룹.
Cluster (클러스터): 노드의 집합으로, 쿠버네티스에서 애플리케이션을 배포하고 관리하는 전체 시스템.
비유: 함대(船隊).
Helm (헬름): 쿠버네티스 패키지 매니저로, 애플리케이션 배포를 돕는 도구.
비유: 조타수의 역할.
Scheduler (스케줄러): 작업(컨테이너)을 특정 노드에 할당하는 역할.
비유: 선박이 어느 항구에 정박할지 결정하는 관리자.
Service (서비스): 네트워크를 통해 Pod에 접근할 수 있도록 만드는 엔티티.
비유: 항구 간의 연결 통로.
---
3. ArgoCD
ArgoCD는 GitOps 기반의 지속적 배포(CD) 도구로, 주로 항해 관련 워크플로우를 관리하는 데 적합한 이름들이 많습니다.
Repository (레포지토리): 소스 코드가 저장된 Git 저장소.
비유: 항구에 쌓인 화물.
Sync (동기화): Git 저장소와 쿠버네티스 클러스터의 상태를 일치시키는 작업.
비유: 화물의 정확한 배분 작업.
Deployment (배포): 애플리케이션을 클러스터에 배포하는 작업.
비유: 화물을 목적지까지 전달하는 과정.
---
넥서스는 이미지 로고가 너무 조그매..(사실 비중도)
4. Nexus
Nexus는 빌드 아티팩트를 저장하고 관리하는 리포지토리로, 소프트웨어 배포에서 물류와 비슷한 역할을 합니다.
Repository (레포지토리): Maven, npm, Docker 등 다양한 아티팩트를 저장하는 저장소.
비유: 다양한 물류 화물을 저장하는 창고.
Artifact (아티팩트): 빌드 프로세스에서 생성된 결과물.
비유: 완성된 제품 또는 화물.
---
5. GitLab & GitLab Runner
GitLab은 소스 코드 관리를 위한 플랫폼이고, GitLab Runner는 CI/CD 파이프라인에서 작업을 실행합니다. 물류와 유사한 개념들이 존재합니다.
Pipeline (파이프라인): 소프트웨어 개발에서 빌드, 테스트, 배포 단계를 정의한 작업 흐름.
비유: 화물이 여러 단계의 검사를 거쳐 배송되는 과정.
Job (작업): CI/CD 파이프라인의 각 단위 작업.
비유: 개별 화물을 처리하는 작업자.
Runner (러너): 파이프라인의 작업을 실행하는 프로세스.
비유: 화물을 운반하거나 처리하는 운송 장비.
Merge Request (병합 요청): 코드 변경을 기존 코드와 병합하기 위한 요청.
비유: 물류 프로세스의 최종 승인 요청.
기술 용어 정리 및 비유
Container: 화물 컨테이너 → 소프트웨어 실행 단위.
Cluster: 함대 → 노드의 집합.
Registry: 항구 → 이미지 저장소.
Pipeline: 물류 과정 → 빌드, 테스트, 배포의 자동화 과정.
Sync: 화물 배분 → 시스템 상태 동기화.
이 기술들은 모두 물류 및 항해 개념에서 영감을 얻어, 복잡한 시스템의 조직화, 배포, 관리를 시각적으로 이해하기 쉽게 만들어줍니다. 기술 용어를 이런 비유로 이해하면, DevOps 환경에서 이들의 역할을 더 쉽게 파악할 수 있습니다
이전에는 그저 익숙지 않았던 용어들인데, 물류에서 파생되어 비유적인 기능들을 한다니 조금은 신기하네요ㅎㅎ
다른 종류의 언어들도 이런 내용들이 있나 궁금하네요.
음.. 나중에 기회가 된다면 음악에 관련된 내용으로 이런 sw들이 있나 찾아보고 싶네요 :)
PS. 오늘은 프로젝트의 마무리에서 글을 써봅니다 ㅎㅎ
많은 일들이 있었지만 무엇보다 이런 기술들을 이해하고 문서화하는데 재미를 느낀다니 그게 더 좋은 것 같네요.