CI, CD, Jenkins 와 ArgoCD...
CI(Continuous Integration)
소스 코드를 작성하고 수정할 때마다, 자동으로 빌드, 테스트, 배포 등의 과정을 거쳐 지속적으로 통합하는 것
이를 통해 개발자들은 작은 단위로 개발하고, 버그를 빨리 발견할 수 있으며, 코드 품질과 안정성 유지 가능
CD(Continuous Delivery/Deployment)
CI의 확장 개념으로, 지속적인 통합을 통해 빌드된 결과물을 지속적으로 배포하고, 배포 자동화와 관련된 기능을 포함
따라서, 소프트웨어의 릴리즈 주기가 빨라지고, 안정적인 릴리즈가 가능
Why Jenkins
- 오픈소스 기반의 무료 CI/CD 도구로, 대표적으로 사용되는 도구 중 하나
- 대부분의 언어, 프레임워크 및 툴들과 호환되어, 다양한 환경에서 사용 가능
- 원하는 언어와 프레임워크에 따른 빌드 및 배포 방법 설정 가능
- 높은 커뮤니티 지원을 받아, 다양한 플러그인 및 확장 기능들이 존재하고, 자체적인 API 제공으로 확장성이 좋음
- 1,000개 이상의 플러그인을 지원하여 CI 파이프라인의 빌드, 테스트 및 배포 단계에서 필요한 다양한 기능을 제공
- 필요한 플러그인만 사용할 수 있어 불필요한 리소스 감소
- 여러 버전이 제공되어 사용자 임의 설정이 가능
- 쉽고 간편한 UI와 다양한 설정 옵션들로, 팀 내에서의 사용성이 높아짐
- 다른 CI 도구와도 연동이 쉽고, 사용자 커스텀 효율적
- 웹 기반 UI 제공으로 눈으로 보며 파이프라인 구성 가능
- 무료 기능과 가격에 비해 효율적
Why ArgoCD
- 오픈소스 기반의 CD 도구로, Kubernetes 환경에서 사용 가능
- GitOps 방식을 지원하여, Git을 기반으로 모든 인프라 및 애플리케이션 구성을 관리하므로, 일관성과 안정성이 높아짐
- 코드 변경 사항을 Git 레포지토리에 커밋하여 배포 자동화하는 형태
- 실시간으로 클러스터 상태를 모니터링하여, 무중단 배포를 보장
- 사용하기 쉬운 UI와 다양한 API 제공으로, 사용성이 높음
- 대부분의 기능들이 무료로 제공되므로, 비용 효율적
Spring, Spring boot
Spring
프로그램을 만들기 위한 거의 대부분의 기능이 들어있는 프레임워크
Spring-boot
spring에서 제공하는 하나의 템플릿으로 자동 설정을 많이 해주어 코드 작성을 얼마하지 않아도 동작하게 만들 수 있음
Spring-legacy
에전에 사용하던 템플릿의 집합
DB
JPA(Hibernate)
데이터베이스 와 내부적으로 매핑해서 SQL 같은 코드 없이 제공되는 메서드만으로 데이터베이스 사용이 가능한 프레임워크
데이터베이스 별로 다른 동작을 코드 수정 없이 할 수 있도록 도와주는 프레임워크
MyBatis
SQL 과 Java 코드를 분리해서 유지보수를 쉽게 할 수 있도록 만든 JDBC 프레임워크
프레임워크 없이 JDBC
코드 작성은 복잡하나 프레임워크의 영향을 받지 않음