Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 프로그래머스
- javascirpt
- VectoreStore
- AI
- DP
- turbo
- build
- javascript
- Two Pointer
- BFS
- typescript
- python
- Algorithm
- Infra
- 파이썬
- queue
- heapq
- 알고리즘
- frontend
- monorepo
- LLM
- ansible
- OpenAI
- jenkins
- rag
- React
- modbus
- dfs
- docker
- CI/CD
Archives
- Today
- Total
DM Log
[CI/CD #1] DevOps와 CI/CD 이해 (feat. Jenkins) 본문
Waferfall vs Agile
Waferfall 모델
- 순차적 개발 방식으로 요구사항 → 설계 → 개발 → 테스트 → 배포 단계가 명확히 구분
- 각 단계가 완료되어야 다음 단계로 진행
- 장점: 문서화와 절차가 명확
- 단점: 변경 대응이 어렵고 피드백 주기 김
Agile 모델
- 반족적 이며 짧은 개발 주기 단위로 피드백 반영
- 팀 간 협업과 지속적인 개선 중신
- DevOps, CI/CD 문화의 근가이 되는 개발 철학
Cloud Native Application
클라우드 확경에서 탄력적으로 동작하도록 설계된 애플리케이션
MSA
- 애플리케이션을 여러 독립 서비스 단위로 분리
- 각 서비스는 자체 배포, 확장, 장애 복구 가능
- 예: 주문 서비스, 결제 서비스, 사용자 인증 서비스 등
Inner Architecture
- 마이크로서비스 내부 구조
- 핵심 요소:
- REST API, DB, 서비스 로직 등 개별 컴포넌트 구성
- 단일 책임 원칙(SRP) 기반 설계
- 서비스 간 통신 gRPC, HTTP 기반
Outer Archietecture
- 여러 마이크로 서비스를 조합하고 관리하는 상위 구조
- 주요 구성:
- API Gateway: 요청 라우팅 및 인증 처리
- Service Discovery: 동적 서비스 탐색
- Load Balancer / Message Queue: 트래픽 분산 및 비동기 처리
Outer Architecutre Capabliy
- Observability: 로그, 메트릭, 트레이싱 기반 모니터링
- Scalability: Auto-scaling, Horizontal 확장
- Resilience: Circuit Breaker, Retry, Timeout 등 장애 대응 전략
Containerization
- “환경에 구애받지 않는 배포”의 핵심 기술
- Docker를 사용해 앱과 의존성을 하나의 이미지로 패키징
- Kubernetes와 결합 시 자동 배포/복구 가능
- DevOps의 실질적 기반으로 CI/CD 파이프라인과 직접 연결됨
DevOps
- Development + Operations의 합성어로,
개발과 운영의 경계를 허물고 협업과 자동화를 강조. - 목표: 빠른 배포, 안정적 운영, 지속적인 피드백.
- 주요 구성요소:
- Culture: 협업 중심 문화.
- Automation: 빌드, 테스트, 배포 자동화.
- Measurement: 성능/품질 측정.
- Sharing: 지식과 개선 사항 공유.
CI / CD
CI (Continuous Integration)
- 코드 변경 시마다 자동 빌드, 테스트, 통합 수행.
- 코드 충돌 및 오류를 조기에 발견 가능.
CD (Continuout Deployment / Delivery)
- 통합된 코드를 자동으로 스테이징 또는 운영 환경에 배포.
- 사람이 개입하지 않아도 신뢰할 수 있는 자동 배포 프로세스 구축.
CI / CD Flow
- 개발자가 Git에 코드 푸시
- Jenkins(Git Hook) → 빌드 자동 시작
- 테스트 수행 (단위, 통합, 기능 테스트)
- 도커 이미지 빌드 및 레지스트리 푸시
- Kubernetes 배포 / 운영 서버 반영
- 모니터링 및 피드백 루프
JenKins
Jenkins Pipeline
- CI/CD 자동화를 위한 스크립트 기반 파이프라인
- Groovy DSL 문법으로 빌드-테스트-배포 단계를 정의
Jenkins 초기 설치 (Docker 기반)
- Docker 설치 후 Jenkins 실행
docker run -d \ -v jenkins_home:/var/jenkins_home \ -p 8080:8080 -p 50000:50000 \ --restart=on-failure \ --name jenkins-server \ jenkins/jenkins:lts-jdk21 - 초기 비밀번호 확인Jenkins 접속
docker exec -it jenkins-server cat /var/jenkins_home/secrets/initialAdminPassword - Jenkins 접속 - 브라우저에서 http://localhost:8080 접속 → 패키지 설치 → admin 계정 생성
- Global JDK 설정 주의점
Docker 내부에 JDK가 기본 포함되지 않으면, Jenkins 관리 → Global Tool Configuration에서 수동 설정 필요
Item 생성 및 빌드
- Jenkins 대시보드 → “New Item” → Freestyle project 선택
- Build Steps → “Execute Shell” 선택
- 리눅스 명령어 기반으로 빌드 스크립트 입력
- 빌드 완료 후 ∨ 클릭 → Console Output에서 로그 확인.
- Jenkins 내부 쉘 접근
docker exec -ti jenkins-server bash
구분 핵심 키워드 설명
| 개발 문화 | Agile, DevOps | 협업과 자동화 중심 |
| 아키텍처 | MSA, Container | 유연한 확장성과 독립 배포 |
| 자동화 | CI/CD | 빌드-테스트-배포 자동화 |
| 도구 | Jenkins | 대표적인 CI/CD 도구 |
'개발공부 > Infra' 카테고리의 다른 글
| [CI/CD #6] Jenkins + Ansible + Kubernetes 연동 (0) | 2025.11.01 |
|---|---|
| [CI/CD #5] Docker Desktop Kubernetes 사용 (0) | 2025.11.01 |
| [CI/CD #4] Jenkins + Ansible 연동 (0) | 2025.10.29 |
| [CI/CD #3] Infrastructure as Code 개요와 Ansible의 이해 (0) | 2025.10.28 |
| [CI/CD #2] Jenkins를 이용한 CI/CD 사용 (0) | 2025.10.26 |
