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
'JAVA > 프로젝트' 카테고리의 다른 글
배포 자동화 - jenkins를 통해 만든 .jar 파일 운영 환경 서버에 배포하기 (0) | 2024.11.26 |
---|---|
배포 자동화 - jenkins, ngrok, Webhooks (0) | 2024.11.26 |
스프링부트 Slack 알림 연동 (0) | 2024.11.25 |
알림 기능 개발, AWS SNS 연동 (0) | 2024.11.21 |
성능테스트 - 리팩토링 (0) | 2024.11.21 |