[Jenkins] DevOps와 CI/CD

seopppio·2024년 12월 1일

Jenkins

목록 보기
1/25
post-thumbnail

클라우드 네이티브 어플리케이션 구성 요소 중 하나인 CICD 자동화 파이프라인을 통해, 시스템 통합과 배포 작업을 어떻게 구축하는지 이해해보자

WaterFall, Agile

  • WaterFall
    프로젝트 각 단계가 뚜렷하게 나눠져 있다
    순차적인 프로젝트 관리 방법론
    각 단계는 이전 단계가 완료된 후에만 진행 가능

    한 번 완료된 단계는 폭포가 거꾸로 올라갈 수 없는 것처럼, 이전 단계로 돌아가기 어렵다. 고객의 니즈를 바로 반영하기 어렵다.

  • Agile
    아무 계획이 없는 개발 방법과, 지나친 계획이 있는 개발 방법 사이의 타협점

    에자일 선언문

변경 과정


DevOps, Microservices, container 가상화, cloud 라는 특징을 모아서 만든 것이 클라우드 네이티브 아키텍처이다

즉 클라우드 네이티브 아키텍처란, 클라우드 인프라 환경에서 운영되기 위한 어플리케이션/서비스를 최적의 상태로 유지하고 사용할 수 있도록 한 아키텍처이다

Cloud Native Application

마이크로 서비스 아키텍처(MSA)


이너 아키텍처 : 도메인에 대한 부분을 비즈니스 로직을 갖고 서비스 개발
아우터 아키텍처 : 이너 아키텍처로 구성된 어플리케이션이 운영되고 작동할 수 있도록 지원하주는 서포티드 시스템

Containerization

클라우드 네이티브 어플리케이션 구성 요소 중에서, 마이크로 서비스 어플리케이션으로 개발된 결과물은 컨테이너 기반의 가상화에서 실행된다

도커가 대표적인 컨테이너 툴
이미지를 통해 실체화된 컨테이너 가상화가 개발환경/테스트환경/운영환경 으로 구분되어 실행이 가능해서 마이크로 서비스와 같은 많은 서비스 개발 및 테스트 배포와 작업 환경을 진행하는데 최적의 조건 제시

DevOps

개발과 운영 조직을 단일화
고객의 요구사항에 신속하게 대응하기 위한, 개발 프로세스


개발 단계에서 계획부터 테스트까지 하면, 운영으로 넘어가서 실행 및, 모니터링하고 다시 돌아와서 계획부터 쭉 사이클이 돌아간다
여기서 , 시스템 통합을 할 때 Jenkins을 쓴다

쿠버티네스 -> 도커 효율적으로 스케쥴링

CI/CD

지속적인 통합과 지속적인 배포를 하는 프로세스

CI(Continuous Integration) : 작업된 코드의 컴파일, 테스트, 패키징 작업
CD(Continuous Delivery,Deployment) : 패키지된 결과물을 개발 서버, 테스트 서버, 운영 서버에 배포

CI

개발자사 소스코드를 SCM인 git에 Commit 한다
Jenkins가 SCM에 저장된 코드를 불러오고, 빌드-테스트-패키지 작업 처리

이후 유닛 테스트 완료된 것만 운영쪽에 넘겨서 배포하는데 기여한다

CI/CD Work Flow


Trerraform -> Iac(Infrastructure as code), 서버 인프라 스트럭쳐 관리를 코드로 관리 하겠다. 클라우드에서 사용되는 가상화 서버를 스크립트로 프로그래밍해서 관리할 수 있는 특징 존재
로컬에서 구축한 Iac(Ansible)를 클라우드 환경(Aws)으로 옮겨서 사용할 수도 있다

  • 최종 목표
    로컬 환경

    클라우드 환경

0개의 댓글