E4NET

I Love Spring! 본문

E4.Tech/IT Technology

I Love Spring!

E4. 2021. 4. 9. 09:40

다사다난한 코로나 정국에도 2021년 올해도 봄은 왔다. 
봄은 꽃의 계절 온갖 꽃들이 세상에 넘쳐 피운다. 


작년도 꽃구경 마음 놓고 하지 못했는데 올해도 여전히 맘 놓고 즐기지 못한다. 
봄의 전령사 매화는 한껏 자태를 뽑내고 지기 시작했고 이어서 목련, 산수유, 진달래, 개나리, 살구꽃, 앵두꽃 등이 앞서거니 뒤서거니 경쟁하듯 피었다. 이잰 봄의 하일라이트 벗꽃이 봄의 피날래를 장식하고자 하고 있다. 
나는 태어나긴 가을에 태어 났지만 계절 중 가장 좋아하는 계절은 봄이다. 
따뜻한 봄 기운이 좋고 아름다운 꽃이 피어 좋다. 연한 신록이 좋다. 
맘이 살랑 들뜨는 것도 좋다. 

그래서 그런가 난 스프링이 좋다.  
누군가는 나를 스프링 신봉가라 하는데 아주 틀린 말은 아닌 것 같다. 난 스프링을 좋아한다. 
개발자는 눈치 챘겠지만 오늘 얘기 하고자 하는 것은 스프링 프레임워크이다. 
동적인 웹 사이트를 개발하기 위해 여러가지 서비스를 제공하는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로 정의된다. 간단히 스프링(Spring)이라 한다.  

스프링의 위상은 국내에서 상당히 그 영향이 크다. 
기업형 SI의 대부분이 스프링 기반으로 개발되고 있다. 
전자정부 프레임워크인 eGovFrame도 스프링 기반으로 정부에서도 표준 프레임워크로 사용하고 있다. 
대부분 공공 프로젝트 뿐 만 아니라 대부분의 민간 프로젝트들도 스프링 기반으로 개발되고 있다. 
따라서 국내의 많은 웹 애플리케이션 개발자 또한 스프링 기반 웹 개발자이다. 

국내에서 거의 표준으로 많이 사용되는 스프링을 정작 대학교 교과 과정에서는 배우 질 못하고 있다. 
스프링을 배우기 위해 전문학원에서 다시 6개월 코스를 밟고 있다. 
사회에서 가장 많이 필요로 하는 스프링을 학부에 가르치지 않는 것은 의외라 할 수 있다. 
그건 스프링 프레임워크 자체를 배우는 것도 양이 만만하지 않지만 스프링 기반의 MVC 프로그래밍을 배우는 것 또한 양이 만만하지 않기 때문이다. 

스프링을 처음 접한 계기는 2000년대 중반 때 였다. 
웹 프로그램의 규모가 커지면서 MVC 모델 방법론이 필요하게 되었고 그 당시 자바 기반의 MVC는 스트럿츠가 잡고 있었다. 
스프링이 눈길을 받고 있었지만 대세가 스트럿트라 스프링에 MVC가 포함되어 있는데도 불구하고 스트럿츠를 연동에서 사용하는 것이 한 때 유행 이었다. 
물론 차후 스트럿츠 MVC는 급격히 스프링 MVC의 자리를 내주며 물러나게 되었다. 
스프링은 스트럿츠 같은 프로그램 들이 연동 가능하게 한 아주 유연한 프레임워크 였고 이는 프레임워크의 대세로 가기 위한 가장 큰 힘이였다. 

앞서 스프링을 좋아 한다고 하였다. 정확하게는 스프링의 진화되는 변신을 좋아한다.  
시대의 요청에 맞추어 필요한 해결책을 내어주는 스프링이기에 좋아하지 않을 수가 없다. 
좋아하게 되는 이유는 다음과 같다.

첫째 변신은 스프링 어노테이션 MVC이다. (Spring @MVC) 
초기 스프링 MVC는 물론 좋았지만 여전히 불편함을 가질 수 밖에 없었다. 
어노테이션 기반의 스프링 @MVC가 나오면서 MVC 코딩의 불편이 상당히 해소가 되었다. 
스프링 코딩은 당연히 자바 코딩이지만 어노테이션 코딩이라고 해서 될 정도로 그 쓰임새가 많고 개발의 편리함을 가져다 주었다. 이젠 어노테이션 없는 개발은 생각도 못하게 되었다.     

둘째는 스프링부트이다. (Spring Boot) 
스프링은 여전히 처음 점근하는 개발에게는 복잡하다. 하나의 개발환경을 구축하기 위해 
기본적으로 필요한 모든 것을 컨텍스트 설정해 주어야 한다. 필요한 모든 것에 대한 설정이 필요했다. 
스프링 부트는 스타터(Spring Boot Starter)를 두어 기본적인 설정을 default로 가져가게 하였다. 
따라서 기본적인 웹 애플리케이션의 프로젝트를 별도 설정 없이도 가능하게 되었다. 
부담스런  스프링 컨텍스트 설정이 사라지면서 접근성을 높였다.

셋째는 스프링클라우드이다. (Spring Cloud) 
세상은 어느 덧 거대한 웹 서비스 시대가 되었다. 많은 서비스가 거대화 되어 하나의 서버로 모든 서비스를 제공하기 어려운 시대가 되었다. 
새로운 패러다임이 필요했고 이에 맞추어 나온 것이 MSA(Micro Service Architecture)이다. 
서비스를 업무 단위로 쪼개서 서비스 하고 이들은 유기적으로 연계하여 데이터를 주고 받으며 서비스를 제공하게 된다. 
서비스가 수 없이 나누어 지면서 서비스를 유지보수가 어렵게 되는데 서비스간의 연계와 관리를 보안하기 위해 나온 것이 스프링 클라우드이다. 
스프링 부트는 MSA를 위한 변신이고 스프링 클라우드는 MSA 세계를 열어가는 기반이며 열세가 된다.

마지막으로 넷째는 스프링 웹플럭스이다. (Spring WebFlux) 
NodeJs 가 인기를 끈 점은 비동기 제어를 통해 대용량 처리에 적합하기 때문이다. 
기존 Spring은 쓰레드 기반의 동기방식으로 동시 접속이 많아지면 시스템 성능에 영향을 주었다. 
단일 쓰레드로 구동되는 비동기 처리는 동시 접속이 많아져도 성능에 영향이 없다. 
물론 비동기 방식은 단점이 있기에 몇가지 제약점 내에서 성능을 발휘하게 된다. 
또한 동기 방식에 비해 코딩하는 데에도 제약이 있어 쉽지 않다. 
스프링도 시대의 흐름에 맞추어 비동기 방식의 제어를 제공하는데 이것이 웹플럭스이다. 

이포넷에서 제공되는 기부 서비스인 체리는 웹플럭스를 제외한 
위에서 기술한 기술을 기반으로 개발된 서비스이다. 

이상으로 스프링의 변신을 말해 보았다.  
내가 스프링을 사랑하는 이유가 여기에 있다. 
내가 좋아하는 꽃의 계절 봄이다. ^^

'E4.Tech > IT Technology' 카테고리의 다른 글

퇴직연금 수익률 어떻게 되세요?  (0) 2021.08.25
MSA와의 지난 1년  (0) 2021.08.24
I Love Spring!  (0) 2021.04.09
마이 데이터, 마이 데이터 사업이 뭐지  (0) 2021.03.04
공정하다는 착각  (0) 2021.02.04
체리와 보안  (0) 2020.11.30
0 Comments
댓글쓰기 폼