자동화의 이슈를 제외하더라도, 우리가 개발한 Spring-Boot프레임웍이 어떻게 올바르게 빌드를 하고 배포되며 환경의 차이를 극복하고 올바르게 실행이되어야 하는 문제는 중요한 문제입니다. |
CentOS기준으로 살펴보겠습니다.
일반적으로 서버 어플리케이션 실행에 있어서, 구동된것을 멈추는 GraceFullyStop 과정이 더 중요하고 어려울수 있습니다. kill을 하거나 미들웨어 어플리케이션을 강제 종료하는것은 우리가 사용중인 컴퓨터의 전원을 off하는거와 마찮가지입니다. 키보드 인터럽트(ctrl+c) 예외 발생시 어플리케이션 자체가 정상 종료구조로 가는 방식이 되어야합니다. kill은 다음과 같은 문제를 야기를 합니다.
어플리케이션내에서 자기자신을 정리하고 내리는 과정이 오래걸리기때문에 빠르게 내리는 kill방식이 권장된다. 라고 접근하는것은 어플리케이션 내에 종료 디펜던시를 포함하여, 전체 디펜던시조차 파악이 안되 부분을 적용하기 위해 All kill , All Run이라는 아주 최악의 방식이 될수가 있습니다. |
etc/systemd/system/my-awesome-service
|
더자세한 정보 : https://www.freedesktop.org/software/systemd/man/systemd.service.html
Restarting the service.
Stopping the service.
This command can be issued to tell systemd to start the service at system boot.
|
서비스를 실행하였는데, 어떠한 이유에의해서 구동은 실패가 날수가 있습니다. 어플리케이션이 자체적으로 적는 log를 통해서도 문제파악이가능하지만
어플리케이션을 올리는 과정에서 문제가 없는지 살펴보려면 구동과정의 윗단계의 로깅이 필요합니다.
|
리눅스에서 마이크로 웹서비스를 구동/종료하기 위해 여러가지 아이디어및 구동 플랫폼이 존재합니다.