Information Security Study
240226 젠킨스(스트레스 테스트용 스프링 어플리케이션 jar 배포 연습, 무중단배포 연습) 본문
※ 빌드를 하는 이유
1) 배포 시 소스코드를 납품한다면 당연히 인텔리제이에서 실행이 되고 작동이 되겠지만 인텔리제이는 기본적으로 메모리를 많이 차지한다.
=> 인텔리제이를 얹는 것이 굉장히 부담이 된다.
2) 또한 소스코드를 제공한다는 것은 요식업 운영 시 레시피를 공개하는 것과 상동하기 때문에 빌드를 해서 소스코드를 감춰야 한다.
3) 빌드를 하면 소스코드가 컴파일되어 기계어로 변환된다. 즉 빌드를 하면 돌릴 수 있는 상태가 된다.
스트레스 테스트용 스프링 어플리케이션 jar(war) 배포 해보기
윈도우 로컬에 폴더를 생성하고 git clone을 해온다.
그리고 빌드 명령어를 입력해 빌드를 수행한다.
빌드가 성공적으로 완료되었다면 build 폴더가 생기며 해당 폴더로 이동한 뒤 libs 폴더로 이동한다.
libs 폴더로 들어가 dir로 .jar 이름을 찾아 실행하면 배포가 완료된 것이다.
localhost:8080/hash 로 접속했을 때 해시값이 뜨면 성공이다.
위 프로세스를 젠킨스에 구축하기
단순 빌드 배포를 위해 아이템을 생성해 준다.
exec command에
윈도우에서 했던 것처럼
깃설치, 폴더 이동, 빌드 수행, 배포를 순서대로 진행하면 된다.
※ 빌드 시 콘솔 아웃풋에 아무것도 안뜨던 현상 해결
위 SSH Server에서 Advanced 옵션에서 Verbose ouput in console을 선택해주니 해결되었다.
그 전에 리눅스에 git을 설치해야 한다.
설치를 위해 셸 스크립트를 작성했다.
작성완료 후 chmod 744 installgit.sh로 실행할 수 있도록 권한을 변경한 후
./installgit.sh로 실행하면
git이 설치되고 정상적으로 설치가 완료되었다면 위와 같이 git의 버전이 뜰 것이다.
그리고 나서 젠킨스에서 저장 후 빌드를하면 워커 인스턴스에 suw_stresstest_example이 생긴 것을 확인할 수 있다.
클론까지 잘 되었고 빌드를 하려고 했으나 자바가 설치되어있지 않아 진행되지 않았다.
리눅스에 자바부터 설치해야 한다.
git을 설치했던 셸 스크립트를 열어 위와 같이 자바 설치 명령어를 입력한다.
실행하면 자바가 설치될 것이다.
설치가 잘 되었다면 버전이 출력될 것이다.
자바가 설치되었으니 빌드해 보면 스프링부트가 실행되는 것을 볼 수 있다.
worker 인스턴스에도 curl로 확인해 보면 timestamp가 출력되고 hash 페이지 접속 시 해시 값이 출력되는 것을 보아 배포가 잘 되었음을 알 수 있다.
브라우저에서 확인할 때는 인스턴스의 ip로 접속해야 한다.
localhost:8080으로 접속하면 젠킨스 워커의 인스턴스가 아닌 가상머신인 host로 접속이되기 때문이다.
젠킨스를 활용해 무중단배포 체험하기
위 방식이 중단배포인 이유
- 서버가 켜지는 중간에 서비스의 공백 시간이 존재한다.
- = 업데이트 후 다시 빌드할 때 사용자가 서비스를 이용하지 못하는 시간이 발생한다.
무중단배포를 하기 위해서는 서버 여러개를 가동하고 순차적으로 빌드를 바꾸면 되지만 이렇게만 하면 각 서버의 ip주소가 달라져 주소 여러개를 알아야 하고 어떤 것이 배포서버인지 확인하기도 어렵다.
이 문제를 해결하기 위해 사용자의 요청을 받아 그때그때 맞는 서버로 보내주는 분배서버를 하나 두고
분배서버가 빌드중인 서버를 걸러주는 방식으로 배포를 하면 된다.
분배서버는 health check 기능이 있어 서버의 가동여부를 확인할 수 있다.
이렇게 분배서버를 사용하면 사용자는 각 서버의 주소를 알지 않아도 중단 없이 서비스를 사용할 수 있다.
또한 사용자는 분배서버를 통해서만 서비스를 이용할 수 있기 때문에 보안적인 측면에서도 우수하다.
무중단배포 - 롤링 배포 방식 실습
롤링 배포
: 일반적인 무중단배포 방식으로 점진적으로 배포버전을 바꾸는 방식이다.
'네트워크 캠퍼스 > Jenkins' 카테고리의 다른 글
240627 ec2 생성과 ssh 접속, 우분투에 도커 설치, 젠킨스 설치, 젠킨스 서버-ssh 연결 (0) | 2024.06.27 |
---|---|
240227 젠킨스(무중단배포와 로드밸런싱) (1) | 2024.02.27 |
240223 젠킨스(소개, 환경설정, ssh 설정, 배포 파이프라인 초기 구축, 젠킨스 호스트->워커 명령어 수행시키기) (1) | 2024.02.26 |