JAVA/프로젝트

배포 자동화 - 이론. CICD, Gradle, Jenkins

whyHbr 2024. 11. 25. 17:46
728x90
반응형

배포란

개발된 어플리케이션을 실제 서버나 클라우드 환경과 같은 운영 환경에 설치하고 실행하는 과정이다.

  • 빌드
  • 환경 설정
  • 데이터베이스 마이그레이션
  • 서버 실행
  • 로깅 및 모니터링 설정
  • 보안 강화
  • 성능 최적화
  • 모니터링 및 로깅
  • 스케일 아웃
  • 백업 및 복구 계획
  • CICD 파이프라인 설정

 

CICD: 지속적 통합 Continuous Intergration, 지속적 배포Continuous Deployment 

소프트웨어 개발 및 배포 프로세스를 자동화하고 지속적으로 품질을 유지하며 빠르게 새로운 기능을 배포하는 방법을 나타낸다. 

 

CI 프로세스

  • 코드 작성
  • 자동 빌드
  • 자동 테스트
  • 자동화된 통합

CD 프로세스

  • CI를 통한 자동화
  • 자동 배포 준비
  • 수동 승인
  • 환경 구성 관리
  • 롤백 기능
  • 자동 배포

CICD 의 이점

  • 빠른 피드백
  • 자동화된 빌드 및 테스트
  • 안정적인 배포
  • 품질 향상
  • 높은 효율

Gradle

JVM  기반 프로젝트를 빌드하고 관리하기 위한 오픈 소스 빌드 자동화 도구이다.

  • 플러그인 시스템: Gradle은 다양한 플러그인을 제공하며 이를 통해 다양한 프로젝트 유형을 지원한다.
  • 의존성 관리
  • 멀티 프로젝트 빌드: 여러 프로젝트를 하나의 빌드로 관리할 수 있다.
  • 빌드 캐시: 빌드 시간을 최적화 하기 위해 gradle은 이전 빌드에서 생성된 산출물을 캐시하고 빌드 시간을 단축시킨다.
  • 유연한 테스크: Gradle은 테스크 단위로 작업을 정의하며 이를 활용해 사용자 정의 빌드 프로세스를 만들 수 있다.

Gradle 라이프 사이클

gradle 라이프 사이클은 빌드 프로세스에서 특정 단계에 특정 작업들이 실행되도록 하는 일련의 규칙이다. 

  • Initialization 초기화: 빌드 스크립트와 프로젝트 객체가 초기화된다. settings.gradle 파일과 프로젝트 구성이 로드되고 프로젝트 계층 구조가 설정된다.
  • Configuration 구성: 각 프로젝트에 대한 설정이 구성된다. 빌드 스크립트에서 정의된 모든 프로젝트와 작업이 파싱되고 구성된다. 
  • Execution 실행: 빌드 스크립트에서 정의한 작업들이 실행된다. 사용자가 명시적으로 실행한 빌드 작업들이 수행된다. 

Jenkins

오픈 소스 지속적 통합 (CI) 지속적 배포 (CD) 도구이다.

젠킨스는 소프트웨어 개발 및 배포 프로세스를 자동화하고 개선하기 위해 사용되며, 개발자 및 팀이 소프트웨어의 품질과 안정성을 관리할수 있게 도와준다.

  • 지속적 통합 CI
  • 자동화된 빌드
  • 자동화된 테스트
  • 지속적 배포 CD
  • 플러그인 생태계
  • 스케줄링과 모니터링

젠킨스에서 배포 작업을 트리거 하면 자동으로 운영환경, 서버에 실행 가능한 파일을 옮긴다.


구현할 배포 아키텍쳐:

코드리뷰 -> 브랜치에 push -> 젠킨스 빌드 -> 프로덕션 환경의 EC2에 자동배포 -> 프론트에서 요청받은 정보를 MySql, redis에서 조회, 응답.

 

CI 까지만 구현 (CD는 비용 문제로.. )

728x90