[Spring Boot] 스프링 부트 운영

Junseo Kim·2020년 3월 2일
1

스프링 부트 운영

스프링 부트는 actuator라는 모듈을 사용한다. 이것은 애플리케이션 운영 중에 유용한 정보를 제공해준다.

엔드포인트라는 것을 통하여 제공해준다.

Actuator 실습

web모듈을 추가하여 새로운 프로젝트를 만들어 준다.

동작환경만 보기 위해 따로 컨트롤러를 만들지는 않고, 메인에서 처리하겠다.

actuator 모듈을 사용하기 위해 의존성을 추가해준다.

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

actuator는 엔드포인트를 제공하는데, 인증 정보(누가 인증했고, 실패했고 등), 등록된 빈, 어떤 자동설정이 어떤 조건에 대해 적용되었는지, flyway, 최근 100개의 요청 등 여러가지 정보를 얻을 수 있다.(endpoint가 제공하는 여러 정보들: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-endpoints)

모듈을 추가한 채로 애플리케이션을 실행시키고, http://localhost:8080/actuator 로 접속한다.

hateoas(현재 리소스와 연관되어 있는 링크 정보를 만들어주는 것) 형식의 문서로 이루어져있다.

http를 사용할 경우 공개된 정보는 health와 info 두 가지 뿐이다.

기본적으로 shutdown 빼고는 다른 기능들은 모두 활성화 되어있다.

그렇지만 health와 info만 볼 수 있는 것은 활성화랑 공개여부를 따로 관리하기 때문이다.

endpoint 활성화 여부를 직접 조작하려면 application.properties에
management.endpoint.'필요한 기능'.enabled = true/false 로 할 수 있다.

공개여부는 management.endpoints.web.exposure.include = * 로 줄 수 있다.

어플리케이션을 공개여부를 주고, 실행해주면 여러 정보들이 나옴을 볼 수 있다.

그렇지만 보안문제가 있기때문에, 스프링 시큐리티를 사용하여 admin만 볼 수 있게 한다든지의 조치를 취해야한다.

JMX

JMX를 사용하여 endpoint 기능들을 살펴보겠다.

콘솔에서 jconsole을 입력한다.

그 후, 프로젝트를 선택하고 connect를 누른다.

프로젝트에 ssl을 추가하지 않았기 때문에 alert 창이 하나 뜨는데, Insecure connection을 클릭하면 된다.

Heap memory 사용량, thread 갯수, 로딩한 class 갯수 CPU 사용량 등을 보여준다.

MBeans에서 springboot의 여러 endpoint들을 확인 할 수 있다.

JMX로 정보들을 볼 수는 있지만, 보기에 매우 불편하다.

스프링 부트 Admin

스프링 진영에서 제공하는 것이 아니라, 제 3자가 제공하는 오픈소스이다.

Actuator 정보를 UI를 통해 보기 쉽게 제공하는 툴(애플리케이션)이다.

서버 프로젝트

서버 역할을 하는 프로젝트가 필요하므로, 웹 모듈을 추가하여 새로 프로젝트를 하나 생성해준다.

그리고 아래의 의존성을 추가해준다.

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.2.2</version>
        </dependency>

그리고 main 클래스에 @EnableAdminServer를 추가해준다.

그리고 실행시켜주면 server 설정은 끝이다(8080포트에서 돌아간다)

클라이언트 프로젝트

클라이언트(맨 처음 만들어줬던 프로젝트)에 아래의 의존성을 추가해준다.

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.2.2</version>
        </dependency>

그리고 application.properties에다 spring.boot.admin.client.url=http://localhost:8080 를 추가해준다. 클라이언트가 접속할 admin 서버의 주소를 뜻한다.

그리고 서버가 8080을 쓰고 있기 때문에, 18080으로 바꿔준다.

실행시켜주면 된다.

실행결과

http://localhost:8080/ (서버)로 접속하면 admin이 보여짐을 볼 수 있다.

애플리케이션의 세부 정보가 보기 편하게 나타난다.

admin을 사용하더라도, 꼭 스프링 시큐리티를 사용하여 보안에 신경써줘야한다.

0개의 댓글