(9) 데브옵스 한방 정리

2025. 6. 9. 10:55·🌱 인프런/⚓ 쿠버네티스 어나더 클래스 (지상편)

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다.

 

(1) DevOps 에서 가장 중요한 것

1-1. DevOps 전체 구성도

 

개발 소스 를 GitHub 에 커밋하면서 소스 코드를 통합적 관리

  1. CI/CD 환경에서 Build 버튼을 누르면 GitHub 에서 최신 소스 코드 다운
  2. 메이븐 저장소에서 소스에 필요한 라이브러리 다운
  3. 실행할 수 있는 형태의 JAR 파일이 생성 되면서 소스 빌드는 끝

Kubernetes 환경으로 배포해야하니깐 컨테이너 빌드를 한 번 더 해야하고, 도커로 빌드가 시작

  1. 도커 허브에서 OpenJDK 가 있는 베이스 이미지를 다운
  2. 받은 이미지에 JAR 파일을 넣으면 컨데이터 이미지로 만들어진다
  3. dockerHub 에 올리기

배포

  1. kubectl 명령어를 날려서 쿠버네티스에 파드를 생성
  2. 쿠버네티스가 필요한 이미지를 도커 허브에서 다운
  3. containerd 에게 컨테이너 생성 요청

 

1-2. 개발 -> 빌드 -> 실행파일

 

개발환경

 

  1. 개발환경은 통산 내 PC
  2. 맥이나 윈도우 위에 개발툴인 인텔리제이 설치
  3. 개발을 위한 툴킷인 OpenJDK 를 지정하고 개발하면 되지만 쉽게 하기 위해서 스프링 프레임워크를 사용
  4. 코드를 실행 가능한 파일로 만들려면 빌드 필요
  5. Gradle 로 빌드를 하지만, 빌드 과정에서 소스를 컴파일하는 부분은 OpenJDK 가 사용
  6. Jar 파일이 만들어지는데, 이 파일이 OpenJDK 에 있는 JVM 위에서 실행 → 빌드하고, 파일을 실행시키는에 OpenJDK 가 항상 필요
  7. 개발자가 실행된 앱에 접속 가능
  8. 개발 환경에는 개발, 빌드, 실행파일 동작을 모두 실행

 

 

 

 

 

 

CI/CD 환경

  1. CI/CD 환경에서는 빌드를 해야하기 때문에 OpenJDK 와 Gradle 이 필요 + 인프라 환경으로 실행파일을 넘겨주기 위해 배포 과정 추가
  2. 크게 dev, qa, prod 환경이 존재
    • dev : App 이 하나는 아니기 때문에 개발 환경이 있어야 내가 개발한 코드를 편하게 테스트 가능
    • qa : 개발자가 아닌 전문 테스트 담당자 용, 최대한 운영 환경과 동일하게 구성
    • prod : 이중화
  3. CI/CD 환경이 필요한 이유 : 혼자 앱을 개발하지 않기 때문에
    • 한 앱을 만들더라도, 여러 개발자들이 코딩
    • 이 코드들을 통합해야 하고, GitHub 를 이용해 최신 소스 코드 유지
  4. Jenkins 가 GitHub 에서 소스를 받아서 빌드하고 배포하는 역할
  5. 이런 역할을 하는 툴이 설치가 되어 있는 서버가 CI/CD 환경

 

인프라 환경

  1. 인프라 환경에서는 실행파일과, 개발 (OpenJDK) 가 있어야 한다

 

 

기존 구성 : 컨테이너를 도입하기 이전 구성

CI/CD 인프라
  • Jenkins 를 설치
  • OpenJDK 랑 Gradle 로 빌드를 하겠다고 세팅
  • 빌드 버튼을 누르면, JAR 파일이 만들어진다
  1. 만들어진 JAR 파일을 인프라 환경으로 복사
  2. 파일을 실행시키는 명령
→ 이 두가지 동작이 Jenkins 배포 스크립트의 명령어로 들어있음
→ 서비스가 활성화되면, 개발환경에는 여러 개발자들이 운영에는 외부 사용자들이 접속 가능
  • 개발환경과 운영환경
  • OS 를 설치 후 OpenJDK 까지 미리 구성

 

 

컨테이너 구성 :

CI/CD 인프라
  • 소스 빌드
  • 컨테이너 빌드
  • Docker Hub 로 이미지를 업로드
  • kubectl 로 배포
  • 개발환경과 운영환경
  • 쿠버네티스 인프라 환경
  • 쿠버네티스가 이미지를 다운받아서 컨테이너 실행
  • 컨테이너 안에는 OpenJDK 랑 실행파일

 

⇒ DevOps 가 많이 비대해졌지만, 핵심은 개발하고, 빌드해서 실행파일을 만드는 것


