STS의 스프링부트 대시보드: 1부 - 로컬 부트앱

스프링 커뮤니티 유저 여러분.

이 글은 STS에 추가된 스프링부트 대시보드에 관한 소식을 전하기 위한 세 개의 글 중에서 처음으로 작성된 글이다. IDE에서 스프링부트 대시보드를 어떻게 사용하는지를 살펴보고, 그것이 제공하는 다양한 기능들, 스프링부트 기반의 애플리케이션을 개발할 때,을 어떻게 사용할지를 배운다. 스프링부트 대시보드는 얼마전 출시된 STS 3.7.1에서 소개되었으며, 이 연재 블로그를 따라하기 위해서는 해당버전 이상을 필요하다. 만약 설치하지 않았다면,http://spring.io/tools/ 으로 가셔서 내려받아 설치하기 바란다.

1. 소개

현재 스프링부트는 엔터프라이즈 환경을 위한 애플리케이션 구현을 간단하게 해주는 범용적인 기술이 되었다. 마이크로서비스 기반 애플리케이션을 만들어내는데 적합하며, 스프링 애플리케이션 설정을 쉽고 작게 생각하도록 극적인 변화를 이끌었다. 진정으로 클라우드 친화적인 애플리케이션으로 문을 열고 스프링 클라우드와 더불어 아마 많은 마이크로서비스로 구성될 것이다.

이 극적인 이동은 아키텍처에 대한 우리의 생각들이 IDE에도 반영되길 원하게 되었다. 전통적인 자바 통합개발도구IDE 대부분이 클라우드 친화적인 혹은, 클라우드 이전 그리고 분산 프로그래밍 시대 이전에 만들어졌다. 이는 이클립스 IDE가 그러하고 그것을 기반으로 하는 Spring Tool Suite(STS) 또한 그러하다. 이 IDE들은 클라우드 친화적인 시대에 들어섰다. 이는 스프링부트 대시보드의 시작점이 되었다. 스프링부트 대시보드는 수많은 스프링부트 기반의 마이크로서비스 애플리케이션을 관리하고 IDE 내 프로젝트들을 동작시키는 개발자들의 삶을 윤택하게 만들기 위해 만들어졌다.

2. 스프링부트 대시보드

작게 점진적으로 시작하자면, 스프링부트 대시보드는 STS/Eclipse의 추가적인 뷰로 구성됬다. 기본 툴바의 스프링부트 버튼을 누르면 열어볼 수 있다. 간단한 뷰가 열리고 작업공간의 (스프링부로 구성된)프로젝트들이 동기화되며 나타난다.

01-dashboard.png

스프링부트 대시보드의 주요목적은 매일, 매시간, 매번 빈번하게 살펴보는 것들에 대해서 빠르게 접근할 수 있도록 하는데 있다. 대시보드에 있는 부트앱을 선택하고 툴바에서"run" 혹은 "debug"를 눌러 빠르게 시작할 있다. 부트앱을 실행할 수 있는 이보다 빠른 방법이 있을까? 이미 실행중인 앱의 코드가 변경되어 재시작하고 싶다면 그렇게 하면 된다. 코드가 변경되었을 때, 대시보드의 "run" 버튼을 눌러, 앱을 정지 또는 재시작시킬 수 있다. 다시말하지만, 한번 클릭으로 간단하게 할 수 있게 되었다.

02-start-single.png

부트 대시보드의 이런 동작들은 단일 혹은 다중 프로젝트에서도 동일하게 수행된다. 만약 동시에 다수의 부트 앱, 협업을 위해 필요한 서비스의 묶음,을 시작하거나 정지하길 원한다면, 대시보드에서 그것들을 모두 선택하고 "run"을 누르면 된다. 그것만 하면 된다.

03-start-multiple.png

