NODE.JS + REACT + NEXT.JS VS SPRING + FLUTTER
어느 것이 더 좋을까?
맨 처음의 목표는 플러터로 개발하여 하나의 코드베이스로 모바일 웹, 데스크톱에서 다 사용할 수 있는 그런 앱을 만드는 것이었다.
그러나 플러터 같은 spa 프레임웍들은 csr방식으로 작동하여 ssr이 되지 않는다
csr은 client 즉 사용자 기기에서 동작하는 방식이고
ssr은 server side 서버 쪽에서 페이지를 만들어서 사용자 기기에 렌더링 된 페이지 등을 보여주는데
구글 같은 서치 엔진에는 렌더링 돼서 결과 값들을 봇들이 읽어서 사용자들에게
검색 서비스를 제공해 줄수 있다. 그러나 spa 애플리케이션은 기기에서 시작된 후 이벤트에 따라 값들이 렌더링 되고 고로 봇이 데이터를 긁으러 왔을 때 가져갈 데이터가 없는 상태인 것이다.
리액트 같은 경우 next.js 로 ssr을 구현할 수 있다고 알고 있다.
리액트를 써보지도 배우지도 않아서 정확히는 알 수 없으나
요즘 리액트를 사용하는 곳도 많고 사람도 많이 뽑는 거 같다.
몇 년 전부터 리액트를 배울까 했었는데 슬기회가 없었고 node.js의 생태계도 배워야 할게 많은 거 같아
노드 쪽 생태계는 먼가 선택지가 너무 많다.
좋은 선택을 하기 위해 여러 패키지들을 다 알고 하기도 애매하고
그래서 미루고 미루게 됐던 거 같은데
몇 년이 지난 지금 리액트를 많이 찾는 거 같다.
리액트로 앱,웹 만들고 next.js로 ssr node로 백엔드를 가볍게 만들면
작업할 내용이 최소화될 거 같은데 문제는 노드 생태계며 리액트를 쉽게 배울지가 의문이다.
spring 프레임웍은 쓰던 거고 플러터는 크게 어렵지 않으니 스프링으로 pc 쪽 웹페이지와 백엔드 Rest API 등을 만들고 하면
웹 한번 앱 한번 작업량은 늘겠지만 큰 러닝커브는 없을 거 같고.
작업할 페이지 수는 2배가 되는 거 같아도 크게 어렵거나 한건 아니라 유지보수도 두 배가 되겠구나 화면단은 두 번을 고쳐야 하니 빽단은 한 번만 해도 되지만 화면단은 두 번을 작업을 해야 하니..
장점이라면 ios, mac os, 안드로이드, 아이폰, 윈도 리눅스에서도 돌아갈 수 있으니 플러터가
크로스 플랫폼을 완성할 수 있을 거 같으나 비슷한 화면을 두 번씩 만들고 유지 보수 할 때도 비슷한 화면을 두 번 만들어야 하니 리액트에 비해선 비효율 적인 거 같기도 하고 리액트도 리눅스나 맥 os에서도 돌아가는지 궁금하다.
알고 있던 스프링에 플러터 살짝 배워 화면만 두 번 만드는 것과 새로 리액트와 노드 생태계를 배워 찾는 사람도 많은 리액트를 도전해 보는 것 어느 것이 더 좋을까?
개발자는 모든 걸 다 해야 할거 같지만 새로 나오는 것도 배울 것도 너무 많다. 필요하다면 배워서 쓰면 되겠지만 혼자 프로젝트 만들어 보려니 생각만 많아진다.
프레임웍이 하나로 통일 되면 좋을 거 같은데. 이 바닥이 가지가 너무 많다.
c부터 자바, 닷넷, php 하나로 통일될 일은 없겠지... 나중에 ai가 만들어 준다면 모를까
플러터가 ssr도 지원해 주면 좋을 거 같은데 홈페이지에 글을 찾아봐도
ssr이 플러터의 최우선 사항은 아닌 거 같다 퍼포먼스가 최우선 사항이라고 했던가
seo가 필요 없는 앱에선 그냥 플러터로 하면 될 거 같은데 검색을 기대하는 사이트에선
플러터만 쓰기엔 백엔드도 하나 만들어 rest api도 이용할 겸 스프링을 사용하여 개인 프로젝트를 진행하게 될 거 같다.
스프링 프레임웍에도 이제 리액티브 스택으로 논블럭킹으로 웹을 만들 수 있는데 JPA는 서블릿 스택을 이용해야 하고
저쪽도 완벽하게 내 입맛에 맞는 건 아닌데 neo4j 같은 경우도 리액티브 스택에서 잘 지원될지가 의문이다
전에 사용할 땐 초기에 사용한 거라 구현 안된 것들도 있었는데 지금은 훨씬 나아졌으리라 기대한다.
reactive stack에선 non-blocking 가 끌리고 서블릿 스택에선 jpa나 기존의 것들이 더 이상없이 작동할거 같고.
구글 트렌드를 보면 리액트가 검색량이 높은거 같은데 한국에선 그래도 자바를 많이 쓰는거 같고 새로 프로젝트를 하는곳에선 리액트를 많이 쓰는거 같고 어차피 하는일은 비슷한데 프로그래밍 언어의 차이와 스타일 방향성이 조금 다르다 보니 점점 갈수록 멀해야 할지 헷갈린다.
'개발' 카테고리의 다른 글
ESM + CDN UMD + CDN UMD + local 방식 차이 (0) | 2024.11.08 |
---|---|
GCP mysql 설치 후 방화벽 설정 (0) | 2021.09.03 |
GCP 인스턴스 SSH 접속하기 (0) | 2021.09.02 |
git flow Branches 'develop' and 'origin/develop' have diverged (0) | 2020.12.02 |