(2) DevOps 를 구성하는 오픈소스들

 

  • CI : 통합된 소스를 가지고 빌드 테스트를 자동화
  • CD : 배포를 자동화시키는 기능
  • 세부적으로는 8가지 단계
  • 개발
    • 계획 : 일정 / 이슈 / 협업 ⇒ Jira, Notion, Redmine, slack
    • 개발 : 언어 / 툴 / 프레임워크 / 테스트코드 / 코드분석 / 협업 ⇒ IntelliJ, OpenJDK, Spring Boot, JUint, FindBugs, pmd, GitHub
    • 빌드 : 소스 / 컨테이너 ⇒ Gradle, Maven, docker
    • 테스트 : 기능 / 성능 커버리지 ⇒ JUnit, JMeter, JACOCO
    • 릴리즈 : 도커 / 쿠버네티스 : Docker (Dockerfile), 쿠버네티스 (Yaml)
    • 배포 : 도커 / 쿠버네티스 : Kustomize, HELM, argo, dockerhub
    • 운영 : 런타임 / 네트워크 / 데이터베이스 : containerd, etcd, NGNIX, CALICO, Istio
    • 모니터링 : 자원 사용량 / App 로그 / 트래픽 흐름 : Grafana, Grafana loki, Prometheus, JAGER, ZIPKIN

(3) DevOps 에 엮인 IT 직군들

3-1. DevOps 에 엮인 IT 직군들

 

개발자

  • 2년차 : 업무팀에서 사용하는 개발 환경들을 빨리 적용
  • 4년차 : IntelliJ 설정부터 GitHub 까지 장애나 변경할 부분이 생기면 스스로 찾아서 처리할 정도의 실력
  • 6년차 : 개발 환경의 몇몇 툴들을 본인이 초기 세팅을 구성하고 다른 사람들을 리드하면서 CI 환경의 빌드나 테스트 자동화
  • 8년차 : 새로운 트렌드를 어느 정도 리드

데브옵스 엔지니어

  • 2년차 : 현재 팀에 구성되어 있는 CI/CD 환경에 적응
  • 4년차 : 운영 환경에 설치되는 툴이랑 개발에서 GitHub 까지는 담당
  • 6년차 : 모니터링 시스템들까지 설치하고 구성

운영자

  • 4년차 : 현재 만들어져 있는 운영 환경들을 모니터링
  • 6년차 : 릴리즈와 배포하는 부분까지 어떻게 구성되는지 알고, 모니터링 하는 화면 까지
  • 8년차 : 파이프라인의 시작인 빌드부터 운영 배포까지 다 알고 있어서 주도적으로 운영에 편하게끔 구성을 업데이트 (사이트 신뢰성 엔지니어 SRE)

 

3-2. DevOps 외 다른 Ops 들

 

GitOps

  • 파이프라인을 Git 하나로 통일
  • 파이프라인에 사용되는 툴들이 너무 많다보니 사용자들이 툴 선택하는 것조차 힘들어한다 → Git 하나로 통일하자
  • 이슈/협업 관리, 빌드/테스트/배포 의 기능들을 모두 제공
  • Github Actions ⇒ Jenkins 대체 가능

DevSecOps

  • 빠른 배포와 보안을 동시에 잡자
  • 보안체크까지 자동화
  • 파이프라인 중간중간에 보안 검사를 자동화시켜 놓자
  • Jenkins : sonarQube 로 코드 보안
  • dockerHub : Trivy 로 이미지 보안
  • Kubernetes : Open Policy Agent, Kyverno 로 클러스터 보안

MLOps

  • 머신러닝, AI 분야를 위한 DevOps
  • 상품추천, 사용자 행동 예측
  • 데이터 분석가 : 데이터를 분석해서 검증하고 학습하고 평가하고 서빙해서 시스템에 반영
  • 데이터 분석과 개발자 간의 커뮤니케이션을 위해 파이프라인을 만든다
  • Kubeflow, Airflow, Knative, KServe

LLMOps

  • ChatGPT 와 같은 방대한 규모 특화

FinOps

  • 클라우드 환경 비용 절감에 포커스

 

 

 

 

 

이미지 출처 URL : https://inf.run/k7mF

'🌱 인프런 > ⚓ 쿠버네티스 어나더 클래스 (지상편)' 카테고리의 다른 글

(11) 배포를 시작하기 전에 반드시 알아야 할 것들  (2) 2025.06.11
(10) 손쉽게 데브옵스 환경을 구축하는 방법  (2) 2025.06.10
[미션4] Application 기능으로 이해하기 - PVC/PV, Deployment, Service, HPA  (0) 2025.06.08
[미션3] Application 기능으로 이해하기 - Configmap, Secret > 응용과제  (0) 2025.06.08
[미션2] Application 기능으로 이해하기 - Probe > 응용과제  (0) 2025.06.08
'🌱 인프런/⚓ 쿠버네티스 어나더 클래스 (지상편)' 카테고리의 다른 글
  • (11) 배포를 시작하기 전에 반드시 알아야 할 것들
  • (10) 손쉽게 데브옵스 환경을 구축하는 방법
  • [미션4] Application 기능으로 이해하기 - PVC/PV, Deployment, Service, HPA
  • [미션3] Application 기능으로 이해하기 - Configmap, Secret > 응용과제
말린
말린
  • 말린
    개발새발
    말린
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • 👩🏻‍💻 알고리즘 (17)
        • 백준 (17)
      • ✒️ 글또 10기 (6)
      • 🗃️ 데이터베이스 (5)
      • ☕️ 자바 (1)
      • 🌱 인프런 (28)
        • ⚓ 쿠버네티스 어나더 클래스 (지상편) (22)
        • ☕️ 김영한의 실전 자바 - 중급 1편 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
말린
(9) 데브옵스 한방 정리
상단으로

티스토리툴바