Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
Archives
- Today
- Total
기록
DevOps/CICD 본문
시작하면서
이전에 DevOps 교육을 들으면서, CICD 도구를 활용을 배웠다. 기존에는 CICD를 이론으로만 알고 있어서, 그게 왜 필요하고 도대체 어디에 써야 하는건지 이해하지 못했었는데, 교육을 들으면서 나름대로 CICD를 이렇게 쓰면 되겠구나~라고 생각을 정리하게 되었다. 그래서 배운걸 정리할 겸 이게 어떤 의미가 있고, 어떻게 활용할 수 있을지 적기 시작했다.
몇년 전에 해커톤에서 직접 서버를 구성하고 배포를 했었던 경험이 있다. 다음과 같은 프로세스를 통해 배포를 진행했다.
- 개발자가 수정한 소스 코드를 commit한다.
- 개발자가 가상서버에 접속하여 백업파일을 만든다.
- 개발자가 가상 서버에서 기존에 실행되고 있는 프로젝트를 중지시킨다.
- 개발자가 가상 서버에 접속하여 깃에 있는 프로젝트를 내려받는다.
- 개발자가 가상 서버에서 node 명령어로 프로젝트를 실행한다.
- 참고 : 기존프로젝트 구조
저 프로젝트를 하면서 매번 가상서버에 접속해서, 서버를 재시작하는게 매우 귀찮았었다.... 저 프로젝트는 nodeJS라 그나마 배포 과정이 수월했지만, 스프링을 썼었다면 프로젝트를 빌드하여 WAR파일을 만들고, 가상서버로 WAR 파일을 가지고 와서 압축을 해제하고 실행하는.. 긴 과정이 되었을 것이다.
CI/CD 도구
CI/CD 도구는 소프트웨어 개발 프로세스를 자동화하고 지속적인 통합, 배포를 가능하게 해주는 도구입니다. 대표적인 CI/CD 도구로는 Jenkins, GitLab CI/CD, CircleCI, Travis CI, Bamboo, Azure DevOps 등이 있습니다. 이 도구들은 빌드, 테스트, 배포 등의 작업을 자동화하고 개발자와 운영팀 간의 협업을 강화하여 소프트웨어 개발과 배포를 효율적으로 관리합니다.
- CHAT CPT 답변
CI/CD 도구를 사용하면 배포 자동화를 할 수 있는데, 배포과정의 번거로움을 줄일 수 있다는 장점이외에도 소스코드가 변경될때마다 빠른 주기로 배포가 가능하다는 장점이 있다.
젠킨스
Jenkins는 오픈 소스 CI/CD 도구중 하나이다. 교육에서 Jenkins의 활용 방법을 배우기도 했고, 무료 오픈소스라는 점에서 해당 도구를 활용해보고자 한다.
젠킨스를 사용하여 배포 자동화가 된다면, 다음과 같은 배포 시나리오를 예상할 수 있다.
- 개발자가 수정한 소스 코드를 commit한다.
- 특정 시점에 젠킨스가 최신 프로젝트를 가져와 빌드한다.
- 빌드에 성공하면 젠킨스가 가상서버에 프로젝트를 배포한다.
- 젠킨스 공식 사이트
마무리하면서
다음번 포스팅에서는 젠킨스에 깃과 가상서버를 연결하여 배포 자동화를 만들어 보려고 한다.
'DevOps' 카테고리의 다른 글
[issue] AWS-EC2: 연결성 검사에 실패했습니다, CPU 100% 점유 (0) | 2024.02.13 |
---|---|
DevOps/AWS EC2 jar 배포하기 (0) | 2023.11.20 |
Docker/spring boot에 MySQL 데이터베이스 연결하기 (0) | 2023.09.05 |
SpringBoot Azure window instance에 배포하기 (0) | 2023.07.31 |
docker/install docker, docker-compose (0) | 2023.07.18 |
Comments