2023. 1. 9. 23:43ㆍ학습일지
이제 스프링 5에 익숙해질랑 말랑하려고 하는데, 갑자기 또 조만간 스프링 6을 출시한다고 한다. 공부해야 할게 아직도 산더미로 쌓여있는데 또 공부해야 할게 늘어나 심기가 편치 않다... 그래도 안 할 수는 없으니, 시간이 좀 있을 때, 요약해보고 개인적인 견해를 펼쳐볼까 한다.
keynote: Introducing Spring Framework 6 요약
- 명목상 Spring 6 소개 영상이지만, 사실은 6.1에 대한 기대감을 키우는 영상이다.(23년 말).
- Java/Spring의 고질적 문제 2가지가 있는데 하나는 느린 시작속도 문제, 나머지 하나는 non-blocking IO 시의 코딩 복잡도 문제가 있다. 그런데 이 두 문제가 23년 말에는 해결될거라고 한다.
- 시작속도의 경우 GraalVM Native Compile 이나 CRaC라는 기법으로 해결이 된다고 한다.
- 이번에 AWS re:invent 에서 발표한 SnapStart가 CRaC라는 기법으로 java 애플리케이션이 부팅된 상태의 메모리 snapshot을 떠서 저장하고 읽어서 부팅하는 방식이라고 하는데, 시작속도가 100ms~1초 미만 정도되는 것 같다고 한다. 이러한 방식이 본격적으로 적용되는데 Spring Framework 6.1 인 듯하다. 앞서 발표한 내용을 보면, 이미 사용이 가능한 기법인 듯하다. 주의할 점은 이 기법은 기존 JVM을 그대로 사용하는 native compile 과는 무관하다.
- native compile 은 quarkus 등에서 이미 다 되고 있는데 Spring Framework 6.1 에서 quarkus 수준의 완성도를 갖게 되는 것으로 예상된다.
- 그다음 async/await가 없어서 생기는 non-blocking IO 코딩 복잡도 문제의 경우도 23년 말에 Java 21/Spring Framework 6.1에서 virtual thread을 공식으로 지원하면서 해소될 것으로 보인다. 기존 SpringMVC 코드를 전혀 바꾸지 않아도 non-blocking IO가 그냥 작동해 버린다....!!!
- 이제 와서 성능 개선을 목적으로 WebFlux 도입을 고려하는 것은.. 뭔가 타이밍이 애매해 보인다.
- 사실상 WebFlux는 stream based application 전용으로 포인트가 바뀌고 결국은 Spring WebMVC가 대세를 이어갈 것으로 유겐 휄러도 예상하는 것 같다.
나의 견해...
개인적으로 배울게 많아져서 피곤한 느낌이 들면서도 약간은 설레기도 한다. SpringMVC를 그대로 써도 non-blocking이 가능하다니... 예전에 독학으로 WebFlux를 적용해보려다가 잘 안되던걸 생각해 보면, 반가운 소식일 수 있겠다.
그러나, IT업계에서 해당 Spring Framework 6.1을 바로 활용할지에 대해서는 조금 의문이다. 국내에서는 외국 IT 업계와 다르게 JAVA 점유율이 기형적으로 몰려있다. 우아한 Tech의 배달의민족 마이크로서비스 여행기 영상 내용(3분 36초 근처)을 보면, 김영한 선생님이 잠깐 언급하시는데, "자바 언어를 선택한 이유는 크게 다양한 라이브러리 제공과 개발자 수급 이 두 가지가 있었다."라고 하실 정도로 우리나라 IT는 자바를 너무 좋아한다.
특히 시니어급에서 자바를 사용하는 선배 개발자분들이 많은데... 아무래도 전자정부 프레임워크+개발자를 가성비 있게 써먹고 싶어 하는 업계의 성향이 이러한 상황을 만든게 아닐까 싶다.
요컨대, 국내 IT 업계에서는 개발자에서 적은 시간을 주고 높은 기대감을 갖고 완벽한 산출물이 나와주길 바란다. 이러한 분위기에서 과연 새롭고 편리한 기술이 나온다고 업계에서 바로 사용하고자 할지는 의문이다...
'학습일지' 카테고리의 다른 글
브랜치 추상화에 대해 알아보자 (0) | 2023.02.03 |
---|---|
Branch 대신에 FeatureFlag..? (0) | 2023.02.01 |
03. Spring security Features 요약 : Security Http Response Headers (0) | 2022.11.04 |
02. Spring security Features 요약 : Protection Against Exploits (0) | 2022.11.04 |
01. Spring security Features 요약 : Password Storage (0) | 2022.11.04 |