스프링부트를 공부하면서 알게 된 부분을 정리하는 목적으로 작성된 문서이다.

Spring Boot 이야기

1. 스프링부트 시작하기

1.1. 스프링부트 소개

Spring Boot Reference Guide 문서에 잘 설명이 되어 있지만 개략적으로 내가 본 스프링부트를 소개하고자 한다.

스프링부트는 단독실행,웹 환경의 스프링베이스의 어플리케이션을 쉽게 만들 수 있게 해주는 녀석이다.
서블릿 컨테이너를 포함하고 있어 제작된 코드를 웹 환경에 배포하지 않고도 실행이 가능하다.
그리고 Auto Configuration 기능을 가지고 있어 대부분의 스프링부트 어플리케이션 개발시 아주 작은 설정으로도 개발이 가능하다.

1.2. 스프링부트 어플리케이션 코드

스프링부트 어플리케이션을 WAR 형태로 배포하고 싶으면, 메인코드를 아래와 같이 작성을 해야 한다.

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args){
        SpringApplicationBuilder springApplicationBuilder = new SpringApplicationBuilder(Application.class);

        SpringApplication springApplication = springApplicationBuilder.build();
        springApplication.run(args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}

1.3. 스프링부트 어플리케이션 실행

실행방법은 여러가지가 있는데, java io…..Application 으로 실행이 가능하며,
maven 의 spring-boot 플러그인을 사용하는 방법이 존재한다. 또한 JAR 또는 WAR형태로 패키징하여
java -jar TAGETFILE 방법으로도 실행이 가능하다.

아래 그림은 war 형태로 패키징 후 콘솔에서 실행한 화면의 일부분이다.

spring run.png

2. 스프링부트 Actuator 와 Remote Shell

Actuator 와 remote shell 은 스프링부트가 제공하는 핵심 Feature 이다.
Actuator는 HTTP를 이용하여, 어플리케이션의 모니터링 및 관리 기능을 제공을 한다. Remote Shell은 SSH를 지원을 한다.

아래는 이 두가지를 이용하기 위해 POM.xml 파일의 dependency를 추가한 부분이다.

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

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

2.1 Remote Shell

Remote Shell 관련하여, 아무런 설정을 하지 않았다면, 실행 로그 중간에 아래와 같이 비밀번호가 랜덤하게 생긴다.(ssh 기본 유저는 ‘user’이다.)

Using default password for shell access: 460ff426-ccc1-412f-bc8c-59db3e437052

이 부분은 remote shell 관련 프로퍼티값을 이용하여 커스텀 가능하다.

shell.auth.simple.user.name
shell.auth.simple.user.password

2.1.1. Remote Shell 접속 화면

SSH로 접속을 하면 help 명령어를 통해 제공하는 명령어 목록을 볼 수가 있다. 기본적으로 아래 그림과 같이 스프링부트는 제공을 한다.
여기에 더 필요한 기능이 있으면, 해당 명령어를 직접 제작 할 수도 있다.
REMOTE SHELL 01.png

2.1.2. DASHBOARD 실행한 화면

아래 그림과 같이 어플리케이션의 여러가지 정보들을 실시간으로 보여준다.
REMOTE SHELL DASHBOARD.png

2.2. Actuator

앞서 언급했지만 Actuator는 HTTP를 이용하여, 어플리케이션의 모니터링 및 관리를 지원을 한다.
아래 그림은 Actuator가 지원하는 기능들에 해당하는 Endpoints이다.
actuator endpoints.png


마무리
스프링부트의 Actuator 의 기능하나만으로도 제품에 스프링부트를 적용할만한 충분한 가치가 있다고 생각한다.
이 문서로 스프링부트에 대해 다 알지 못하겠지만, 스프링부트의 대한 나의 생각과 느낀점은 참 매력있는 녀석이다.
맛보기 형식으로 정리를 했지만, 다음에는 스프링부트에 security 및 테스트 코드를 적용한 샘플을 제작할 예정이다.

참고
스프링부트 레퍼런스 가이드 : Spring Boot Reference Guide
Github Souce Code : https://github.com/nomimic/spring-boot-sample

블로그 이미지

Nomimic

기억되고 싶고, 기억하고 싶다.

,