데브옵스(DevOps) 한방 정리

appti·2024년 4월 9일
0

쿠버네티스 인강

목록 보기
9/15

서론

해당 글은 일프로 님의 인프런 강의 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2의 내용을 정리한 글입니다.

해당 글에 사용된 내용, 사진 및 그림은 모두 강의와 강의 자료에 포함된 내용입니다.

전체 구성도

  • CI/CD 과정
    1. CI/CD 시작 시 github에서 최신 소스 코드 다운로드
    2. 메이븐 라이브러리에서 필요한 의존성을 토대로 애플리케이션 빌드
    3. 빌드 결과로 실행할 수 있는 jar 파일 생성
    4. DockerHub에서 openjdk 다운로드
    5. openjdk 기반으로 jar를 생성할 수 있는 이미지 생성
    6. DockerHub에 생성된 미지 업로드
  • 쿠버네티스
    1. jenkins가 쿠버네티스에게 kubectl을 통해 파드 생성 요청
    2. 쿠버네티스는 필요한 컨테이너 이미지를 DockerHub에서 다운로드
    3. 쿠버네티스가 컨테이너 런타임 containerd에 컨테이너 생성 요청

DevOps에서 가장 중요한 것

  • 아무리 복잡한 CI/CD 흐름이 있더라도 개발 -> 빌드 -> 실행 파일 생성이라는 사이클은 변하지 않음

  • 개발 환경
    • 개발 & 빌드하기 위한 OpenJDK
    • 빌드하기 위한 Gradle
    • 빌드의 결과물인 jar
  • CI/CD 환경
    • 빌드하기 위한 OpenJDK & Gradle
    • 인프라 환경에 빌드 결과물인 jar를 전달하기 위한 배포 과정
  • 인프라 환경
    • jar를 실행하기 위한 OpenJDK
    • 애플리케이션 실행을 위한 jar
  • 기존 구성
    1. 인프라 환경 구성
      1-1. 운영 환경에서는 Red Hat 계열 리눅스 사용
      1-2. 개발 환경에서는 비용 절약을 위해 오픈 소스 리눅스 사용
    2. CI/CD 과정에서 빌드 후 결과물인 jar(= 실행 파일)를 배포를 통해 인프라 환경에 전달
  • 컨테이너 구성
    1. 인프라 환경 구성
      1-1. 운영 환경에서는 Red Hat 계열 리눅스 사용
      1-2. 개발 환경에서는 비용 절약을 위해 오픈 소스 리눅스 사용
    2. CI/CD 과정에서 빌드 후 결과물을 배포를 통해 인프라 환경에 전달
      2-1. 도커 이미지를 DockerHub에 업로드
      2-2. kubectl을 통해 배포
    3. 쿠버네티스가 이미지를 다운받아 컨테이너 실행
      3-1. 도커 이미지에 빌드 결과인 jar와 실행을 위한 OpenJDK가 포함되어 있음
  • 공통 사항
    • 개발 후 실행 파일을 생성
    • 즉 DevOps에서 가장 핵심이 개발 후 빌드를 통해 실행 파일을 생성하는 것

DevOps를 구성하는 오픈소스들

  • DevOps는 다음과 같은 단계로 분리할 수 있음
    • 계획
      • 개발 외 영역에 존재
    • 개발
      • 개발 환경에 존재
    • 빌드
      • CI/CD 환경에 존재
    • 테스트
      • 빌드에 연결되어 같이 실행
    • 릴리즈
      • 배포 가능한 패키지를 만드는 과정
      • 컨테이너 이미지를 만들기 위한 Dockerfile 등을 의미
    • 배포
    • 운영
    • 모니터링
    • 슬랙
      • DevOps의 중요 포인트를 차지하고 있는 툴들과 연동 가능
      • DevOps 과정 중 필요한 내용을 슬랙 알람으로 표현 가능

DevOps에 엮인 IT 직군들

  • 개발자
    • ~ 2년차
      • 업무팀에서 사용하는 개발 환경에 적응
      • 주어진 개발 범위를 해결하는 퍼포먼스
    • ~ 4년차
      • github 장애 등에 대응
      • 개발 측면에서 변경할 부분을 스스로 찾아서 변경할 수 있는 퍼포먼스
    • ~ 6년차
      • 개발 환경의 몇몇 툴에 대한 초기 세팅 구성
      • CI 환경 빌드 / 테스트 자동화
    • ~ 8년차
      • 새로운 트렌드 리드
    • 9년차 이상
      • PM/PL/아키텍트/컨설턴트를 담당할 가능성이 매우 높음
      • 개발자/데브옵스 엔지니어/운영자의 직책과 관련된 업무를 모두 해결할 수 있어야 함

  • Ops의 종류 및 역할
    • GitOps
      • DevOps 파이프라인을 Git 하나로 통일
    • DevSecOps
      • 빠른 배포와 보안 지원
      • 보안적인 요소까지 자동화하는 것이 핵심
    • MLOps
      • 머신러닝, AI 분야
      • 데이터 분석가가 중요한 역할을 담당
        • 데이터 분석가와 개발자들의 커뮤니케이션을 위한 역할
    • LLMOps
      • ChatGPT와 같은 방대한 규모의 머신러닝을 위한 DevOps 파이프라인
      • MLOps 고도화
    • FinOps
      • 클라우드 환경 비용 절감 목적
profile
안녕하세요

0개의 댓글