[Spring] 스프링 부트(Spring Boot)란?

    스프링부트도 스프링(spring)이다

    스프링부트(Spring Boot)를 모르고 스프링을 잘만 쓰고 있는 사람한테 갑자기 요즘 트렌드가 스프링부트(Spring Boot)래.. 라고 말한다면 받아들이는 사람들이 어떨까? 스프링부트가 왜 나왔는지 모르고 스프링부트가 트렌드라고 하면서 생각없이 사용하는 사람들이 많은데 사실 둘간의 큰 차이는 없다.

     

    spring 과 spring boot

     

    스프링부트는 스프링이 어려워서 나온 쉽게 생각하면 윈도우에서 프로그램을 쉽게 설치해주는 Installer라고 이해하면 된다. 10년 넘게 스프링 하나만 판 사람은 눈감고도 스프링을 세팅하고 온갖 라이브러리에 통달하여 무슨 버전은 어떤 문제가 있는지 그리고 어떤 라이브러리끼리 호환이 좋은지 이미 머릿속에 통계가 자리 잡혀 있다.

     

    그러나 스프링을 배운적이 없는 사람들이 많고 요즘 트렌드 자체가 Git에서 수많은 오픈소스를 받아다가 쓰며 Java + Spring을 위협하는 Python 진형이 무섭게 따라오고 있어, 한때 위협하는 수많은 언어 혹은 프레임워크들이 도전장을 냈지만 모두 물리친 이 강력한 언어는 DevOps의 트렌드에 맞게 변화했어야 했고 그로 인해 나온게 스프링 부트이다.

     

    스프링부트는 스프링의 Best Practice라고 이해해도 될 것 같다. 예를 들어

    Web으로 개발을 할 때에는 이런 라이브러리를 쓰는 것들이 좋고 이렇게 세팅하는 것들이 좋아
     

    라는 예시들을 알려주는 고마운 존재라고나 할까? 그러다보니 사실 오래된 스프링 개발자들은 오히려 스프링부트가 더 힘들다. 개발을 오래한 사람들은 이미 자신만의 개발 방식이 있고, 수백번의 세팅을 해봤기에 문제가 안되며 자신만의 코드 예제들이 있기 때문이다. 즉, 문제가 발생한다면 예전 내 코드 기록들을 뒤져보면 모두 해결이 되기 때문에 스프링부트의 사용법을 배우는 시간이 더 불편하다.

     

    그래서 오래된 개발자 일수록 스프링부트는 힘들 수 있다. 아니 정확히 왜 배워야 하는지 모를 것이다. 하지만 배우지도 않고 스프링부트를 왜 배우는거야 욕하는 사람보다는 배워놓고 다시 스프링에 돌아가든 하는게 맞을것이다. 그러고 시대가 바뀌면서 Java 개발자도 Python을 해야 하고 Spring 개발자도 Spring Boot 모두 할 줄 알아야 유지보수 및 수많은 소스들을 내 것으로 만들 수 있기에(요즘에는 스프링 예시도 죄다 스프링부트다) 배워 놓는 것이 좋을 것이다.

     

     

    스프링부트의 특징

    마이크로서비스

    요즘 트렌드는 마이크로서비스가 대세이다. 이제는 개발 DB로 잘 붙지도 않고 개발 DB를 중간에 Rest로 감싸서 웹으로 호출하게 만든 경우도 많고, 검색엔진 같은 경우도 성능이 많이 개선되어서 소켓으로 직접 붙어서 데이터를 가져오는 방식이 아니라 http로 가져오는 경우가 많다.

     

     

    마이크로서비스가 계속 발전할수록 수많은 컴포넌트(Component)를 개발해야 하고, 거대한 프로젝트가 아니라 작은 프로젝트로 쪼개서 런칭을 한다. 그렇기에 수많은 개발자들이 다 런칭 작업을 할 줄 알아야 하며, 개발에 별 문제가 없이 해야 하고 내가 무엇으로 개발을 하든 남들은 큰 관심이 없는 시대에 도래했다.

     

    Rest로 주고 받는 자바 개발자들은 이런 상황에서 무거운 기존의 스프링 프레임워크에서 좀 더 가벼운 환경을 원하며 스프링부트는 그 욕구를 채워주고 수많은 라이브러리를 제공해준다.

     

    내장 서버

    스프링부트는 외부 웹서버등에 런칭하지 않고, 톰캣같은 내장 웹서버(Tomcat이나 jetty 같은)가 존재해서 쉽게 빌드 배포할 수 있다. 스프링을 쓰는 개발자들은 오로지 개발에만 집중할 수 있으며 그외 것들은 몇번의 설정만으로 쉽게 끝이난다.

     

    빌드 구성

    빌드 구성을 단순화하기 위해서 독자적인 스타터(Starter) 디펜던시(Dependencies)를 제공한다. 스프링은 빌드를 위해서 메이븐(Maven) 보다는 그레이들(Gradle)을 주로 사용하며 스프링 라이브러리와 서드 파트 라이브러리를 위한 자동설정을 지원한다. 

     

    어노테이션(Annotation)

    스프링 자체가 원래 어노테이션이 많지만, 기본적으로 모든 빈(Bean) 설정을 XML이 아닌 어노테이션(annotation) 방식으로 처리한다.

     

    반응형

    댓글

    Designed by JB FACTORY