Jenkins를 이용한 CI/CD Pipeline 구축 인프런 강의를 듣고 정리하여 Jenkins를 마스터 해보겠다... 돈 썼잖아...공부하좌
Building a CI/CD Pipeline Using Jenkins Course | kenneth - Inflearn
kenneth | This lecture covers CI (Continuous Integration) and CD (Continuous Deployment) pipelines, which are one of the four core elements (MSA, CI/CD,
www.inflearn.com
💧 Waterfall 방법론: 전통적이고 체계적인 개발 프로세스
Waterfall 방법론은 소프트웨어 개발의 초기 단계부터 계획적으로 진행되는 전통적인 방법론입니다. 프로젝트가 단계별로 진행되며 각 단계는 명확하게 구분됩니다.
✅ 단계별 진행
- 요구사항 정의: 고객의 요구사항을 명확히 분석하고 문서화합니다.
- 분석 및 설계: 요구사항을 기반으로 시스템 구조와 설계를 정의합니다.
- 구현: 설계에 따라 소프트웨어를 개발합니다.
- 테스트: 개발된 소프트웨어가 요구사항을 충족하는지 검증합니다.
- 운영 및 유지보수: 제품을 실제 환경에서 운영하고, 발생하는 문제를 해결합니다.
⚠️ 한계점
- 단계 간 회귀 불가: 이전 단계로 돌아가 수정하기 어렵습니다.
- 고객 요구사항 반영 한계: 개발 도중 새로운 요구사항 반영이 어렵습니다.
- 장기 프로젝트에 적합: 명확한 요구사항이 필요한 정부, 제조업 프로젝트에 적합합니다.
🚀 Agile 방법론: 유연하고 빠른 변화 대응
Agile 방법론은 반복적이고 점진적인 개발을 통해 변화하는 요구사항에 유연하게 대응하는 방식입니다. 사용자 중심의 개발을 지향하며, 짧은 주기의 반복(Iteration)을 통해 빠르게 결과물을 도출합니다.
✅ 핵심 가치
- 사람과 상호작용 중심의 협업
- 작동하는 소프트웨어 우선 개발
- 고객과의 긴밀한 협력
- 변화에 대한 민첩한 대응
🔧 주요 실천 방법
- 익스트림 프로그래밍(XP): 빠른 피드백과 코드 품질 향상을 위한 실천법
- 페어 프로그래밍: 두 명의 개발자가 함께 코드를 작성해 오류를 최소화
- 테스트 주도 개발(TDD): 테스트 케이스를 먼저 작성하고 개발 진행
- 스크럼(Scrum): 일정한 주기로 개발 결과물을 점검하고 개선
🌟 장점
- 빠른 피드백과 개선
- 요구사항 변화에 빠른 대응
- 고객과의 긴밀한 소통
☁️ 클라우드 네이티브 아키텍처: 확장성과 유연성을 위한 전략
클라우드 네이티브는 클라우드 환경에서 최적화된 애플리케이션을 설계하고 운영하는 방법입니다. 이를 통해 서비스의 확장성과 복원력을 높일 수 있습니다.
🔑 핵심 기술
- 마이크로서비스(Microservices): 독립적으로 배포 및 확장 가능한 작은 서비스 단위
- 컨테이너(Container): 애플리케이션을 효율적으로 배포하고 운영 (ex. Docker)
- DevOps: 개발과 운영의 통합으로 빠른 배포와 안정성 확보
- CI/CD: 자동화된 빌드, 테스트, 배포로 품질 및 속도 향상
🌐 기대 효과
- 빠르고 안정적인 서비스 제공
- 리소스 효율적 사용
- 장애 발생 시 빠른 복구
🛠️ 마이크로 서비스 아키텍처(MSA): 유연하고 확장 가능한 서비스
마이크로 서비스 아키텍처(MSA)는 하나의 애플리케이션을 독립적으로 운영 가능한 작은 서비스들로 나누어 개발하는 방식입니다.
🔍 구성 요소
- Inner Architecture: 비즈니스 로직 중심의 핵심 서비스 개발
- Outer Architecture: 서비스를 지원하는 운영 및 인프라 환경 구축
🐳 Docker와 컨테이너화
- Docker는 컨테이너 기반 가상화 기술로, 효율적인 개발과 배포 환경을 제공합니다.
- Dockerfile을 활용해 이미지를 생성하고, 컨테이너 레지스트리에 저장하여 손쉽게 배포합니다.
✅ 장점
- 독립적인 서비스 배포 및 확장성
- 빠른 배포와 리소스 효율성
- 다양한 환경에서 일관성 유지
🔄 DevOps 문화: 개발과 운영의 통합
DevOps는 개발(Development)과 운영(Operation)을 유기적으로 연결하여 소프트웨어의 품질과 배포 속도를 개선하는 문화입니다.
🔑 DevOps 핵심 도구
- 기획 및 개발: Git, SVN, Jira
- 빌드: Maven, Gradle
- 테스트: Selenium, JUnit
- 통합: Jenkins
- 배포 및 운영: Docker, Ansible, Terraform
- 모니터링: Nagios, Fluentd
🔄 DevOps 사이클
Plan → Develop → Build → Test → Deploy → Operate → Monitor → Plan
🎯 기대 효과
- 빠른 피드백과 자동화된 배포
- 안정적인 서비스 운영
- 지속적인 개선과 최적화
✨ 마무리
프로젝트의 성격에 따라 Waterfall과 Agile 방법론을 적절히 선택하고, 클라우드 네이티브와 DevOps 문화를 접목시킨다면 빠르고 안정적인 서비스 제공이 가능합니다. 최신 기술과 개발 문화를 적극적으로 도입하여 더욱 혁신적인 서비스를 만들기 위해서 더 많은 공부를 해야겠다 ㅠ
'[Study] BE > Server' 카테고리의 다른 글
클라우드 네이티브 CI/CD: 자동화된 배포의 핵심 전략 (1) | 2025.01.15 |
---|---|
[포스코x코딩온] 데이터베이스 (0) | 2023.04.06 |
[포스코 x 코딩온] 서버 구축 (0) | 2023.03.27 |