왜 스프링인가? - 프레임워크별 특징

2022. 5. 6. 22:12Spring

본인은 프로그래밍을 자바로 입문하였고 이후 배우는 언어들보다 자바가 더 맞다고 생각하기도 했고

아무래도 한국을 기준으로 스프링 점유율이 높다보니 자연스럽게 스프링을 하게 되었던 거 같다.

 

그런데 왜 내가 스프링을 사용하고 배워야 하는 이유에 대해서 의문점이 생겼다.

사실 언어는 JavaScript, Python, C/C++, JAVA 등 여러 언어가 있고 그에 맞는 프레임워크도 존재한다. 

하지만 개발자가 특정 언어가 좋다고해서 해당 언어로만 개발하는 경우는 거의 없다.

즉 프로덕트 특성에 따라 최대한 알맞은 언어, 프레임워크를 사용하여 개발하여야 한다.  

 

각 프레임워크 마다의 장단점이 있고 할 텐데 이 수많은 프레임워크 중 선택의 기준은 무엇이며

뭐가 그렇게 사람들이 스프링을 많이 사용하게끔 되었는지에 대해서 알아보자.

 

각 프레임워크 마다의 장단점 

- 수 많은 언어와 수많은 프레임워크들이 있지만 가장 많이 선호되는 JAVA/Spring, JavaScript/Express, Python/Django에 대해서 알아봅시다.

 

① JavaScript / Express

JavaScript는 원래 웹 브라우저에서 동적 혹은 HTML, CSS에 좀 더 다이내믹한 효과를 이끌어 낼 수 있도록 만들어진 언어이다. 

 

그렇기 때문에 프론트엔드 개발자 분들이 많이 사용하는 언어였기 때문에 Node JS & Express가 나오며 많은 프론트 개발자 분들도 백엔드로의 접근을 쉽게 할 수 있는 프레임워크이다.

JS의 유연성 덕분에 쉽고 강력하게 웹 서버를 만들 수 있으며. 추가적으로 TypeScript, Vanilla JavaScript 등 여러 컨셉을 곁들인 형태의 언어 또한 개발되어 해당 언어들을 사용하게 된다면 유연성과 안정성을 모두 가질 수 있다.

 

Express는 노드JS ( Node.js )용 무료 오픈소스 프레임워크다.

API와 웹 애플리케이션을 구축할 수 있도록 해준다.  또한 싱글 스레드를 기반으로 움직이고 비동기 I/O 처리가 가능하여 매우 빠른 속도가 장점이다.

 

또한 CPU의 대기시간과 CPU의 부하를 최소화 할 수 있다.

하지만 싱글 스레드 모델이기 때문에 한계 또한 존재한다.

가장 큰 문제는 하나의 작업에 너무 큰 리소스가 사용되면 시스템 전체의 성능이 급격하게 떨어진다.

 

정리

장점

1) 싱글 스레드, 비동기 처리 ( 속도 향상 )

2) CPU 대기시간 & 부하 최소화 

3) TypeScript 같은 형태의 언어를 사용하게되면 유연성과 안정성 모두 가질 수 있다.

4) JavaScript라는 언어 자체가 매우 전망이 좋게 보임 (본인 피셜)

 

단점

1) 싱글 스레드 ( 하나에 작업 때문에 시스템 전체가 흔들릴 수 있다 )

2) 에러 발생 시 타격이 크다 ( 싱글 스레드 )

 

 

② Python / Django 

Python은 그냥 유연성 끝판왕 언어이다.. ( 그래서 난 좀 별로.. )

그래도 많이 사용되는 언어이다. ( 실제로 인스타그램 혹은 구글도 많은 부분에 파이썬을 활용 )

 

Python은 교육용, 실무용 등 여러 방면에서 활용되고 그만큼 진입이 쉬운 언어이기 때문에 

이전부터 파이썬을 사용하던 사람이라면 Django로 입문하기도 비교적 쉽다.

