MLOps 20

[Github Actions#1] Github Actions란?

CI/CD는 더 이상 선택이 아닌 개발 생산성과 품질을 보장하는 필수 요소로 자리 잡고 있습니다. 수많은 자동화 도구들 중 이번 글부터는 자동화 툴 중 하나인 Github Actions에 대해 알아보겠습니다. 앞서 글에서 말씀드렸듯이 CI/CD를 구축할 수 있는 대표적인 도구로는 다음과 같은 것들이 있습니다:GitHub ActionsJenkinsCircleCITravis CI그 외 다수...이 중에서도 GitHub Actions는 사용 편의성, 비용, 유지보수 측면에서 특히 개인 프로젝트나 스타트업, 내부 자동화 작업에 매우 강점을 보이고 있는 툴입니다. 특히, GitHub Actions는 GitHub에 내장된 자동화 기능으로, 별도의 설치나 서버 운영 없이 클라우드 상에서 바로 파이프라인을 구성할 수..

MLOps/CI CD 2025.05.23

[CI/CD#1] CI/CD란?

서비스를 운영하면서 새로운 기능을 지속적으로 추가하고, 이를 안정적으로 사용자에게 제공하기 위해서는 반복적이고 번거로운 작업들이 동반됩니다. 이 과정을 자동화할 수 있는 방법이 바로 CI/CD입니다. 그렇다면, CI/CD란 정확히 무엇이며, 왜 꼭 배워야 할까요? CI/CD란?CI/CD는 다음의 두 가지 용어로 이루어진 개념입니다:CI (Continuous Integration): 지속적인 통합CD (Continuous Deployment/Delivery): 지속적인 배포말은 어렵지만, 사실 간단합니다. CI/CD는 소프트웨어 개발 과정에서의 '테스트 → 통합 → 배포' 과정을 자동화하는 시스템입니다. 왜 CI/CD를 배워야 할까?서비스를 만들다 보면 코드 수정이 자주 발생하고, 새로운 기능을 추가해야..

MLOps/CI CD 2025.05.23

[Kubernetes#1] 쿠버네티스(Kubernetes)란?

오늘날의 소프트웨어 개발 환경에서는 수많은 컨테이너(Container) 들이 동시에 실행되고, 서로 협업하며 하나의 애플리케이션을 구성합니다. 이러한 환경을 안정적으로 운영하고 관리하기 위해 등장한 기술이 바로 쿠버네티스(Kubernetes) 입니다. 쿠버네티스란?쿠버네티스(Kubernetes)는 여러 개의 컨테이너를 효율적으로 배포하고, 자동으로 확장하고, 안정적으로 운영하도록 돕는 오픈 소스 컨테이너 오케스트레이션 시스템입니다.다르게 표현하자면, 단순히 컨테이너를 실행하는 수준을 넘어서, 전체 인프라 수준에서 컨테이너들을 자동으로 배치하고, 관리하고, 복구하는 기술입니다. 쉽게 말해, 쿠버네티스는 Docker Compose의 확장판이라고 볼 수 있습니다.Docker Compose가 로컬 개발 환경에..

MLOps/Docker 2025.05.13

[Docker#16] Docker Compose 여러 개의 컨테이너 동시에 띄우기(2)

Docker Compose를 사용하면 여러 개의 컨테이너를 동시에 띄워 다양한 환경을 쉽게 구축할 수 있습니다. 예를 들어, Python(Flask) 백엔드와 MySQL 데이터베이스를 각각 컨테이너로 구성해 한 번에 실행할 수 있죠.하지만 종종 아래와 같은 MySQL 연결 오류를 마주하게 됩니다. Can't connect to MySQL server on 'my-db' ([Errno 111] Connection refused) 이번 글에서는 왜 이런 에러가 발생하는지, 그리고 어떻게 해결해야 하는지를 설명하도록 하겠습니다. 에러 원인: 컨테이너는 서로 다른 'localhost'를 가진다보통 우리는 MySQL 주소를 이렇게 작성합니다.conn = pymysql.connect( host="localh..

MLOps/Docker 2025.05.13

[Docker#15] Docker Compose 여러 개의 컨테이너 동시에 띄우기(1)

개발 환경을 셋업할 때, 데이터베이스와 백엔드 서버를 동시에 띄우는 작업은 매우 흔합니다. 이번 글에서는 MySQL과 Python(Flask 서버)를 Docker Compose로 한 번에 실행하는 실습을 해보겠습니다. 실습디렉토리 구조project/├── app/│ ├── main.py│ ├── requirements.txt│ └── Dockerfile├── compose.yml Flask 코드from flask import Flaskimport pymysqlapp = Flask(__name__)@app.route("/")def hello_mysql(): try: conn = pymysql.connect( host="localhost" ..

MLOps/Docker 2025.05.13

[Docker#14] Docker Compose란?

복잡한 애플리케이션을 개발하거나 운영하다 보면, 하나의 컨테이너만으로는 충분하지 않을 때가 많습니다. 예를 들어, 웹 서버와 데이터베이스 서버를 함께 운영하거나, 여러 개의 마이크로서비스를 동시에 실행해야 할 때가 대표적인 사례입니다. 이때 유용하게 활용되는 도구가 바로 Docker Compose입니다. Docker Compose란?Docker Compose는 여러 개의 Docker 컨테이너를 하나의 서비스 묶음으로 정의하고 관리할 수 있게 도와주는 도구입니다. 즉, 복잡한 컨테이너 환경을 하나의 compose.yml 파일로 정의해두면, 한 줄 명령어로 전체 서비스를 실행하거나 중지할 수 있습니다. 왜 사용할까?1. 여러 개의 컨테이너를 효율적으로 관리할 수 있다.웹 서버, 데이터베이스, 캐시 서버 ..

MLOps/Docker 2025.05.12

[Docker#13] Dockerfile WORKDIR

Docker를 사용할 때, 아무 디렉터리에나 파일을 복사하거나 실행하면 컨테이너 내부가 금방 지저분해집니다.이 문제를 해결해주는 중요한 명령어가 바로 WORKDIR입니다. 이번 글에서는 WORKDIR의 의미, 사용법을 알아보도록 하겠습니다. WORKDIR이란?WORKDIR은 Dockerfile에서 작업 디렉터리를 설정하는 명령어입니다.설정된 디렉터리 이후에 등장하는 RUN, COPY, CMD, ENTRYPOINT 등 모든 명령은 이 디렉터리를 기준으로 동작합니다.비유하자면, 미니 컴퓨터의 "작업 폴더"를 미리 지정해두는 것과 같습니다. 왜 써야 할까? 파일이 깔끔하게 정리됩니다.컨테이너 내부가 혼란스럽지 않습니다.대규모 프로젝트에서도 관리가 쉬워집니다.안 쓰면 컨테이너 루트(/)에 파일이 섞여버립니..

MLOps/Docker 2025.05.12

[Docker#12] Dockerfile RUN

Dockerfile을 구성하다 보면, 이미지 생성 단계에서 미리 필요한 소프트웨어나 패키지를 설치해야 할 경우가 많습니다.이럴 때 사용하는 명령어가 바로 RUN입니다. 이번 글에서는 RUN 명령어의 역할과 사용법을 알아보겠습니다. RUN이란?RUN은 이미지를 생성(build)하는 과정 중에 명령어를 실행할 때 사용하는 Dockerfile 명령어입니다.쉽게 말해, "이 이미지를 만들 때 미리 ~~를 설치해 줘"라고 지시할 수 있는 명령어입니다. # 문법RUN [명령어]# 예시RUN pip install -r requirements.txt RUN vs ENTRYPOINT둘 다 명령어를 실행하지만, 실행 시점이 완전히 다릅니다. 구분 RUN ENTRYPOINT 실행 시점이미지 빌드 중컨테이너 실행 시용..

MLOps/Docker 2025.05.12

[Docker#11] Dockerfile ENTRYPOINT

Docker는 애플리케이션을 컨테이너 단위로 분리하고 실행할 수 있게 해주는 도구입니다.이때, 컨테이너가 실행되자마자 자동으로 특정 명령을 수행하도록 설정할 수 있는데요, 이 기능을 담당하는 Dockerfile 명령어가 바로 ENTRYPOINT입니다. ENTRYPOINT란?ENTRYPOINT는 Dockerfile에서 정의하는 명령어로, 컨테이너가 실행될 때 자동으로 실행되는 명령을 설정할 수 있습니다.쉽게 말해, 미니 컴퓨터의 전원을 켜자마자 실행하고 싶은 프로그램을 등록하는 것과 같습니다. ENTRYPOINT [ "실행할_명령어", "인자1", "인자2", ... ] 실습컨테이너가 실행되면 main.py 파이썬 스크립트를 자동으로 실행하게 만들어보겠습니다. # 프로젝트 구성.├── Dockerfi..

MLOps/Docker 2025.05.12

[Docker#10] Dockerfile COPY

Docker를 사용할 때, 호스트 컴퓨터의 파일이나 디렉터리를 컨테이너로 복사하는 작업은 매우 자주 사용됩니다.이때 사용하는 것이 바로 COPY 명령어입니다. 이번 글에서는 COPY의 기본 문법을 알아보겠습니다. COPY란?COPY는 호스트 컴퓨터(내 로컬)에 있는 파일이나 폴더를 컨테이너 이미지 안으로 복사하는 명령어입니다.보통 코드, 설정 파일, 라이브러리 등을 Docker 이미지에 포함시킬 때 사용합니다. COPY [복사할_파일_또는_폴더_경로] [컨테이너_내_경로] 예를 들어, app.txt 파일을 컨테이너 루트에 복사하고 싶다면 다음과 같이 작성합니다.COPY app.txt /app.txt 단일 파일 복사FROM python:3.11-slimCOPY app.txt /app.txtENTRYPO..

MLOps/Docker 2025.05.12