경험

첫 개인 프로젝트 하는 입장에서 Framework 선택

NONAME DIALOG 2024. 10. 25. 15:23

현 시점 Spring은 국내에서 가장 많이 사용하는 웹 프레임워크중 하나입니다.

그런데 저는 이 글을 첫 개인 프로젝트로 프레임워크를 선택하는 입장에서 스프링의 장단점과 다른 웹 프레임워크의 장단점을 서술하여 스프링이 아닌 다른 웹 프레임워크를 통해서 입문하기를 추천하고자 합니다.

절대 개인적으로 주장하는 의견이고 모든 의견을 존중합니다.

Java Spring

장점

  • 가장 축적된 자료가 많은 언어 및 웹 프레임워크입니다.
  • Web BE 직무 채용시장에서 가장 많이 사용하는 웹 프레임워크입니다.
  • 객체 지향 프로그래밍(OOP)에 적합한 웹 프레임워크로 프로젝트 설계 시 다양한 소프트웨어공학 이론에 맞게 설계가 가능합니다.

단점

  • 여러 파일 및 폴더구조로 인해서 초심자가 익숙해지기에 어느정도 시간이 필요합니다.
  • 필연적으로 프로젝트 구조가 커지기 때문에(비록 MVC만 적용하더라도) 러닝커브가 높고 처음 하는 개발자 입장에서 낯설게 느껴질 수 있습니다.
  • (개인적인 생각)학생 신분이 아닌 경우 Intellij를 사용하는데 돈이 들기 때문에 초심자가 해당 프레임워크를 선택할 때 초기 비용지출을 해야합니다.

이제 위 포맷에 따라서 다른 프로그래밍 언어와 Web Framework에 대한 장,단점을 서술해보고자 합니다.

Node.js

Express.js

JavaScript기반의 웹 프레임워크로 빠른 백엔드 서버 구축을 목적으로 만들어진 프레임워크입니다.

장점

  • 빠르고 쉽게 백엔드 서버를 구축 할 수 있습니다.
  • 프론트엔드 개발을 해본 개발자에 한해서, 같은 JS계열의 프레임워크임으로, 적응을 쉽게 할 수 있습니다.

단점

  • JS언어 특성 상 왠만한 상황에서 컴파일에러가 발생하지 않아서 잘못된 코드작성을 했을 경우, 해결하고 수정하는데 시간이 필요로 합니다. ⇒ TS를 사용하면 해결되나, 타입에 익숙하지 않은 초보 개발자에게 쉽지 않게 느껴질 수 있음
  • 초기 계층구조가 제대로 되어있지 않아서 OOP에 맞게 개발하기 어렵습니다.

Nest.js

TypeScript 기반의 웹 프레임워크로, 엔터프라이즈 규모의 개발을 목적으로 사용되는 프레임 워크입니다.

장점

  • Spring과 비슷한 형태의 프레임워크로, 계층구조에 대해서 이해하고 사용하기

단점

  • 자료가 다른 프레임워크에 비해 부족하기 때문에 에러 상황에 직면하게 되었을 때, 해결하기 쉽지 않습니다.
  • 기본적으로 TS가 디폴트 언어라 타입에 익숙하지 않은 분들에게 어려울 수 있습니다.

Python

Django

Python 기반의 웹 프레임워크로, batteries-included를 지향하여 필요한 도구가 많이 제공되는 프레임워크 입니다.

장점

  • 파이썬이라는 친숙한 언어를 기반으로 하는 웹 프레임워크 입니다.
  • 관리자 페이지를 기본적으로 제공해줘서 작업시간을 단축시킬 수 있습니다.
  • 공식 문서가 잘 작성돼어있고, 개발자 커뮤니티가 큰 편입니다.

단점

  • 속도가 상대적으로 느립니다.
  • 프레임워크의 컨벤션이 정해져있어서, 러닝커브가 비교적 가파릅니다.

Flask

Python 기반의 웹 프레임워크로, Express.js와 유사하게 빠른 백엔드 서버 구축을 목적으로 만들어졌습니다.

장점

  • Django와 마찬가지로 파이썬이라는 언어 기반의 웹 프레임워크이기 때문에 쉽게 학습할 수 있습니다.
  • 다른 프레임워크에 비해 상대적으로 쉽고 빠르게 백엔드 서버를 구축할 수 있습니다.

단점

  • 기본적으로 제공해주는 기능이 적기 때문에, 간단한 api 설계를 제외한 기능을 만들 때 어려움을 겪을 수도 있습니다.

결론

다양한 기업 및 정부에서 Spring이 사용되고 있기 때문에, 개발 인력 풀이 넓고 자료가 풍부하지만 처음 공부하는 입장에서는 쉽게 와닿지 않을 수 있다고 생각합니다.(특히, 비전공자로 개발에 입문하려고 하는 입장에서) 따라서 Python을 기반으로하는 Django 나 Flask와 같은 프레임워크 혹은 Express와 같은 간단한 백엔드 서버를 구축할 수 있는 프레임워크를 기반으로 공부를 시작해보는 것도 괜찮은 방법이라고 생각합니다.

'경험' 카테고리의 다른 글

정보처리기사 실기 정리 5  (0) 2024.10.25
정보처리기사 실기 정리 4  (3) 2024.10.25
정보처리기사 실기 정리 3  (3) 2024.10.25
정보처리기사 실기 정리 2  (0) 2024.10.25
정보처리기사 실기 정리 1  (1) 2024.10.25