그뿐만 아니라 인공 지능 분야에서도 많이 활용되는 언어이기 때문에 여러 기업에서 많이 사용하는 것 같다.

 

이러한 파이썬의 장점과 특징도 Django에서 많이 볼 수 있다.

Django는 MVT(Model-View-Templates) 아키텍처이다.

로그인, 인증, 파싱 등 웹에서 활용되는 기본적인 기능들을 쉽게 탑재할 수 있다

또한 높은 유연성이 장점인 파이썬을 기반으로 하기 때문에 생산성이 매우 높다. 

그 뿐만 아니라 수많은 파이썬 라이브러리를 사용 가능하다는 점도 있다.

 

하지만 파이썬 혹은 장고의 장점은 반대로 단점으로 다가오는 경우도 많다.

 

스크립트 언어이다 보니 테스트가 어렵다 ( 바로바로 IDE에서 에러를 알려 줄 수가 없다. )

그뿐만 아니라 자바나 자바스크립트처럼 모바일 프로그래밍에 취약하기 때문에 마땅한 프레임워크가 없는 것도 아쉬운 점 중에 하나이다. ( 자바는 안드로이드, 자바 스크립트는 리엑트 네이티브 존재 )

 

또한 여러 설정을 커스텀 할 수 있는데 이는 반대로 설정을 해줘야 하는 것이 많다고도 볼 수 있다.

 

정리

장점

1) 높은 유연성과 생산성

2) 비교적 난이도가 쉽고 간결

3) 파이썬의 라이브러리들 사용 가능 

 

단점

1) 테스트가 어려움 ( 에러를 한번에 찾기 힘듦 )

2) 모바일 프로그래밍 취약 ( 언어적 아쉬움 )

 

 

③ JAVA or Kotilin / Spring

기본적으로 객체지향언어인 JAVA를 기반으로 제작된 오픈소스 프레임워크이기 때문에 

객체지향의 장점을 모두 활용된 집합체로 볼 수 있다. 

 

Spring은 국내 기업에서 가장 많이 활용되는 프레임워크인데 높은 안정성과, 성능 때문에 

IT 대기업, 스타트업 구분하지 않고 많이 활용된다. 또한 JVM의 생태계가 매우 방대하고 그만큼 수많은

라이브러리들과 자료가 있기 때문에 개발하는 데 있어 거의 모든 문제를 해결할 수 있다고 볼 수 있다.

 

뿐만 아니라 전자정부 표준 프레임워크가 스프링을 기반으로 제작된 것도 크다고 볼 수 있다.

그만큼 대기업에서 부터 정부 프레임 워크까지 Spring의 안정성과 성능은 보장되어 있다고 볼 수 있다.

 

하지만 비교적 Python이나 JavaScript보다 JAVA가 진입장벽이 좀 더 높은 편이며 (나는 JavaScript가 더 어렵.. )

Spring Framework도 다른 프레임워크에 비해 난이도가 높다고 소문이 자자하다..

하지만 Spring Boot이 나옴으로써 기존 Spring 보다 매우 난이도와 진입장벽이 낮아졌다고 생각한다.

 

정리

장점

1) 수 많은 트래픽을 감당할 수 있는 높은 안정성과 성능 ( 멀티 스레드 )

2) 생태계가 매우 방대하고 자료가 매우 많음 ( 비교적 )

3) 웹 서버 개발에서 마주치는 에러 혹은 어려운 점을 해결할 기능들이 많이 구비되어있다

 

단점

1) 언어와 프레임워크의 난이도가 다른 언어에 비해 비교적 높다 ( 파이썬이 진입장벽 낮은 게 넘사벽이라.. )

 

아무래도 자바 언어 자체가 위 언어들보다 더 일찍 개발된 것이 

우리나라에서 프로그래밍과 인터넷 등의 유입 시기와 맞게 되어 JAVA/Spring 개발자 분들이 많이 생겨나게 되었고

 

뿐만 아니라 높은 안정성과 성능까지 갖춰진 스프링이기 때문에

가장 많이 사용되는 것이 아닐까 생각된다.