⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다.
(1) DevOps 에서 가장 중요한 것
1-1. DevOps 전체 구성도

개발 소스 를 GitHub 에 커밋하면서 소스 코드를 통합적 관리
- CI/CD 환경에서 Build 버튼을 누르면 GitHub 에서 최신 소스 코드 다운
- 메이븐 저장소에서 소스에 필요한 라이브러리 다운
- 실행할 수 있는 형태의 JAR 파일이 생성 되면서 소스 빌드는 끝
Kubernetes 환경으로 배포해야하니깐 컨테이너 빌드를 한 번 더 해야하고, 도커로 빌드가 시작
- 도커 허브에서 OpenJDK 가 있는 베이스 이미지를 다운
- 받은 이미지에 JAR 파일을 넣으면 컨데이터 이미지로 만들어진다
- dockerHub 에 올리기
배포
- kubectl 명령어를 날려서 쿠버네티스에 파드를 생성
- 쿠버네티스가 필요한 이미지를 도커 허브에서 다운
- containerd 에게 컨테이너 생성 요청
1-2. 개발 -> 빌드 -> 실행파일
개발환경

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

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

| CI/CD | 인프라 |
→ 서비스가 활성화되면, 개발환경에는 여러 개발자들이 운영에는 외부 사용자들이 접속 가능 |
|
컨테이너 구성 :

| CI/CD | 인프라 |
|
|
⇒ 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 |