티스토리 뷰

반응형

2019/09/18 - [Programming/Java] - Spring Boot 을 언제 써야 할까? (0) 프롤로그

Spring Boot 가 어떤 형태인지 알아야 기존의 Spring 와 Spring Boot 가 어떤 차이점을 가지게 되는지 알 수 있을 것입니다. 이에 대해서는 제가 올린 Spring Boot 입문 글들을 읽어보시면 도움이 될 것입니다.

https://zepinos.tistory.com/category/Programming/Spring Boot 시작하기

 

'Programming/Spring Boot 시작하기' 카테고리의 글 목록

 

zepinos.tistory.com

결론부터 말하자면, 사실 Spring Boot 은 Spring Framework 라이브러리를 쉽게 호출할 수 있도록 Maven 프로젝트를 만든 뒤 설정이나 기타 기능을 쉽게 사용할 수 있도록 starter 라 불리우는 편의 기능을 추가로 좀 더 구현한 것입니다. 다음 이미지에서 볼 수 있듯이 말이죠.

starter 중 하나인 spring-boot-starter-web 은 spring-web, spring-webmvc 등을 포함하고 있습니다. 이 spring-webmvc 가 흔히 말하는 Spring MVC 입니다. 즉, Spring Boot 은 Spring Framework 와는 관련없는 별도의 라이브러리가 아닌, 기존의 Spring Framework 을 모으고 이를 쉽게 활용할 수 있도록 만들어둔 Maven/Gradle 등을 이용한 일종의 의존성 선언일 뿐입니다. starter 에서는 application.properties 을 이용한 AutoConfiguration 등을 제공한다던지 하는, 일종의 편의 기능 일부를 더 제공하는 것일 뿐 Spring Framework 자체를 따로 구현한 것은 아니기에 약간은 더 무거워질 수는 있겠지만, 큰 차이 없이 Spring Framework 을 다른 방식으로 사용할 수 있는 길을 열어준 것일 뿐입니다.

 

각 언어별 Framework 실행 속도를 비교해놓은 문서도 인터넷 상에서 찾을 수 있는데, 해당 문서에서 Spring Framework 은 그리 빠른 건 아니라는 걸 알 수 있습니다. 사실, Spring 이 유독 대한민국에서 절대다수이긴 하지만, 외국에서도 사용 빈도가 매우 높은 Framework 가 된 것은 속도가 매우 우수하기 때문은 아닙니다. 그래서 Framework 의 선정에 있어서 속도가 제 1 요소가 아니라는 것은 조금만 생각해봐도 쉽게 유추할 수 있습니다. 그래서 Spring Boot 가 조금 더 시간을 잡아먹는다고 해서 그것 하나만으로 욕을 먹는다는건 이치에 맞지 않다고 할 수 있습니다.

실제로 웹페이지가 사람에게 장애로 인식되는데 평균 3s(초) 정도라고 연구결과가 나왔다고 알려져있습니다. 지극히 대한민국 사람인 저도 1s 정도 페이지 로딩이 걸리면 살짝 느리다고 느끼고, 500ms(밀로초, 0.5초) 이하이면 쾌적하다고 느끼는 편입니다. Spring Boot 프로젝트로 위의 spring-boot-starter-web 을 Maven 에 등록하고 프로젝트를 만든 뒤 Contoller 을 만들고 간단한 요청을 만들면 동시에 수십 개의 요청을 보내도 응답속도는 100ms 이하가 되고, 사실상 Spring Boot 가 Spring 에 비해 느리다는게 속도 면에서 크게 의미가 없다고 봐도 무방할 것입니다. 게다가 요청 수가 많아질 경우, 성능을 올리기 위해 Framework 의 질을 향상시키거나 프로그램 소스의 개선 역시 중요하지만, Web 의 특성상 서비스용 장비(Server)를 증설하는 방향도 많이 쓰이기에 Framework 사용에 따른 최소한의 처리 속도는 크게 중요하지 않다는게 사실입니다.

 

오히려 Spring Framework 을 사용할 경우 설정을 위해 XML 파일을 분석하는게 너무 어렵다는 불만이 나올 정도로 이전의 설정 방법은 어려웠습니다. 이를 빗대어 XML 지옥이라는 표현까지 있었으니까요. 지금의 Spring Framework 은 Java Config 을 지원하여 이를 좀 더 단순하게 할 수 있게 되었지만, Spring Boot 은 application properties 을 이용한 Auto Config 와 Java Config 을 적극 지원하기 때문에 설정이 좀 더 간결해졌습니다. 그리고 의외로 모르시는 분들이 많던데, 기존의 XML 설정도 여전히 Spring Boot 에서 이용할 수 있습니다. Java Config 이 사실상 XML Config 을 대체할 수 있음에도 XML 설정 만으로만 가능한게 있다고 여기는 분들도 계시는데, 사실상 대체할 수 있으니 걱정 안하셔도 되고 정말 대체가 안되는게 있다면 XML Config 을 읽도록 설정을 해주시면 됩니다.

 

결론적으로 Spring Framework 을 사용하는데 있어서 Spring Boot 가 완전히 새롭게 개발되거나 구조가 아예 다른 방식이 아니기 때문에 Spring Framework 냐 Spring Boot 를 가지고 규모나 용도에 따라 사용처가 달라져야 할 이유는 없습니다. 다만, Spring Boot 의 Web (WebMVC) 에서 내장 Tomcat (tomcat-embed) 때문에 또다른 오해가 벌어지고 있는 부분은 다음 글에서 좀 더 다뤄보고자 합니다.

 

2019/09/19 - [Programming/Java] - Spring Boot 을 언제 써야 할까? (2) 외장 WAS 가 반드시 필요한가?

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함