Spring?! Spring Boot?

SionBackEnd·2022년 8월 13일
0

Spring(봄)

목록 보기
3/22
post-thumbnail

Spring의 역사

Java/Kotlin 기반의 웹 프레임워크.[1][2] 로드 존슨(Rod Johnson)이 2002년에 출판한 저서 Expert One-on-One J2EE Design and Development에서 선보인 소스 코드를 시작으로 점점 발전하게 되었다. 2003년 6월에 최초로 공개되었다. 2020년 12월 기준 최신 버전은 5.3.2. 스프링 프레임워크 프로젝트를 간편하게 설정할 수 있도록 도와주는 서브 프로젝트 스프링 부트가 있으며, 현재는 스프링 부트 위주로 기능이 추가되고 있다.

'스프링'이라는 이름의 유래는 이전에 Java EE(엔터프라이즈 에디션)의 스펙을 구현한 EJB가 기술의 복잡도가 증가해서 성능이 느렸던 것을 탈피하여, EJB 시절을 “겨울”에 빗대어 겨울 후의 “봄”으로 새로운 시작한다는 것을 의미하는 스프링(봄)이 되었다. 그러나 아직 춥다 Java Virtual Machine에서 작동하며, 아파치 라이선스 2.0을 따르는 오픈 소스 프레임워크이다.

Spring에서 Spring Boot가 나오기까지 몇가지 다른 버전들이 있었다.

  1. JSP를 이용한 애플리케이션
    JSP 개발 방식은 사용자에게 보여지는 View 페이지쪽 코드와 사용자의 요청을 처리하는 서버쪽 코드가 섞여있는 형태의 개발 방식이다. HTML/CSS를 예를 들면 CSS파일을 따로 만들지 않고 HTML문서안에서 CSS코드까지 한번에 다 작성하는 꼴이다. 매우매우매우 유지보수, 가독성, 코드의 중복 등등 최악의 효율을 가진 버전이라고 볼수있다.

  2. 서블릿(Servlet)을 이용한 애플리케이션
    Servlet은 클라이언트 웹 요청 처리에 특화된 Java 클래스의 일종이라고 보면 되는데, Spring을 사용한 웹 요청을 처리할때에도 내부적으로는 Servlet을 사용한다라는 사실은 기억해두면 좋다.
    서블릿클래스를 이용하여 JSP보다는 편리해졌지만, 코드가 너무 길고 아직도 발전되어야할 부분들이 많이 남아있었다.

  3. Spring MVC를 이용한 애플리케이션
    서블릿 방식의 코드에서는 클라이언트의 요청에 담긴 데이터를 꺼내오는 작업을 개발자가 직접 코드로 작성 해야되고, 캐릭터셋도 지정 해주어야 하는데 반면에 Spring MVC 방식의 코드에서는 눈에 보이지 않지만 그런 작업들을 Spring에서 알아서 처리해준다. 정말 편리해졌다. 하지만 그래도 여전히 문제점이 하나 남아있었다.
    Spring 기반의 애플리케이션의 기본 구조를 잡는 설정 작업이 여전히 불편하다는 단점이 존재했다.

  4. Spring Boot를 이용한 애플리케이션
    그렇게 해서 나온게 Spring Boot의 탄생이다. MVC의 이점을 가져가면서 Spring의 복잡한 설정 작업마저도 Spring이 대신 처리를 해주기때문에 개발자는 애플리케이션의 핵심 비즈니스 로직에만 집중할 수 있게된다. 이것이 아주 간략하게 소개하는 Spring의 역사이다.

핵심 포인트

  • Spring Framework이 도입되기 전에는 JSP나 Servlet 기술을 사용한 Model1, Model2 아키텍쳐를 기반으로 한 Java 웹 애플리케이션을 제작하였다.
  • Spring MVC 방식이 도입됨으로써 Java 웹 애플리케이션의 제작 방식이 획기적으로 변하게 되었다.
  • Spring MVC 설정의 복잡함과 어려움을 극복하기 위해 Spring Boot이 탄생하게 되었다.

내가 이해한 Spring Boot의 핵심 컨셉

“Spring 구성은 Spring에게 맡겨버리고 비즈니스 로직에만 집중하자!”

하지만, 내가 이해한 Spring Boot의 핵심 컨셉은 완벽한 설계로 유지보수를 게으르게 할수있도록 만들자이다. 그동안의 Spring의 역사를 통해 보면 전부 귀찮고 번거로운것들을 수정,보완과정을 통해 Spring Boot까지 오게 되었다.
즉, 생산성과 유지보수 효율성을 대조시켜 모든것이 서로 연관되어있는듯한 느낌이 든다.

Spring Boot가 뭐야 라고 한다면 나는 이렇게 말할 것이다.
제어의 역전을 통해서 스프링이 객체를 관리하여 클라이언트에게 대신 정보를 전달해주고, 의존성 주입을 통해 스프링이 객체를 관리하기 쉽게 만든다. 아직 많이 배우지 않은 상태라 이정도로 이해했지만, ㅎㅎ 정확히 맞는지는 차후 교육을 통해서 확인해보아야겠다.

profile
많은 도움 얻어가시길 바랍니다!

0개의 댓글