2022. 5. 6. 22:12ㆍSpring
본인은 프로그래밍을 자바로 입문하였고 이후 배우는 언어들보다 자바가 더 맞다고 생각하기도 했고
아무래도 한국을 기준으로 스프링 점유율이 높다보니 자연스럽게 스프링을 하게 되었던 거 같다.
그런데 왜 내가 스프링을 사용하고 배워야 하는 이유에 대해서 의문점이 생겼다.
사실 언어는 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 개발자 분들이 많이 생겨나게 되었고
뿐만 아니라 높은 안정성과 성능까지 갖춰진 스프링이기 때문에
가장 많이 사용되는 것이 아닐까 생각된다.
'Spring' 카테고리의 다른 글
WebFlux + MongoDB + SSE 로 채팅만들기 (0) | 2022.09.04 |
---|---|
@Transactional에 대하여 (0) | 2022.08.30 |
우당탕탕 Nginx 적용기 ( 근데 이제 Actions를 곁들인.. ) (0) | 2022.08.18 |
Spring의 JDBC, SQLMAPPER, ORM (0) | 2022.05.12 |
Web Server 와 WAS (0) | 2022.05.09 |