오랜만에 사고 치고 하루를 날리다.

리거시가 구닥다리 Java 로 깃랩을 쓰고 있고 ci,cd 로 젠킨스를 쓰고 있어서 많이 불편한 걸 알지만 젠킨스로 내부 네트웍내 CI/CD 체계운영을 해왔다. (심지어 예전엔 사무실 pc로 소스관리로 해서 실제 날려먹은 소스도 있었다. ) 그래서 가장 시간이 적게 드는 방식 GitHub 이관, 젠킨스는 클라우드 vpc bastion 겸용으로 알뜰하게 구축 사용중이었다.

그치만 Java 버전은 내가 이 회사 조인하고 그나마 java8 로 운영 환경을 업그레이드하고 정말 크리티컬 버그 보안패치가 아니면 올릴 엄두를 못내고 있었더랬다.

그런데 젠킨스 플러그인 하나 업데이트 하려다가 젠킨스에서 구형 메이븐 프로젝트가 다 깨진거다. 도커로도 안해 두고 뭐에 씌였는지 그 플러그인이 이 일파만파를 일으키리라 예상을 못해서 백업도 없고, 거의 하루를 꼬박 날려먹었다. 그까짓거 war 만 롤백하면 되겠지 자신해서 그것만 받아뒀는데, 플러그인은 뭐 당최 과거버전은 넘나 복잡하게 얽혀 있었고 디펜던시가 장난이 아닌거다.

결국 젠킨스가 그간 지원 안한다고 협박하던 Java 버전도 올리고 jdk, maven, 심지어 젠킨스 버전도 올려버렸다.

당연히 구형 디펜던시 범벅인 프로젝트들은 돌리면서 컴파일러 레벨 충돌 확인, pom.xml 과 코드레벨에서 java8, java17 에 둘다 호환되도록 튜닝도 진행.

일단 젠킨스는 확실히 빨라졌고, 운영쪽도 단계적으로 jre 버전을 올리긴 해야겠다고 결심. 얼마전 우리 백엔드 개발자들이 java17 갈아타기를 발제했었는데 ci/cd 환경에서 최초 사용을 하게 되다니....


오늘의 교훈.

  • CI, CD 툴은 업그레이드할 때 백업을 받아둬야! 플러그인은 업글하니 리스타트 없이 다이나믹 로딩되는 플러그인도 많더라.

  • 자바 프로젝트들 어서 spring boot, gradle 등으로 이관해야지. 신규 프로젝트들은 바로 복구가 됐었더랬다. 메이븐 넘나 싫어라. 뭐 이리 디펜던시가 플러그인이라는 이름으로 많은 건지

  • 도커 기반, aws나 gcp ci/cd로 야금야금 옮겨놔야겠다. 리거시는 야금야금 빼서 새틀 담기를 이젠 시작해야겠다.

얼마전 지인이 Java 안하는 곳에 갔다고 좋아하던데 나도 내 창업회사에서 주로 쓰던 언어나 기술스택이 그립긴 하지만 Java 도 이렇게 야금야금 선진화해가면 나아지겠지. 그리고 우리 무럭무럭 성장중인 백엔드 개발팀들 보면 또 고무적이고!


다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 3월 28일 오전 5:18

댓글 2