[Docker] 도커 컨테이너 GitLab 서버 구축하기

 

GitLab은 Git 기반의 소스코드 저장소로, CI/CD, 이슈 관리, 코드 리뷰 등 DevOps 기능을 통합 제공하며, 자체 서버에 설치해 팀 내 협업과 배포 자동화를 중앙에서 효율적으로 관리할 수 있습니다.

 

도커 컨테이너로 GitLab 서버를 간단히 구축하는 방법을 알아보도록 하겠습니다.

 

 


사전 작업

 

[Docker] 간단 설치 방법

https://every-up.tistory.com/4

 

[Docker] 간단 설치 방법

[Docker] 간단 설치 방법Docker란 리눅스 컨테이너 기반으로 빠르게 서비스 구축, 개발, 테스트 등을 할 수 있는 오픈소스 가상화 플랫폼입니다. 컨테이너라는 개념이 없을 때에는 가상 머신(Virtua

every-up.tistory.com

 

 

 


GitLab 서버 구축

 

기본 작업

gitlab에서 기본 설정과 로그, 데이터를 저장 시 사용할 config, logs, data 디렉토리를 생성합니다.

# mkdir config logs data

 

 

docker-compose.yml 파일 생성

도커 컨테이너로 GitLab 서버를 구동하기 위해 docker-compose.yml 파일을 작성합니다.

services:
  gitlab:
    image: gitlab/gitlab-ce:17.9.5-ce.0
    container_name: gitlab
    restart: always
    hostname: '{Server IP}'
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - ./config:/etc/gitlab
      - ./logs:/var/log/gitlab
      - ./data:/var/opt/gitlab
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://{Server IP}'

 

기본 작업으로 생성한 config, logs, data 디렉토리를 지정합니다.
서비스 포트는 기본적으로 80, 443, 22번 포트를 사용하며 {Server IP} 항목은 접근하고자 하는 GitLab 서버의 IP 또는 Domain 값으로 설정합니다.

 

 

컨테이너 실행

docker-compose.yml 파일이 있는 위치에서 docker compose up -d` 명령어로 컨테이너를 실행합니다.

# docker compose up -d
[+] Running 2/2
 ✔ Network gitlab_default  Created                                                                                                                                      0.1s
 ✔ Container gitlab        Started

 

 

컨테이너 실행 확인

정상적으로 GitLab 컨테이너가 실행되었는지 docker ps 명령어로 확인합니다.

# docker ps
CONTAINER ID   IMAGE                                              COMMAND                  CREATED              STATUS                                 PORTS                                                                  NAMES
6547a7476017   gitlab/gitlab-ce:17.9.5-ce.0                       "/assets/wrapper"        About a minute ago   Up About a minute (health: starting)   0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   gitlab

 

 

웹 페이지 접속

설정한 URL 정보로 GitLab 웹 페이지에 접속합니다.

 

 

계정은 기본적으로 'root' 이름으로 생성되며 패스워드는 아래 명령어로 확인하여 입력합니다.

# docker exec -it gitlab cat /etc/gitlab/initial_root_password | grep "Password: "
Password: +k96vqX8kYanndkKh1y8NRY3agOwv8m5QAJwgLfzYys=

 

 

로그인이 정상적으로 되는지 확인합니다.

 

 

 



도커 컨테이너로 GitLab 서버를 간단히 구축하는 방법을 알아봤는데요.

간단히 docker-compose.yml 파일을 작성 후 실행하는 것만으로도 GitLab 서버를 도커 컨테이너로 실행할 수 있습니다.
또한 기본 계정은 생성되며 기본 계정의 패스워드는 컨테이너에 저장된 파일을 통해 확인하실 수 있습니다.
GitLab 서버를 통해 형상관리와 관련된 다양한 기능을 사용해보시기 바랍니다....! 끝...!


유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!



[Reference]
https://hub.docker.com/r/gitlab/gitlab-ce/
https://docs.gitlab.com/install/docker/

 

 

 

[GCP] VertexAI 커스텀 학습 컨테이너 생성하기


GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

Vertex AI 커스텀 학습 컨테이너는 사용자가 직접 구성한 컨테이너 이미지로, 학습 코드, 라이브러리, 실행 환경을 완전히 제어할 수 있습니다. 이를 통해 특수한 라이브러리나 환경 설정, 커스텀 실행 방식 등을 자유롭게 구성하여 나만의 학습 프로세스를 구축할 수 있습니다.

 

Vertex에서 커스텀 학습 컨테이너를 생성하고 학습을 실행해보는 방법을 알아보도록 하겠습니다.

 

 


VertexAI 사전 구성

VertexAI를 사용할 사전 구성 작업을 알아봅니다.

 

[GCP] VertexAI 알아보기

https://every-up.tistory.com/106

 

[GCP] VertexAI 알아보기

[GCP] VertexAI 알아보기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML)

every-up.tistory.com

 

 

[GCP] VertexAI Workbench 생성하기

https://every-up.tistory.com/107

 

[GCP] VertexAI Workbench 생성하기

[GCP] VertexAI Workbench 생성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신

every-up.tistory.com

 

 

[GCP] VertexAI Custom Training Job 간단 구성하기

https://every-up.tistory.com/108

 

[GCP] VertexAI Custom Training Job 간단 구성하기

[GCP] VertexAI Custom Training Job 간단 구성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게

every-up.tistory.com

 

 

 


커스텀 학습 컨테이너 생성

기본 작업

기본 작업은 'VertexAI Custom Training Job 간단 구성하기' 작업의 '작업3'번까지 진행합니다.

Custom_Container_Job.ipynb
0.01MB

 

작업 4 - Dockerfile 및 entrypoint.sh 파일 생성

Vertex AI에서 커스텀 학습 컨테이너를 사용하려면, 학습 환경(학습 코드, 라이브러리, 실행 환경 등)을 담은 컨테이너 이미지를 직접 만들어야 합니다. Vertex AI는 컨테이너 이미지의 실행만을 지원하며 내부 명령어를 자동으로 알지 못하므로 컨테이너 이미지에 학습 환경을 사전에 구성해야 되는 것입니다.

 

Dockerfile 파일을 생성하여 학습 환경을 정의하고 entrypoint.sh 파일을 생성하여 컨테이너 실행 시 해야 할 작업(복사, 학습, 업로드 등)을 정의합니다.

# 작업 4 - Dockerfile 및 entrypoint.sh 파일 생성

from pathlib import Path

# Dockerfile 내용
dockerfile_content = '''\
# 베이스 이미지: PyTorch GPU 기반
FROM gcr.io/deeplearning-platform-release/pytorch-gpu.1-12:latest

# 작업 디렉토리 생성
WORKDIR /app

# 필요한 패키지 설치
RUN apt-get update && \\
    apt-get install -y git gcc curl && \\
    pip install --upgrade pip

# YOLOv5 클론 및 의존성 설치
RUN git clone https://github.com/ultralytics/yolov5.git && \\
    cd yolov5 && \\
    pip install -r requirements.txt

# 진입점 스크립트 복사 (추후 작성)
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh

# 엔트리포인트 지정
ENTRYPOINT ["/app/entrypoint.sh"]
'''

# Entrypoint 스크립트 템플릿
entrypoint_content = '''\
#!/bin/bash
set -e

BUCKET_NAME="test-coco-dataset-bucket"

cd /app/yolov5

# 데이터 및 설정 다운로드 (사용자가 BUCKET_NAME을 수정해야 함)
gsutil -m cp -r gs://${BUCKET_NAME}/coco/coco128/coco128 .
gsutil -m cp gs://${BUCKET_NAME}/coco/coco128.yaml .
gsutil -m cp gs://${BUCKET_NAME}/coco/train.py .

# 학습 실행
python train.py --data=coco128.yaml --epochs=10 --batch-size=16 --img-size=640

# 결과 업로드
gsutil -m cp -r runs/train/* gs://${BUCKET_NAME}/coco/models/
'''

# 파일 생성
Path("Dockerfile").write_text(dockerfile_content)
Path("entrypoint.sh").write_text(entrypoint_content)

print("✅ Dockerfile 및 entrypoint.sh 파일이 생성되었습니다.")

 

 

작업 5 - 학습용 컨테이너 이미지 생성

학습 환경(학습 코드, 라이브러리, 실행 환경 등)을 정의한 Dockerfile을 사용하여 컨테이너 이미지를 생성하고, Vertex AI에서 사용할 수 있도록 컨테이너 레지스트리에 이미지를 등록합니다.

# 작업 5 - 학습용 컨테이너 이미지 생성

import subprocess

# 컨테이너 변수 설정
REPO_NAME="training-repo"
IMAGE_NAME = "yolo-train"
IMAGE_URI = f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPO_NAME}/{IMAGE_NAME}:latest"

# Docker 빌드 실행 (현재 디렉토리에 Dockerfile, entrypoint.sh 존재해야 함)
subprocess.run(["docker", "build", "-t", IMAGE_URI, "."], check=True)

# 레포지토리 생성
!gcloud artifacts repositories create {REPO_NAME} \
  --repository-format=docker \
  --location={REGION} \

# Docker 인증
!gcloud auth configure-docker {REGION}-docker.pkg.dev

# Docker 이미지 푸시
subprocess.run(["docker", "push", IMAGE_URI], check=True)

 

 

작업 6 - Custom Training Job 실행

Google Cloud의 AI 관련 서비스(Google Vertex AI, AutoML, AI Platform 등)를 관리할 수 있는 gcloud ai 명령어를 사용하여 Custom Training Job을 실행합니다. gcloud ai custom-jobs create 명령어와 사전에 생성한 컨테이너 이미지를 선택하여 실행합니다.


해당 컨테이너 이미지에는 학습에 필요한 학습 데이터, 학습 환경, 학습 코드, 실행 명령어 등이 이미 구축되어 있으므로 별도의 환경 변수 설정은 필요 없습니다.

# 작업 6 - Custom Training Job 실행

!gcloud ai custom-jobs create \
  --region=us-central1 \
  --display-name=yolo-training-job \
  --worker-pool-spec=machine-type=n1-standard-8,replica-count=1,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,container-image-uri={IMAGE_URI}

 

 

명령어 실행 시 아래와 같이 Custom Training Job 생성에 대한 로그가 출력됩니다.

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
CustomJob [projects/123412341234/locations/us-central1/customJobs/3600309885524246528] is submitted successfully.

Your job is still active. You may view the status of your job with the command

  $ gcloud ai custom-jobs describe projects/123412341234/locations/us-central1/customJobs/3600309885524246528

or continue streaming the logs with the command

  $ gcloud ai custom-jobs stream-logs projects/123412341234/locations/us-central1/customJobs/3600309885524246528

 

 

 


커스텀 학습 컨테이너 실행

VertexAI 서비스 관리 페이지에서 Custom Training Job 실행을 확인해보도록 하겠습니다.

 

모델 개발 -> 학습 메뉴에서 커스텀 작업을 선택한 후 생성된 yolo-training-job 이름의 Custom Training Job을 선택합니다.

 

 

Custom Training Job의 현재 상태를 확인할 수 있으며 시작 시간, 경과 시간, 머신 유형, 로그 등의 상세한 정보를 확인할 수 있습니다. 모든 학습 환경을 학습 컨테이너에 정의했기 때문에 별도로 인자(환경 변수)에 대한 내용은 없습니다.

 

 

같은 화면에서 하단으로 내려보면 기계학습 실행 시 CPU, GPU, Network 사용에 대한 모니터링 정보를 상세하게 확인할 수 있습니다.

 

 

로그 보기 버튼을 클릭하면 기계학습 실행 시의 모든 상세 로그를 확인할 수 있습니다.

 

 

이제 학습된 모델 파일을 확인해봅시다.


학습된 모델 파일은 GCS 버킷(gs://{BUCKET_NAME}/coco/models/)에 저장되도록 설정하였으므로, GCS 버킷을 통해 확인해보도록 합시다. 기본 학습 코드(train.py)에 따라 GCS 버킷에 exp/weights/ 경로에 학습된 모델 파일(best.pt, last.pt)이 생성됨을 확인하실 수 있습니다.

 

 

 


 

GCP Vertex AI에서 커스텀 학습 컨테이너를 생성하고 학습을 실행해보는 방법에 대해 확인해봤는데요.

 

Dockerfile 파일을 생성하여 학습 환경을 정의하고 entrypoint.sh 파일을 생성하여 컨테이너 실행 시 해야 할 작업(복사, 학습, 업로드 등)을 정의합니다. 커스텀 학습 컨테이너 이미지 생성하고 Vertex AI에서 사용할 수 있도록 컨테이너 레지스트리에 이미지를 등록합니다. 별도의 환경 변수 설정 없이 gcloud ai custom-jobs create 명령어를 사용해 학습을 수행합니다. 학습된 모델(best.pt, last.pt)을 GCS 버킷에서 확인할 수 있으며 Vertex AI 관리 페이지에서 Custom Training Job의 상태, 리소스 사용량, 로그 등을 모니터링할 수 있습니다.

 

커스텀 학습 컨테이너를 통해 다양한 기계 학습 환경과 작업 등을 구축 및 관리하여 기계학습을 사용해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai/docs/training/containers-overview?hl=ko

 

 

 

'GCP' 카테고리의 다른 글

[GCP] VertexAI Custom Training Job 간단 구성하기  (2) 2025.04.07
[GCP] VertexAI Workbench 생성하기  (0) 2025.03.31
[GCP] VertexAI 알아보기  (0) 2025.03.25

[GCP] VertexAI Custom Training Job 간단 구성하기


GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

Vertex AI Custom Training Job은 사용자가 직접 구성한 커스텀 코드와 하이퍼파라미터를 이용해 모델 학습을 수행할 수 있는 Google Cloud Vertex AI의 기능입니다. 컨테이너 기반 환경에서 자동 리소스 할당과 분산 학습을 지원하여 효율적이고 확장 가능한 모델 개발을 구현합니다.

 

 

GCP에서 제공하는 Vertex AI Custom Training Job을 JupyterLab을 사용하여 간단히 구성해보는 방법을 알아보도록 하겠습니다.

 

 

 


[GCP] VertexAI 알아보기

GCP VertexAI에 대한 기본적인 정보를 알아봅니다.

 

https://every-up.tistory.com/106

 

[GCP] VertexAI 알아보기

[GCP] VertexAI 알아보기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML)

every-up.tistory.com

 

 

[GCP] VertexAI Workbench 생성하기

JupyterLab을 사용할 수 있도록 사전에 VertexAI Workbench를 생성합니다.

 

https://every-up.tistory.com/107

 

[GCP] VertexAI Workbench 생성하기

[GCP] VertexAI Workbench 생성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신

every-up.tistory.com

 

 

 

 


JupyterLab 실행

VertexAI Workbench에서 실행하고자 하는 JupyterLab 인스턴스를 클릭합니다.

 

 

잠깐의 로딩화면 이후 JupyterLab이 정상적으로 실행함을 확인하실 수 있습니다.

 

 

아래 Jupyter Notebook 파일을 다운로드 후 드래그 앤 드롭(Drag and Drop)으로 파일을 업로드 합니다.

Simple_Custom_Training_Job.ipynb
0.00MB

 

 

 

 


Custom Training Job 구성 및 실행

이제 업로드한 Jupyter Notebook 파일을 실행하여 Custom Training Job을 구성 및 실행해보도록 하겠습니다.

 

 

작업 1 - 기본 설정

Custom Training Job을 구성하기 위한 기본적인 패키지를 설치하고, 프로젝트 관련 설정을 정의합니다.
PROJECT_ID 값은 사용 중인 GCP 프로젝트의 ID 값으로 설정합니다.

# 작업 1 - 기본 설정

import os
from google.cloud import aiplatform, storage
import subprocess

# 필요한 패키지 설치
subprocess.run(["pip", "install", "torch", "torchvision", "google-cloud-aiplatform", "google-cloud-storage", "pyyaml"])

import torch
import torchvision
import zipfile

# GCP 프로젝트 설정
PROJECT_ID = "{Project ID}"  # GCP 프로젝트 ID
REGION = "us-central1"  # 리전 설정
BUCKET_NAME = "test-coco-dataset-bucket"  # GCS 버킷 이름

# Vertex AI 초기화
aiplatform.init(project=PROJECT_ID, location=REGION)

 

 

작업 2 - COCO 데이터셋 및 기계 학습 환경 다운로드

기계 학습은 COCO 데이터셋을 활용하여 YOLOv5 모델을 학습해보도록 하겠습니다.
COCO 데이터셋 및 YOLOv5 모델을 다운로드 및 압축을 해제합니다.

# 작업 2 - COCO 데이터셋 및 기계 학습 환경 다운로드

# COCO 데이터셋 및 학습 코드 다운로드
!wget https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip
!wget https://raw.githubusercontent.com/ultralytics/yolov5/master/data/coco128.yaml
!wget https://raw.githubusercontent.com/ultralytics/yolov5/master/train.py

# 데이터 압축 해제
import zipfile
with zipfile.ZipFile("coco128.zip", "r") as zip_ref:
    zip_ref.extractall("coco128")

 

 

작업 2-1 - coco128.yaml 파일 수정

JupyterLab에서 데이터셋 구성 파일인 coco128.yaml 파일을 수정하여 COCO 데이터셋의 경로 설정을 변경합니다.
데이터셋 기본 경로(path), 학습 경로(train), 검증 경로(val)를 수정합니다.

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: . # dataset root dir
train: coco128/images/train2017 # train images (relative to 'path') 128 images
val: coco128/images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

 

 

작업 3 - GCS 버킷 생성 및 업로드

GCS 버킷을 생성한 후 학습에 필요한 데이터셋, 데이터셋 구성 파일, 학습 코드를 GCS 버킷에 업로드 합니다.
Custom Training Job을 실행 시 GCS 버킷에 있는 데이터를 사용하여 학습을 구동시키고자 합니다.

# 작업 3 - GCS 버킷 생성 및 업로드

# GCS 버킷 생성
storage_client = storage.Client()
bucket = storage_client.create_bucket(BUCKET_NAME, location=REGION)

# GCS 버킷에 업로드
!gsutil -m cp -r coco128 gs://{BUCKET_NAME}/coco/
!gsutil -m cp -r coco128.yaml gs://{BUCKET_NAME}/coco/
!gsutil -m cp -r train.py gs://{BUCKET_NAME}/coco/

 

 

작업 4 - Custom Training Job 실행

Google Cloud의 AI 관련 서비스(Google Vertex AI, AutoML, AI Platform 등)를 관리할 수 있는 gcloud ai 명령어를 사용하여 Custom Training Job을 실행합니다.
gcloud ai custom-jobs create 명령어와 학습에 필요한 파라미터 값을 입력하여 실행합니다.

# 작업 4 - Custom Training Job 실행

!gcloud ai custom-jobs create \
  --region=us-central1 \
  --display-name=yolo-training-job \
  --worker-pool-spec=machine-type=n1-standard-8,replica-count=1,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,container-image-uri=gcr.io/deeplearning-platform-release/pytorch-gpu.1-12:latest \
  --command=bash \
  --args="-c" \
  --args="\
  git clone https://github.com/ultralytics/yolov5.git && \
  gsutil -m cp -r gs://{BUCKET_NAME}/coco/coco128/coco128 yolov5/ && \
  gsutil -m cp -r gs://{BUCKET_NAME}/coco/coco128.yaml yolov5/ && \
  gsutil -m cp -r gs://{BUCKET_NAME}/coco/train.py yolov5/ && \
  cd yolov5 && \
  pip install --upgrade pip && \
  pip install -r requirements.txt && \
  python train.py --data=coco128.yaml --epochs=10 --batch-size=16 --img-size=640 && \
  gsutil -m cp -r runs/train/* gs://{BUCKET_NAME}/coco/models/"

 

worker-pool-spec 옵션을 통해 학습 머신에 대한 설정과 컨테이너 이미지를 설정할 수 있습니다. 컨테이너 이미지는 직접 생성한 이미지를 사용할 수 있으며 사전에 학습 환경이 구성된 컨테이너 이미지를 생성하여 기계 학습 환경을 더 빠르게 프로비저닝 수 있습니다.

 

이번 Custom Training Job 실행에서는 GCP에서 기본으로 제공하는 컨테이너 이미지를 사용하였으며, 학습에 필요한 환경구성과 학습 코드 실행 등을 args로 추가하여 구성할 수 있도록 설정하였습니다.

 

 

명령어 실행 시 아래와 같이 Custom Training Job 생성에 대한 로그가 출력됩니다.

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
CustomJob [projects/123412341234/locations/us-central1/customJobs/8016661615963275264] is submitted successfully.

Your job is still active. You may view the status of your job with the command

  $ gcloud ai custom-jobs describe projects/123412341234/locations/us-central1/customJobs/8016661615963275264

or continue streaming the logs with the command

  $ gcloud ai custom-jobs stream-logs projects/123412341234/locations/us-central1/customJobs/8016661615963275264

 

 


Custom Training Job 실행 확인

VertexAI 서비스 관리 페이지에서 Custom Training Job 실행을 확인해보도록 하겠습니다.

 

모델 개발 -> 학습 메뉴에서 커스텀 작업을 선택한 후 생성된 yolo-training-job 이름의 Custom Training Job을 선택합니다.

 

 

Custom Training Job의 현재 상태를 확인할 수 있으며 시작 시간, 경과 시간, 머신 유형, 로그 등의 상세한 정보를 확인할 수 있습니다.

 

 

같은 화면의 하단에는 기계학습 실행 시 CPU, GPU, Network 사용에 대한 모니터링 정보를 상세하게 확인할 수 있습니다.

 

 

로그 보기 버튼을 클릭하면 기계학습 실행 시의 모든 상세 로그를 확인할 수 있습니다.

 

 

이제 학습된 모델 파일을 확인해봅시다.


학습된 모델 파일은 GCS 버킷(gs://{BUCKET_NAME}/coco/models/)에 저장되도록 설정하였으므로, GCS 버킷을 통해 확인해보도록 합시다. 기본 학습 코드(train.py)에 따라 GCS 버킷에 exp/weights/ 경로에 학습된 모델 파일(best.pt, last.pt)이 생성됨을 확인하실 수 있습니다.

 

 

 


 

 

GCP에서 제공하는 Vertex AI Custom Training Job을 JupyterLab을 사용하여 간단히 구성해보는 방법에 대해 확인해봤는데요.

 

Vertex AI Workbench에서 JupyterLab을 실행한 후, COCO 데이터셋과 YOLOv5 모델을 GCS 버킷에 업로드하여 Custom Training Job을 실행합니다. gcloud ai custom-jobs create 명령어를 사용해 학습을 수행하고, 학습된 모델(best.pt, last.pt)을 GCS 버킷에서 확인할 수 있습니다. Vertex AI 관리 페이지에서 Custom Training Job의 상태, 리소스 사용량, 로그 등을 모니터링할 수 있습니다.

 

데이터셋과 기계학습 환경을 구축하고 Vertex AI Custom Training Job을 사용하여 기계학습을 사용해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai/docs/training/create-custom-job?hl=ko

 

 

 

'GCP' 카테고리의 다른 글

[GCP] VertexAI 커스텀 학습 컨테이너 생성하기  (0) 2025.04.14
[GCP] VertexAI Workbench 생성하기  (0) 2025.03.31
[GCP] VertexAI 알아보기  (0) 2025.03.25

[GCP] VertexAI Workbench 생성하기

GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

Vertex AI Workbench는 전체 기계 학습 워크플로에 사용되는 Jupyter 노트북 기반 개발 환경입니다. Vertex AI Workbench 인스턴스의 Jupyter 노트북 내에서 Vertex AI 및 기타 Google Cloud 서비스와 상호작용할 수 있습니다.

 

 

GCP에서 제공하는 VertexAI Workbench를 생성하는 방법을 알아보도록 하겠습니다.

 

 


Workbench 생성

Vertex AI Workbench를 생성하는 방법을 알아보겠습니다.

 

메뉴 접근

Google Cloud의 콘솔을 접근 후 "Vertex AI"를 검색하여 Vertex AI 서비스 메뉴에 접근합니다.

 

 

좌측 메뉴에 Notebooks -> Workbench 메뉴를 클릭합니다.

 

 

Workbench의 새로 만들기 버튼을 통해 신규 Workbench를 생성할 수 있습니다.

 

 

생성 옵션

새로 만들기 버튼을 클릭한 후 새 인스턴스를 생성합니다.
이름을 지정하고, 머신 유형 및 기타 옵션을 수정하기 위해 고급 옵션을 선택합니다.



세부정보에서는 리전과 라벨, 네트워크 태그, Workbench 유형을 선택할 수 있습니다.
Workbench 유형은 인스턴스, 관리형 노트북, 사용자 관리형 노트북으로 총 3가지가 있지만 관리형 노트북과 사용자 관리형 노트북 유형은 25년 4월 14일에 서비스 지원이 종료될 예정입니다.

 

 

JupyterLab 환경에 대한 버전 및 기타 옵션을 선택할 수 있습니다.
JupyterLab 4.x 버전에서는 JupyterLab 3.x 버전과 다르게 커널 및 서버가 Jupyter Server로 통합 관리되며
확장 기능 설치 시 Node.js 없이도 설치가 가능하고 초기 로딩 속도롤 쵀대 50% 개선했다고 합니다.

 

 

머신 유형에서는 가상머신에 대한 다양한 타입을 선택하여 사용할 수 있습니다.
기계 학습 테스트 시 학습용 머신을 별도로 생성할 것이므로, 범용 머신 유형을 선택했습니다.

GPU 타입을 선택하여 JupyterLab 환경에서 바로 기계학습을 테스트 할 수도 있습니다.

 

 

디스크 설정에서는 Boot 디스크와 Data 디스크의 옵션을 선택할 수 있습니다.
Boot 디스크는 JupyterLab 머신의 "/" 경로의 디스크 파티션에 할당되며, Data 디스크는 "/home/jupyter" 경로의 디스크 파티션에 할당됩니다.

 

 

네트워크 설정에서는 사전에 생성한 네트워크를 선택하거나 기본 네트워크를 선택할 수 있습니다.
네트워크 설정을 통해 인터넷, Google Cloud 서비스, 조직 내부 시스템 등과 어떻게 연결하여 사용할지 결정할 수 있습니다.

 

 

IAM 및 보안 설정에서는 JupyterLab 인터페이스를 사용할 수 있는 사용자를 결정합니다.
Google Cloud IAM 계정이 있는 사용자와 단일 사용자로 구분됩니다. 또한 그 외의 다양한 보안 옵션을 선택할 수 있습니다.

 

 

마지막으로 시스템 상태 관련 설정을 완료한 후 만들기 버튼을 클릭하여 인스턴스를 생성합니다.

 

 

 


Workbench 생성 확인

정상적으로 Workbench가 생성되었는지 확인합니다.

인스턴스를 생성하면 아래와 같이 프로비저닝을 진행하며 Workbench 인스턴스가 생성됩니다.

 

 

인스턴스 이름을 클릭하면 인스턴스의 세부정보를 확인할 수 있습니다.
현재 상태 뿐만 아니라 시스템, 하드웨어, 소프트웨어 및 보안, 상태, 모니터링, 로그 등 다양한 정보를 확인 및 수정하실 수 있습니다.

 

 

 


 

GCP에서 제공하는 VertexAI Workbench를 생성하는 방법에 대해 확인해봤는데요.

 

Vertex AI Workbench는 JupyterLab 기반의 머신러닝 개발 환경으로, 인스턴스 생성 시 머신 유형, 디스크, 네트워크, 보안, 시스템 상태 등을 상세히 설정할 수 있습니다.  Workbench 생성 후 콘솔에서 인스턴스 상태, 설정, 모니터링 정보를 실시간으로 확인하고 수정할 수 있으며, JupyterLab 환경을 사용하여 기계학습 환경을 구축할 수 있습니다.

 

기계학습을 사용할 기회가 있다면 Vertex AI를 사용하여 구현해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai/docs/workbench/introduction?hl=ko

 

 

 

[GCP] VertexAI 알아보기

GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

GCP에서 제공하는 Vertex AI에 대해 알아보는 시간을 가져보겠습니다.

 

 


머신러닝 워크플로우

Vertex AI는 머신러닝의 전체 워크플로우를 하나의 플랫폼에서 지원합니다.


각 단계를 중심으로 Vertex AI의 역할을 설명하면, 사용자가 어떤 과정에서 Vertex AI를 활용할 수 있는지 쉽게 이해할 수 있습니다.

 

  • 머신러닝 단계
      1. 데이터 준비 : 데이터 세트를 추출하고 정리한 후 탐색적 데이터 분석(EDA)을 수행하여 ML 모델에서 예상하는 데이터 스키마와 특성을 파악합니다. 데이터 변환 및 특성 추출을 모델에 적용하고 데이터를 학습, 검증, 테스트 세트로 분할합니다.
      1. 모델 학습 : 모델 학습 방법을 선택하고 성능을 위해 조정합니다. 코드를 작성하지 않고 AutoML을 사용하여 모델을 학습하거나, 원하는 ML 프레임워크를 사용하여 학습 코드를 직접 작성하고 커스텀 모델을 학습시킬 수 있습니다.
      1. 모델 평가 및 반복 : 학습된 모델을 평가하고, 평가 측정항목을 기준으로 데이터를 조정하고, 모델을 반복합니다.
      1. 모델 서빙 : 모델을 프로덕션에 배포하고 온라인 예측을 가져오거나 일괄 예측을 위해 직접 쿼리합니다.
      1. 모델 모니터링: 배포된 모델의 성능을 모니터링합니다. 수신되는 예측 데이터로 모델을 재학습시켜 성능을 높입니다.

 

머신러닝 워크플로우를 통해 관리형 데이터셋을 이용해 데이터를 수집 및 가공하고, AutoML 또는 커스텀 모델로 학습한 후 Explainable AI로 성능을 분석 및 최적화할 수 있습니다. 또한, 배포된 모델을 엔드포인트에서 실시간 또는 배치 예측으로 활용하며, 콘솔 UI, 명령줄(CLI), SDK를 통해 자동화 및 애플리케이션과 연동할 수 있습니다.

 

 


MLOps

MLOps는 머신러닝 모델의 운영 및 관리를 위한 일련의 프로세스, 도구, 문화적 변화를 의미합니다.
Vertex AI는 MLOps의 핵심 기능을 지원하며, 머신러닝 모델을 효과적으로 배포하고 운영할 수 있도록 돕습니다.

 

Vertex AI의 MLOps 기능은 자동화(AutoML), 커스텀 모델(Custom Model), 파이프라인(Pipelines), 배포(Deployment), 모니터링(Monitoring) 등을 포함합니다.

 

Vertex AI를 활용한 MLOps 아키텍처는 다음과 같이 구성될 수 있습니다.

 

  • 1. 데이터 수집 및 전처리
    • BigQuery, Cloud Storage에서 데이터 수집
    • Feature Store를 활용한 피처 엔지니어링
  • 2. 모델 개발 및 실험 
    • Vertex AI Experiment를 사용한 모델 실험 및 최적화
    • AutoML 또는 Custom Model을 활용한 모델 학습
  • 3. ML 파이프라인 구축
    • Vertex AI Pipelines로 데이터 전처리 → 학습 → 평가 자동화
    • Hyperparameter tuning 포함
  • 4. 모델 배포
    • Vertex AI Prediction을 활용하여 온라인/배치 예측
    • Multi-model Deployment 및 A/B Testing 지원
  • 5. 모델 모니터링 및 개선
    • Model Monitoring으로 데이터 드리프트 감지
    • Explainable AI를 통한 모델 해석
    • CI/CD를 통한 지속적인 모델 업데이트

 

 

MLOps 도입 시에는 다음과 같은 장점이 있습니다.

  • 전체 ML 라이프사이클 자동화
  • 데이터 및 모델 재현성 보장
  • ML 모델 배포 및 확장 용이
  • 모델 성능 모니터링 및 지속적인 개선 가능
  • Cloud 기반으로 확장성과 유지보수 용이
  • DevOps + MLOps 통합으로 운영 효율성 향상

 


핵심 기능 및 강점

Vertex AI의 핵심 기능 및 강점입니다.

 

Vertex AI는 AutoML과 커스텀 모델을 지원하여 초보자부터 전문가까지 모두 활용할 수 있는 완전한 머신러닝 플랫폼입니다. Explainable AI 및 Google Cloud 기반의 고성능 인프라를 제공하여 효율적인 모델 개발과 배포를 지원합니다.

핵심 기능

  • AutoML 지원: 코드 없이 AI 모델을 학습 가능
  • 커스텀 모델 개발: TensorFlow, PyTorch 등 다양한 프레임워크 지원
  • Explainable AI: 모델의 예측 근거를 분석하여 최적화 가능
  • 완전한 머신러닝 파이프라인: 데이터 준비부터 배포까지 한 번에 관리 가능
  • 확장성과 유연성: Google Cloud 기반으로 고성능 인프라 활용 가능

 

Vertex AI의 강점

  • 초보자도 쉽게 사용 가능 (AutoML 지원)
  • 전문가는 커스텀 모델을 활용해 고급 개발 가능
  • 데이터 준비, 학습, 배포까지 중앙 집중형 관리
  • 설명 가능한 AI(Explainable AI) 기능 제공
  • Google Cloud의 강력한 인프라 활용 가능

 

 

Vertex AI는 AutoML 및 커스텀 모델 지원, Explainable AI, 완전한 머신러닝 파이프라인, Google Cloud 기반 인프라를 제공하여 효율적인 AI 개발과 운영을 지원합니다. 초보자는 AutoML로 쉽게 활용하고, 전문가는 커스텀 모델과 확장성 높은 인프라를 활용해 고급 머신러닝 프로젝트를 수행할 수 있습니다. 

 

 


GCP에서 제공하는 Vertex AI에 대해 기본적인 내용을 확인해봤는데요.

 

Vertex AI는 머신러닝의 전체 워크플로우를 지원하며, AutoML 및 커스텀 모델을 통해 데이터 준비부터 모델 배포까지 자동화할 수 있습니다. MLOps 기능을 활용해 모델 개발, 파이프라인 구축, 배포 및 모니터링을 효율적으로 관리할 수 있으며, Explainable AI 및 CI/CD를 통해 지속적인 개선이 가능합니다. Google Cloud 기반의 고성능 인프라를 활용하여 확장성과 유연성을 갖춘 머신러닝 운영을 최적화할 수 있습니다.

 

머신러닝을 사용할 기회가 있다면 Vertex AI를 사용하여 구현해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai?hl=ko

 

 

 

[DevOps] 2024 State of DevOps Report Part 3 (사용자 중심 접근)


State of DevOps Report는 2014년부터 시작되어 매년 발표되고 있으며, DORA(DevOps Research and Assessment) 팀이 연구를 주도하다가 이후 Google에 인수되어 현재까지 지속적으로 발표되고 있습니다. 해당 보고서에서는 배포 빈도, 변경 실패율, 복구 시간, 리드 타임 등의 핵심 지표를 기준으로 소프트웨어 개발 및 운영 성과의 DevOps 모범 사례와 생산성 향상 전략을 분석하고 있습니다.

 

이전 글에서는 2024년도의 State of DevOps Report 중 플랫폼엔지니어링의 내용을 중점으로 한번 알아봤는데요.
이번에는 사용자 중심 접근(User-Centered Approach) 내용을 중점으로 한번 알아보는 시간을 가져보겠습니다.

 

 

 


참고자료 - 2023 State of DevOps Report 소개

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

https://every-up.tistory.com/62

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

[DevOps] State of DevOps Report 2023 알아보기 1탄지난 10월달에 "State of DevOps Report 2023" 이 나왔습니다!State of DevOps Report란 Google에서 DevOps를 연구하는 DORA라는 팀에서 발표하는 자료인데요.State of DevOps Repor

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 2탄

https://every-up.tistory.com/63

 

[DevOps] 2023 State of DevOps Report 알아보기 2탄

[DevOps] 2023 State of DevOps Report 알아보기 2탄지난번에는 State of DevOps Report 2023의 주요 결과에 대한 내용을 알아보는 시간을 가졌는데요.이번에는 더 자세하게 알아보기 위해 주요 내용 중 사용자 중

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 3탄

https://every-up.tistory.com/64

 

[DevOps] 2023 State of DevOps Report 알아보기 3탄

[DevOps] 2023 State of DevOps Report 알아보기 3탄지난번 2탄에 이어서 3탄에도 State of DevOps Report 2023의 주요 내용을 상세하게 알아보는 시간을 가져보겠습니다.이번에는 인프라스트럭처와 문화에 대한

every-up.tistory.com

 

 

 


효과

2024 State of DevOps Report 내용 중 사용자 중심 접근(User-Centered Approach)의 내용을 중점으로 알아보겠습니다.
Report 내용은 한글로 번역 후 정리해봤으며, 번역 내용에 따라 원문과 의미가 조금 다를 수 있음을 사전에 알려드립니다.

 

주요 결과(요약)

보고서에서는 개발자가 만드는 것과 사용자가 필요로 하는 것 사이의 일치가 직원과 조직이 번창할 수 있도록 한다는 것을 다시 한번 발견했습니다.


개발자는 더 생산적이며, 사용자 중심적 사고방식으로 소프트웨어를 개발하면 번아웃을 경험할 가능성이 낮고, 고품질 제품을 만들 가능성이 더 높습니다. 소프트웨어는 사람을 위해 만들어지므로 개발자가 사용자 경험을 개선하는 소프트웨어 구축에 집중할 수 있도록 돕는 환경을 조성하는 것은 조직의 책임입니다. 또한 우선순위가 끊임없이 바뀌지 않는 안정적인 환경은 생산성의 작지만 의미 있는 증가와 직원의 번아웃의 중요하고 의미 있는 감소로 이어진다는 것을 발견했습니다.

 

환경적 요인은 개발되는 제품의 품질과 해당 제품을 만드는 개발자의 전반적인 경험에 상당한 영향을 미칩니다.

 

 

사용자 중심성 및 배포 빈도에 따른 제품 성능

사용자 중심성 및 배포 빈도에 따른 제품 성능의 관계입니다.

 

사용자 중심성이 높은 제품일수록 성능이 높으며, 배포 빈도와 관계없이, 사용자 중심성이 높은 제품은 성능이 일관되게 우수합니다. 사용자 중심성이 낮은 경우, 배포 빈도가 증가할수록 성능이 상승하긴 하지만, 다른 그룹에 비해 성능이 낮은 것을 확인할 수 있습니다. 배포 빈도의 증가가 제품 성능을 향상시키지만, 사용자 중심성에 따라 효과가 다릅니다. 따라서 단순히 배포를 빠르게 하는 것보다, 사용자 피드백을 반영하는 것이 더 중요합니다.

 

 

 

사용자 중심성 및 고품질 문서화에 따른 제품 성능

사용자 중심성 및 고품질 문서화에 따른 제품 성능의 관계입니다.

 

모든 사용자 중심성 그룹에서 문서 품질이 증가할수록 제품 성능이 상승됩니다. 사용자 중심성이 높을수록 문서 품질이 제품 성능에 더 큰 영향을 주며, 낮은 사용자 중심성에서는 문서 품질의 영향이 제한적입니다. 사용자 중심적 설계가 부족하면, 문서가 아무리 좋아도 제품 성능 향상에 큰 영향을 미치지 못할 수 있음을 시사합니다.



 


기타 결과

 

사용자 중심 접근 방식이 중요한 이유

일에서 목적의식이 조직과 직원 모두에게 긍정적 영향을 줍니다.

 

연구에 따르면, 일에서 의미를 찾는 것이 중요하며, 93%의 근로자가 자신의 일이 의미 있다고 느끼는 직업을 가지는 것을 중요하게 생각하고 있습니다. 또한 의미 있는 일을 할 경우, 미래 수입 23%를 포기할 의향이 있다는 것으로 나타났습니다. 이는 사람들에게 동기부여와 몰입도를 증가시켜 조직 생산성을 향상시킬 수 있습니다.

 

 

명확한 방향성을 제공

소프트웨어 개발에 대한 사용자 중심적 접근 방식은 개발자가 자신의 작업을 보는 방식을 근본적으로 바꿀 수 있습니다.

 

임의의 기능을 제공하고 사용자가 이를 사용할지 추측하는 대신, 개발자는 사용자 피드백을 통해 무엇을 빌드할지 우선순위를 정할 수 있습니다. 이러한 접근 방식은 개발자에게 자신이 작업하는 기능이 존재하는 데 이유가 있다는 확신을 주며 작업에 의미를 가지게 됩니다. 사람들이 제품과 서비스를 사용할 때 뛰어난 경험을 할 수 있도록 하는 것입니다. 이를 통해 개발자는 자신이 만든 소프트웨어를 통해 자신의 작업이 미치는 직접적인 영향을 확인할 수 있습니다

 

 

 


 

 

2024년도의 State of DevOps Report 중 사용자 중심 접근의 내용을 중점으로 주요 내용을 확인해봤는데요.

 

State of DevOps Report 중 다른 내용으로 다뤄볼 주제가 있다면 상세하게 확인해보는 시간을 다시 가져보겠습니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[DevOps] 2024 State of DevOps Report Part 2 (플랫폼엔지니어링)

State of DevOps Report는 2014년부터 시작되어 매년 발표되고 있으며, DORA(DevOps Research and Assessment) 팀이 연구를 주도하다가 이후 Google에 인수되어 현재까지 지속적으로 발표되고 있습니다. 해당 보고서에서는 배포 빈도, 변경 실패율, 복구 시간, 리드 타임 등의 핵심 지표를 기준으로 소프트웨어 개발 및 운영 성과의 DevOps 모범 사례와 생산성 향상 전략을 분석하고 있습니다.

 

이전 글에서는 2024년도의 State of DevOps Report 중 AI의 내용을 중점으로 한번 알아봤는데요.
이번에는 플랫폼엔지니어링의 내용을 중점으로 한번 알아보는 시간을 가져보겠습니다.

 

 

 


참고자료 - 2023 State of DevOps Report 소개

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

https://every-up.tistory.com/62

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

[DevOps] State of DevOps Report 2023 알아보기 1탄지난 10월달에 "State of DevOps Report 2023" 이 나왔습니다!State of DevOps Report란 Google에서 DevOps를 연구하는 DORA라는 팀에서 발표하는 자료인데요.State of DevOps Repor

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 2탄

https://every-up.tistory.com/63

 

[DevOps] 2023 State of DevOps Report 알아보기 2탄

[DevOps] 2023 State of DevOps Report 알아보기 2탄지난번에는 State of DevOps Report 2023의 주요 결과에 대한 내용을 알아보는 시간을 가졌는데요.이번에는 더 자세하게 알아보기 위해 주요 내용 중 사용자 중

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 3탄

https://every-up.tistory.com/64

 

[DevOps] 2023 State of DevOps Report 알아보기 3탄

[DevOps] 2023 State of DevOps Report 알아보기 3탄지난번 2탄에 이어서 3탄에도 State of DevOps Report 2023의 주요 내용을 상세하게 알아보는 시간을 가져보겠습니다.이번에는 인프라스트럭처와 문화에 대한

every-up.tistory.com

 

 

 


플랫폼엔지니어링의 영향

2024 State of DevOps Report 내용 중 플랫폼엔지니어링의 내용을 중점으로 알아보겠습니다.

Report 내용은 한글로 번역 후 정리해봤으며, 번역 내용에 따라 원문과 의미가 조금 다를 수 있음을 사전에 알려드립니다.

 

 

개념

플랫폼 엔지니어링은 업계 전반에 걸쳐 관심과 추진력을 얻고 있는 새로운 엔지니어링 분야입니다.

엔지니어가 다양한 팀 간의 사회적 상호작용과 자동화, 셀프서비스, 프로세스 반복성의 기술적 측면의 교차점에 집중하는 사회기술 분야입니다.

 

플랫폼 엔지니어링에서는 골든 패스를 구축하여 개발자 경험을 개선하는 데 많은 에너지와 집중을 쏟습니다.

골든 패스는 플랫폼 사용자가 애플리케이션을 제공하고 운영하는 데 필요한 리소스와 상호 작용할 때 사용하는 고도로 자동화된 셀프 서비스 워크플로입니다. 골든 패스의 목적은 개발자가 코드에만 신경 쓰면 되도록 소프트웨어 빌드 및 제공의 복잡성을 추상화하는 것입니다. 골든 패스를 통해 자동화된 작업의 몇 가지 예로는 새로운 애플리케이션 프로비저닝, 데이터베이스 프로비저닝, 스키마 관리, 테스트 실행, 빌드 및 배포 인프라 프로비저닝, DNS 관리 등이 있습니다.

 

 

소프트웨어 개발 및 운영 성과

플랫폼 엔지니어링이 성공하려면 사용자 중심(user-centeredness)으로 접근하는 것이 성공의 핵심 요소 중 하나입니다.

여기서 사용자는 내부 개발자 플랫폼을 사용하는 개발자들을 의미합니다. 또한, 개발자의 독립성을 보장하고 제품 중심의 사고방식을 갖는 것이 필요합니다.

 

플랫폼이 소프트웨어 개발 및 운영 성과에 미치는 영향의 분석 결과입니다.
내부 개발자 플랫폼 사용자는 생산성이 8% 더 높았으며, 팀 성과도 10% 더 향상되었습니다. 플랫폼을 도입한 조직에서는 소프트웨어 배포 및 운영 성과가 6% 향상되었습니다. 이러한 이점과 함께 단점도 발견되었습니다. 처리량(Throughput)이 8% 감소되었으며, 변경 안정성(Change Stability)이 14% 감소되는 단점도 발견되었습니다.

 

 

플랫폼 사용 여부에 따른 생산성

플랫폼 사용 여부에 따른 생산성 분석 내용입니다.

 

플랫폼 미사용 시 생산성 점수가 약 6.5~8.0 범위에 분포되어 있으며, 개별 점수의 변동성이 큽니다.

플랫폼 사용 시 생산성 점수가 7.5~8.0 범위에 집중되어 있으며, 변동성이 적고, 점들이 더 조밀하게 모여 있습니다. 내부 개발자 플랫폼을 사용할 경우 평균적으로 약 8% 향상된 생산성을 보이며, 플랫폼 사용이 개발자의 생산성 일관성을 높이는 효과가 있음을 시사하고 있습니다.

 

 

 

플랫폼 사용 기간에 따른 조직 성과

플랫폼 사용 기간(연령)에 따른 조직 성과 분석 내용입니다.

 

생산성과 함께 플랫폼의 사용 기간(연령)을 고려할 때, 플랫폼 엔지니어링 이니셔티브가 시작될 때 초기 성능 향상이 나타나고, 플랫폼이 오래되고 성숙해짐에 따라 감소 및 회복이 뒤따릅니다. 이 패턴은 초기 상을 경험하지만 실현된 후에는 어려움에 직면하는 변환 이니셔티브의 전형입니다. 장기적으로 생산성 향상이 유지되면서 소프트웨어 제공 및 운영 프로세스에서 내부 개발자 플랫폼의 역할이 전반적으로 잠재력이 있음을 보여줍니다.

 

 

 


주요 결과

 

개발자 독립성의 영향

개발자 독립성은 내부 개발자 플랫폼을 사용하여 소프트웨어를 제공할 때 개인 및 팀 수준 모두에서 생산성 수준에 상당한 영향을 미쳤습니다. 개발자 독립성은 "개발자가 지원 팀에 의존하지 않고 전체 애플리케이션 라이프사이클 동안 작업을 수행할 수 있는 능력"으로 정의됩니다. 팀과 개인 수준에서 플랫폼 사용자가 지원 팀을 참여시키지 않고도 작업을 완료할 수 있을 때 생산성이 5% 향상되는 것을 확인했습니다.

 

 

전담 플랫폼 팀의 영향

흥미롭게도, 전담 플랫폼 팀을 두는 것의 생산성에 대한 영향은 개인에게는 미미했습니다.

그러나 팀 수준에서는 생산성이 6% 증가했습니다.

 

이 발견은 전담 플랫폼팀을 갖는 것이 개인에게는 유용하지만 전담 플랫폼팀은 전체 팀에 더 큰 영향을 미친다는 것을 시사합니다. 팀은 서로 다른 책임과 기술을 가진 여러 개발자를 두고 있기 때문에 자연스럽게 개별 엔지니어에 비해 더 다양한 개발 플랫폼을 가지게 됩니다. 전담 플랫폼 엔지니어링 팀이 있으면 플랫폼이 팀이 나타내는 작업의 다양성을 더 지원할 수 있습니다

 

 

예상치 못한 단점

플랫폼 엔지니어링은 팀과 개인의 생산성이 높아지고 조직 성과가 향상되는 측면에서 확실한 이점을 제공하지만, 예상치 못한 단점이 있었습니다. 또한 처리량과 변경 안정성이 감소하는 것으로 나타났습니다.

 

처리량의 경우, 플랫폼을 사용하지 않는 사람들과 비교했을 때 약 8% 감소를 보았습니다.

프로덕션에 배포되기 전에 변경 사항이 통과해야 하는 추가된 기계는 변경 사항의 전체 처리량을 감소시킵니다. 일반적으로 내부 개발자 플랫폼을 사용하여 소프트웨어를 빌드하고 제공하는 경우 시스템과 암묵적으로 팀 간의 "핸드오프" 수가 일반적으로 증가합니다. 핸드오프는 전체 프로세스에 시간을 도입하여 처리량은 감소하지만 작업을 완료할 수 있는 능력은 순전히 증가하는 기회입니다.

 

내부 개발자 플랫폼을 사용할 때 개발 및 운영되는 애플리케이션의 변경 안정성을 고려할 때, 놀랍게도 변경 안정성이 14% 감소했습니다. 이는 플랫폼을 사용할 때 변경 실패율과 재작업율이 상당히 증가한다는 것을 나타냅니다

플랫폼은 개발자와 팀이 변경 사항이 나쁘더라도 신속하게 수정할 수 있다는 확신을 가지고 변경 사항을 푸시할 수 있게 해줍니다. 이 경우 불안정성이 더 높아도 반드시 나쁜 것은 아닙니다. 플랫폼은 팀이 실험하고 변경 사항을 제공할 수 있는 권한을 부여하기 때문에 변경 실패와 재작업 수준이 높아지기 때문입니다.

 

플랫폼이 애플리케이션에 포함된 모든 테스트를 실행하는 자동화된 테스트 기능을 제공할 수도 있습니다. 그러나 애플리케이션 팀은 품질보다 처리량을 우선시하고 테스트를 개선하지 않음으로써 해당 기능을 충분히 활용하지 못하고 있습니다. 나쁜 변경 사항이 실제로 프로세스를 거쳐 적용되어 재작업이 발생하게 됩니다.

 

 

트레이드오프

플랫폼 엔지니어링이 만병통치약은 아니지만, 전반적인 소프트웨어 개발 및 운영 프로세스와 관련해서는 강력한 분야가 될 잠재력이 있습니다. 모든 분야와 마찬가지로 플랫폼 엔지니어링에는 장점과 단점이 있습니다

 

첫째, 개발자 독립성과 셀프 서비스 기능을 가능하게 하는 플랫폼 기능을 우선시합니다. 이를 수행할 때, 애플리케이션 라이프사이클의 모든 측면에 플랫폼을 독점적으로 사용하도록 요구하는 것과 개발자 독립성을 방해할 수 있는 것 사이의 균형에 주의가 필요합니다.

 

둘째, 애플리케이션 변경 사항의 불안정성을 주의 깊게 모니터링하고 경험하는 불안정성이 의도적인 것인지 아닌지 이해하려고 노력하는 것이 필요합니다. 플랫폼은 불안정성 측면에서 실험을 활성화하고, 생산성을 높이고, 규모에 따라 성능을 개선할 수 있는 잠재력을 가지고 있습니다.

 

 


 

2024년도의 State of DevOps Report 중 플랫폼엔지니어링의 내용을 중점으로 주요 내용을 확인해봤는데요.

State of DevOps Report 중 다른 내용으로 다뤄볼 주제가 있다면 상세하게 확인해보는 시간을 다시 가져보겠습니다....! 끝...!

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[DevOps] 2024 State of DevOps Report Part 1 (AI)

State of DevOps Report는 2014년부터 시작되어 매년 발표되고 있으며, DORA(DevOps Research and Assessment) 팀이 연구를 주도하다가 이후 Google에 인수되어 현재까지 지속적으로 발표되고 있습니다. 해당 보고서에서는 배포 빈도, 변경 실패율, 복구 시간, 리드 타임 등의 핵심 지표를 기준으로 소프트웨어 개발 및 운영 성과의 DevOps 모범 사례와 생산성 향상 전략을 분석하고 있습니다.

 

2024년도의 State of DevOps Report 중 AI의 내용을 중점으로 한번 알아보는 시간을 가져보겠습니다.

 

 


참고자료 - 2023 State of DevOps Report 소개

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

https://every-up.tistory.com/62

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

[DevOps] State of DevOps Report 2023 알아보기 1탄지난 10월달에 "State of DevOps Report 2023" 이 나왔습니다!State of DevOps Report란 Google에서 DevOps를 연구하는 DORA라는 팀에서 발표하는 자료인데요.State of DevOps Repor

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 2탄

https://every-up.tistory.com/63

 

[DevOps] 2023 State of DevOps Report 알아보기 2탄

[DevOps] 2023 State of DevOps Report 알아보기 2탄지난번에는 State of DevOps Report 2023의 주요 결과에 대한 내용을 알아보는 시간을 가졌는데요.이번에는 더 자세하게 알아보기 위해 주요 내용 중 사용자 중

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 3탄

https://every-up.tistory.com/64

 

[DevOps] 2023 State of DevOps Report 알아보기 3탄

[DevOps] 2023 State of DevOps Report 알아보기 3탄지난번 2탄에 이어서 3탄에도 State of DevOps Report 2023의 주요 내용을 상세하게 알아보는 시간을 가져보겠습니다.이번에는 인프라스트럭처와 문화에 대한

every-up.tistory.com

 

 

 


AI의 영향

2024 State of DevOps Report 내용 중 AI의 내용을 중점으로 알아보겠습니다.
Report 내용은 한글로 번역 후 정리해봤으며, 번역 내용에 따라 원문과 의미가 조금 다를 수 있음을 사전에 알려드립니다.

 

 

주요 결과(요약)

AI는 소프트웨어 개발 분야에서 패러다임 전환을 만들어내고 있으며 광범위한 영향을 미치고 있다고 합니다. AI 도입은 업무 흐름, 생산성, 직무 만족도, 코드 품질, 내부 문서 품질, 검토 프로세스, 팀 성과, 조징 성과 등에 이점이 있다고 합니다.

 

그러나 AI 도입은 몇가지 부정적인 영향도 가져온다고 하는데요. 소프트웨어 제공 성과가 감소하는 것을 관찰했으며, 제품 성과에 미치는 영향은 불확실하다고 합니다. 또한 개인은 AI 도입이 증가함에 따라 가치 있는 작업에 소요되는 시간이 감소한다고 보고하고 있습니다. AI 도입에 대한 실험 및 학습은 아직 많이 이뤄지지 않았기 때문에 계속해서 실험하고 학습이 필요하다고 보고 있습니다.

 

 

AI에 대한 조직 우선순위 변화

대다수의 응답자의 81%는 조직이 애플리케이션에 AI를 통합하는 것을 확대하기 위해 우선순위를 변경했다고 보고했습니다. 특히 응답자의 3%가 조직이 AI에 대한 집중도를 줄이고 있다고 보고했으며, 응답자의 78%는 조직이 AI를 신뢰한다고 보고했습니다.

 

 

 

AI에 의존하는 개발 작업 비율

AI의 빠른 도입이 모든 산업 부문에서 균일하게 전개되고 있다고 보고했습니다. 개인 수준에서는 응답자의 75.9%가 일상적인 직업적 책임 중 하나 이상에서 적어도 부분적으로 AI에 의존하고 있다는 것을 발견했습니다. AI에 의존하는 항목은 코드 작성, 정보 요약, 익숙하지 않은 코드 설명, 코드 최적화, 코드 문서화, 테스트 쓰기, 코드 디버깅, 데이터 분석 등이 있습니다.

 

 

 

AI가 생산성에 미치는 영향

AI는 많은 조직과 개발자가 채택하고 있기 때문에 개발 작업에 AI를 사용하는 이점은 상당히 높은 것으로 보입니다. 응답자의 75%가 2024년 초에 실시된 설문 조사에 앞서 3개월 동안 AI로 인해 긍정적인 생산성 향상을 보고했습니다.

 

AI에서 가장 큰 생산성 향상을 보고한 응답자는 보안 전문가, 시스템 관리자, 풀스택 개발자입니다.
긍정적인 생산성 향상도 보고했지만 모바일 개발자, 사이트 안정성 엔지니어, 프로젝트 관리자는 다른 역할보다는 생산성 혜택의 규모가 낮습니다.

 

 

 

AI가 생성한 코드의 품질 신뢰도

개발 작업에 사용된 AI 생성 코드의 신뢰성에 대한 참여자들의 인식은 복잡했습니다.
대다수의 응답자(87.9%)가 AI 생성 코드의 품질에 대해 어느 정도 신뢰한다고 보고했지만, 응답자가 AI 생성 코드의 품질을 신뢰한다고 보고한 정도는 일반적으로 낮았으며, 39.2%가 거의(27.3%) 신뢰하지 않거나 전혀 신뢰하지 않는다고 보고했습니다(11.9%).

 

개발자들이 AI를 빠르게 채택하고, AI에 의존하며, AI를 긍정적인 성과 기여 요소로 인식하고 있다는 설문조사의 증거를 감안할 때, 개발자들의 AI에 대한 전반적인 신뢰가 부족하다는 것을 발견했습니다.

 

 

 

AI가 미칠 부정적 영향

조사 결과에 따라 AI가 이미 개발 전문가의 업무에 엄청난 영향을 미쳤음을 시사하며, 이러한 추세는 앞으로도 계속 커질 것으로 예상합니다.


미래에 AI가 개발과 우리 세상에 어떤 영향을 미칠지 정확히 예측하는 것은 불가능하지만, 응답자들에게 향후 1년, 5년, 10년 동안 AI의 영향에 대한 추측과 기대는 그다지 희망적이지 않습니다.

 

응답자들은 AI가 자신의 경력, 환경, 사회 전체에 부정적인 영향을 미칠 것으로 예상하며, 이러한 부정적인 영향은 약 5년 후에 완전히 실현될 것이라고 보고했습니다.

 

 


AI 도입에 따른 성과 비교

AI 도입의 따른 다양한 영향을 측정했습니다.

 

 

AI가 개인에게 미치는 영향

개인의 AI 도입이 25% 증가할 경우에 따른 영향입니다.

 

개인의 AI 도입이 25% 증가하면 생산성은 약 2.1% 증가할 가능성이 높습니다. 이는 작은 것처럼 보일 수 있지만, 이는 개인 수준에서의 결과이며 수십 명의 개발자, 심지어 수만 명의 개발 자에게 확장된다고 상상해보면 이는 큰 영향을 미칠 수 있습니다.

AI 도입으로 생산력뿐만 아니라 직무 만족도 또한 실질적이고 유익한 영향을 미친다는 결과를 확인할 수 있습니다.

 

 

 

AI가 개발 성과에 미치는 영향

AI 도입이 25% 증가할 경우 개발 성과에서의 영향입니다.


개발 성과 측면에서 문서 품질 7.5% 증가, 코드 품질 3.4% 증가, 코드 검토 속도 3.1% 증가, 승인속도 1.3% 증가, 코드 복잡도 1.8% 감소 등 AI 도입에 따른 긍정적인 영향을 보여줍니다.

AI는 코드 품질을 개선하고 코드 복잡성을 줄이는 것으로 보입니다. 또한 오래된 코드의 잠재적인 리팩토링과 결합하면 고품질의 AI 생성 코드는 전반적으로 더 나은 코드베이스로 이어질 수 있습니다.

 

 

 

AI가 배포 성과에 미치는 영향

AI 도입이 여러 측면에서 긍정적인 영향을 보여주지만 배포 성과는 저하시키고 있습니다.
AI 도입이 25% 증가할 경우 배포 측면에서의 영향입니다.

 

예상과 달리, 우리의 조사 결과는 AI 도입이 소프트웨어 배포 성과에는 부정적인 영향을 미친다는 것을 보여줍니다.


AI 덕분에 응답자는 동일한 시간에 훨씬 더 많은 양의 코드를 생성할 수 있으므로 변경 목록의 크기가 커질 가능성이 있습니다. 따라서 DORA는 지속적으로 더 큰 변경은 더 느리고 불안정성을 유발할 가능성이 더 높다는 것을 보여주었습니다.

 

 

 

AI가 조직, 팀, 제품 성과에 미치는 영향

AI 도입이 25% 증가할 경우 조직, 팀, 제품 성과에에서의 영향입니다.


조직 수준 성과(AI 도입이 25% 증가할 때마다 약 2.3% 증가)와 팀 수준 성과(AI 도입이 25% 증가할 때마다 약 1.4% 증가)는 AI 도입의 혜택을 받는 것으로 보이지만, 제품 성과는 AI 도입과 명확한 연관성이 없는 것으로 보입니다.

팀과 조직은 커뮤니케이션, 지식 공유, 의사 결 정, 건강한 문화에 크게 의존합니다. AI는 이러한 영역의 일부 병목 현상을 완화하여 팀과 조직에 유익한 영향을 미칠 수 있습니다.

 


AI 도입 전략

보고서를 통해 AI 사용에 따른 개인, 팀, 조직에 긍정적인 효과를 얻을 수 있다는 점을 확인했습니다.
AI를 대규모로 도입하는 것은 쉽지 않을 수 있습니다. AI 도입 전략을 통해 상당한 이점을 가져올 수 있는 잠재력이 있습니다.

 

 

명확한 목표 및 정책 정의

조직과 팀의 역량을 강화하기 위해 직원에게 AI 활용 목표과 정책, 도입 계획에 대한 투명한 정보를 제공합니다.
AI를 어떻게 활용할지에 대한 큰 방향(비전)과 구체적인 실행 방법(정책)을 명확하게 정하면, 사람들이 불안해하는 문제를 줄일 수 있습니다.
그 결과, 모두가 AI의 활용 방식에 대해 걱정하기보다 더 중요한 일이나 가치 있는 작업에 집중할 수 있게 됩니다.

 

 

지속적인 학습과 실험 문화 조성

개인과 팀이 스스로 AI를 어떻게 활용할지 결정할 수 있도록 자유를 주고, AI의 유익한 사용법을 찾도록 돕습니다.
AI 도입을 단순한 기술 적용으로 보지 않고, 실제로 직원들의 업무를 돕고, 사용자(고객)에게 긍정적인 영향을 주며, 팀이 더 큰 성과를 낼 수 있도록 하는지를 기준으로 평가합니다.

 

 

AI의 단점을 인식하고 활용

AI가 업무를 도와줄 수 있지만, 오히려 중요한 작업 시간이 줄어드는 문제나 AI에 지나치게 의존하는 위험이 생길 수 있습니다.

따라서 어떤 점에서 유익한지뿐만 아니라, 어떻게 하면 부정적인 영향을 줄일 수 있는지도 고민해야 합니다. 즉, AI가 단순한 도구가 아니라, 조직이 성장하는 데 실질적인 도움이 되도록 활용하는 것이 핵심입니다.

 

 

 


 

2024년도의 State of DevOps Report 중 AI의 내용을 중점으로 주요 내용을 확인해봤는데요.

 

다음은 플랫폼엔지니어링의 주요 내용에 대해서 상세하게 확인해보는 시간을 가져보겠습니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

+ Recent posts