프로젝트들을 스프링부트 1.3 적용하면, 부트 대시보드는 보다 환상적인 것들을 보여줄 것이다. 부트 앱이 구동되고 나면, 부트 대시보드에는 앱이 시동 단계(VM은 실행중이지만, 앱은 아직 초기화중)와 다른 시각적 표현이 나타나며 이는 실행 중인지 완료된 것인지를 명확하게 알려준다. 진행중 아이콘은 앱이 시동주이라는 것을 표시하고, 녹색 "업up" 아이콘은 앱의 초기화 및 실행이 완료되었다는 것을 알려준다. 로그 출력으로 "server started" 메시지가 출력되길 기다리며 살펴보는 등의 행동을 할 필요가 없다. 부트 대시보드 아이콘들을 살펴보자.

04-starting.png

앱이 실행되면, 대시보드에는 사용자의 편의를 위해 동작중인 앱이 사용하는 포트가 표시된다. 앱이 사용하고 있는 포트가 몇번인지 찾기 위해서 로그 출력물을 탐색할 필요가 없다. 대시보드에 그 정보가 자동적으로 표시된다. 그리고 실행중인 부트앱의 콘솔로 빠르게 이동이 가능하며, 그 동작은 매우 신속하고 간단하다.

더이상 실행중인 앱에 바로 브라우저로 접근하기 위해 실행중인 앱의 포트를 알고 있을 필요가 없어졌다. 부트 대시보드에서 프로젝트를 더블클릭하기만 해도 새로운 브라우저가 앱에 기본설정된 URL로 접근할 것이다.

05-browser.png

기본적으로 Eclipse/STS는 내부 인터넷 브라우저 뷰를 사용한다. 만약 외부 인터넷을 사용하려 한다면 설정에서 지정해야 한다.

기본으로 접근해야할 기본 URL이 지정되어있지 않다면, 그것을 사용자설정할 수 있다. 대시보드에서 프로젝트를 선택하고 속성뷰를 열어 URL 경로를 Path에 입력한다. 앱을 더블클릭하면 사용자설정한 URL로 열리는 것을 확인할 수 있을 것이다.

06-path.png

애플리케이션에 정의된 URL 확장이 명확하지 않다면, 속성뷰 창에서 "Request Mapping"을 선택할 수 있다. 실행중인 앱의 모든 리퀘스트 매핑 목록 - 여러분이 정의한 것들은 상단에, 라이브러리들에 의해 생성된 것들은 하단에 위치한다. 리퀘스트 매핑 목록에서 URL 부분을 클릭하면 해당 URL을 브라우저에서 열고, 코드 부분을 클릭하면 해당 프로젝트의 코드 편집기를 통해 해당 코드를 연다.

07-request-mappings.png


역자주

"org.springframework.boot:spring-boot-starter-actuator"를 추가해줘야 /mappingsAPI를 이용해서 앱의 Request Mapping 목록을 조회할 수 있다.

작업공간에서 보다 많은 마이크로서비스를 가지고 있다면, 그것들 모두가 동시에 동작하지 않을 가능성이 있다. 그렇다면 묶음설정을 좋아할 것이다. 예를 들자면 Eclipse/STS에서, 작업 묶음을 만드는 것과 같다. 부트 대시보드는 프로젝트에 임의의 갯수로 태그를 선언하여 태그하는 것을 허용한다(다시 속성 뷰를 보자). 태그는 필터 박스(부트 대시보드 상단에 위치)를 이용해서 부트 대시보드에 보이는 부트 앱을 줄이는데 사용할 수 있다.

08-filter.png


역자주
속성창에서 Tags 항목에 입력이 가능하다. ㅡ_-)

화면으로는 명확하게 안보여.

3. 견해

연재 두번째 글에서는 부트 대시보드의 클라우드 파운더리Cloud Foundry 통합을 소개하면서, 부트 대시보드로부터 CF로 마이크로서비스를 어떻게 배포하는지, 로컬 부트 앱을 사용하여 CF에 배포하는 조합 사용법을 소개하겠다.


+ Recent posts