일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RDB
- API
- JPA
- DB 설계
- 스트리밍서버
- 서버구축
- db 스키마
- AWS
- mariaDB
- 이커머스 api
- 라이브커머스
- autowired
- 멀티쓰레드
- 미디어서버
- restful
- 스프링
- api설계
- 이커머스
- Spring
- 실검
- 네이버
- wooza
- 인턴생활
- SpringBoot
- REST API
- @async
- Gradle
- async
- 자바
- cmi
- Today
- Total
Polymor!
내가 너무 일하기가 싫어서 ... 젠킨스 (1) 본문
마지막으로 글을 쓴지 1년이 되었다.
지난 해 3월을 끝으로 다시 글을 쓰게 된건 조금 부끄러운 일이다.
그동안 글을 못쓴 이유와 다시 쓰는 이유는,
1. 회사에 취업했다.
2. 회사의 인터넷망은 웃기게도 티스토리 24시간 차단이다.
3. 이 회사는 놀랍도록 레거시하게 서비스를 운영한다.
4. 그래서 불만이 많은 사람들은 아름다운 CI/CD를 구축하고자한다.
5. 그 대표적인 젠킨스를 어느정도 공부했고, 현재 이 툴을 사용하고 있고 이제 이걸 정리할 시간이 된 것같다.
이 자만한 표정의 아저씨가 젠킨스다. 그리고 저 고래는 Docker..
솔직히 말해서 젠킨스 별거 없다 생각했다. 한 2주면 다 하지않겠어? 라고 생각했지만 그건 내가 자만했던것..
어떠한 테크를 현업에 도입할 때엔 아래와 같은 순서가 필요하다.
1. 현 업무 중 사람이 하지 않아도 되는일과 사람이 꼭 해야하는 일 구분 하기.
2. 사람이 하지 않아도 되는 일을 대신 하게될 적당한 툴 찾기/만들기 (여기서 나는 젠킨스를 채택)
3. 구체적으로 업무 흐름도에 맞게 설계하기
- git commit 되면 개발팀이 운영팀에게 구두로 전달 ====> git polling 커밋 시점 인지 [젠킨스가 해줌]
- git 에서 local pc 로 다운로드 받기 ====> git clone해서 jenkins서버로 가져옴 [젠킨스가해줌]
- stage 서버에 반영사항 배포 하고 테스트 ====> 개발자가 작성한 shell 실행하여 배포 자동화 [젠킨스가 해줌]
- 이전 버전의 백업 파일 local pc에 보관(규칙따윈없음) ====> 날짜에 맞게 파일 백업 및 관리해줌 [젠킨스가 해줌]
- 실서버에 반영사항을 서버에 배포하기 ====> 개발자가 작성한 shell 실행하여 배포 자동화 [젠킨스가 해줌, 실수없이!]
- 배포 후 테스트 진행 ====> test 시나리오 job 으로 테스트 진행 및 결과 로깅 [젠킨스가 해줌]
- rollback 을 해야할 때 직접 백업 파일 옮겨다 재배포 ====> rollback 시나리오 job으로 자동 재 배포 [젠킨스가 해줌]
4. 젠킨스를 설치한다.
5. 필요한 플러그인을 다운로드 받는다.
6. 젠킨스 서버와 당사 서버들 간 방화벽 설정을 한다. (인프라팀 요청)
7. 스테이지 서버를 타켓 서버로 설정하고 3의 과정의 flow를 구현해낸다.
8. 테스트를 거듭하고 실제 사용을 하며 안정화 및 고도화 작업 한다.
9. 팀장님께 결과를 보여드린다.
10. 실서버에 젠킨스를 도입하여 프로세스를 전환한다.
11. 모니터링 툴, 로그 툴, 그리고 도커까지 계속하여 고도화 작업을 진행한다.
끝 ! 그럼 이제 젠킨스 빌드 버튼을 누르면 알아서 내가 1시간 넘게 해야 했던 일들을 2~3초만에 해준다.
rollback이 더이상 두렵지도않다. 사람보다 소프트웨어가 정확하고 신속하니까.
다시한번 말하지만 정말 일이 하기가 싫어서 젠킨스를 구축한거다.
'Infrastructure' 카테고리의 다른 글
[네트워크] 스위치와 라우터 (0) | 2020.12.08 |
---|