Angular, Vue 그리고 React 비교

vagabond20의 이미지

나흘간의 빡센 앵귤러 부트 캠프를 마치면서 이 질문을 했습니다.
아주 자세하게 영어로다가 쏼라쏼라 하고 말한것을 전부 (알아듣지도 몬하고요) 옮기는것은 무리이고 대충 이렇답니다. (제 의견이 아니고 들은대로 적은것이니 오해 없으시기 바랍니다.)

(1) 앵귤러는 대규모 프로젝트, 엔터프라이즈 (우리식 표현으로는 '기업' 이 맞는것 같습니다.) 개발용으로 적합하고 적용범위가 상당히 넓습니다.

(2) Vue 는 앵귤러의 바로 전 버젼인 앵귤러 JS 와 많이 비슷합니다. 즉 현재버전의 앵귤러로 할 수 있는것을 Vue 로 구현하려면 코드가 좀 더 복잡해진다고 합니다.

(3) React 는 비교적 소규모의 프로젝트 개발에 쓰기에 적합하고, 엔터프라이즈 규모 개발용으로는 한계가 있어서 굉장히 전체 시스템이 너덜너덜해 진다고 하네요. 즉, 엔터프라이즈 급 개발에는 그래서 쓰지 않는답니다.

제가 일하는 곳이 덩치가 큰 금융그룹이다보니 앵귤러를 쓰는것 같습니다. 물론 앵귤러는 프론트엔드에서 UI 구현에 사용되고 미들웨어가 클라우드 데이타베이스 바로 앞에서 앵귤러 UI 와 연결해 줍니다. 앵귤러 - 미들웨어 (J2EE 라고 보시면 됩니다) - 클라우드 데이타베이스, 뭐 이런 식의 아키텍쳐입니다.

*
중간까지는 어떻게 어떻게 따라가겠던데 중간 넘어가니까 엄청 복잡하고 어렵네요. 복습 필수!

emptynote의 이미지

울나라 산천에는 많은 강들이 있습니다.

그런데 어떤것을 강으로 불러야 할까요?

규모?

강이라는 호칭은 옛날 부터 이어져 내려오는것이고

옛날에 규모를 정하여 이건 강이다 이렇게 이름을 붙일리 없잖아요.

리브레 까지 말라고 하면서 vue 와 react 를 까시네요.

angular 빠한테 vue, react 물어 보면 부정적 답변이 나오는것이 당연지사이죠.

그런데 react 가 페이스북에서 개발한 자바스크립 프레임워크인데 엔터프라이즈 규모 개발에 한계 라고 말하면 누가 납득을 하겠냐구요.

-----------
참고 주소 : https://okky.kr/article/824766

Anti-Lock의 이미지

참고 주소를 보면, 다운로드 수에서 리액트가 압도적으로 많이 나오고 있습니다.

한편.. '다운로드 수'와 '실제 프로젝트 적용 건 수'는 일치 하지는 않겠죠?
가령, 개인적인 스터디를 하는 사람이 (실제 프로젝트 수보다) 다수이고,
이들이 다운로드한 건수도 반영되어 있겠습니다.

물론 순위가 바뀔만큼 해당 차이가 있을 확률은 낮을것 같습니다.
단지 스터디용? 다운로드 수를 제외하면 어떻게 될까 궁금해서 적어봤습니다.

emptynote의 이미지

찾는 사람 많다는것이 엔터프라이즈급이라는 객관적인 근거가 될 수 없지만

대략적으로 엔터프라이즈에도 쓰이는구나 정도로 유추할 수 있는 근거는 되는겁니다.

엔터프라이즈에 쓰이는 자바스크립트 프레임워크를 두고

엔터프라이즈급 아니다 라고 단언을 할 수 없는겁니다.

vagabond20의 이미지

답변을 한 엔지니어가 이르기를 - 무엇인가 혼자 해야하는 프로젝트가 있다면 자기도 react 가 훨씬 간편하다고, 그 점에 대해서는 react 의 장점이라고 했던것 같아요. 그러나 저는 사용해보지 않아서 모르겠습니다.

그리고 지금까지 몇몇 주어진 UI 개발일을 해 보니까, 여러명의 개발자가 함께 일할때 BitBucket, GIT 을 사용해서 version control 을 체계적으로 할 수 있어서 그런지 큰 규모의 프로젝트에 (혹은 기업용 프로젝트에) 쓰기 괜찮구나 하는 생각 정도는 할 수 있었습니다.

앵귤러의 특성중 하나는 (다른 프레임워크에도 있을겁니다), 수십개 - 수백개의 UI 를 체계적으로 분류해서 품질관리가 가능하겠구나 하는 정도도 파악을 할 수 있었습니다. 모듈이 하부에 모듈들을 두고, 각 모듈이 복수의 컨텐츠/컴포넌트를 두고, 뭐 이런식의 구조로 개발하고 유지/보수를 하더군요. 특정 부분을 변경하거나 개선하고자 할때 해당 컴포넌트와 모듈만 건들면 되도록 짜여져 있습니다.

그리고 비쥬얼 스튜디오 코드나 인텔리제이 등에서 코드를 변경하면 해당 화면에 곧바로 변경된 내용을 실행해서 보여주는게 앵귤러만의 장점인지 모르지만, 오랜기간 C 프로그램만 해 온 저에게는 참 신기하고 편리합니다.

제가 잘 알지도 못하면서 세가지의 프레임워크를 비교하는 글을 올렸나 봅니다.

여의도자바

vagabond20의 이미지

이제 막 웹프로그래밍쪽 시작한 초보라 뭘 몰라서 그러니 이해하기 바랍니다.
이 부서로는 작년 9 월에 옮겼지만 데이타베이스쪽만 하게 해서 그쪽을 배우다가 올해 2 월부터 이쪽일 (웹프로그래밍 과 미들웨어 개발) 을 해서 모르는게 많습니다.

"리브레 까지 말라고 하면서 vue 나 react 를 까시네요"
라고 하셨는데, 저를 혹시 다른 사람으로 착각하신것 아닌지요?
리브레에 대해 관심도 없고, 사용도 하지 않는데 뭔가 오해하신것 같습니다.
그리고 위 답변을 한 엔지니어는 react 로도 개발을 해 본 사람입니다.
다시한번, 위 내용은 제 의견이 아니고 여기서 논쟁을 벌이기 위해서 쓴 내용도 아닙니다.

차라리 위 내용을 수정하거나 삭제할까요?

여의도자바

emptynote의 이미지

논쟁할 생각 없다면 내용 지우시던가 운영자한테 삭제 부탁해 보세요.

jick의 이미지

논쟁은 emptynote 님이 하고 싶으신 것 같은데, 이견이 있으면 그냥 "제 생각은 이렇게 다릅니다" 하고 적으면 되지 남더러 글을 지워라 마라 하시는군요.

emptynote의 이미지

여의도 자바님께서 "차라리 위 내용을 수정하거나 삭제할까요?" 라고 말씀하셨습니다.

그리고 저는 할말 다했습니다.

엔터프라이즈급이 아니다 라는 주장에 대해서 (1) 페이스북에서 react 를 만들었다 는 사실을 말해 반론하였습니다.

설마 페이스북에서 react 를 만들어 사용하는것에 대해서 엔터프라이즈급이 아니다 이런 말씀하시고 싶은것은 아니시죠?

또 (2) 다운로드 수가 압도적이라는 사실을 말해서 기업 수요가 있기때문에 다운로드 압도적인것이다 라며 react 가 엔터프라이즈급이라고 간접적으로 주장하였습니다.

본문글 쓰신 여의도 자바님께서 더 이상의 논쟁 확대를 원하지 않아 운영자한테 삭제를 부탁하신것으로 알고 있어 더 이상 댓글 안달고 있는데 jick 님은 이렇게 댓글 다시는거 보니 그 마음이 안 보이시나 봅니다.

DarkSide의 이미지

댁이 글을 지우는게 더 나을 것 같네요

vagabond20의 이미지

논쟁을 의도한것은 아닌데 이 글이 문제를 일으킨것 같습니다.
글 쓸때 조심했어야 하는데, 죄송합니다.

이미 답글이 붙었는데 삭제 가능하다면 삭제 좀 해 주십시오.

여의도자바

세벌의 이미지

vagabond20 님은 안 죄송하셔도 됩니다.
emptynote 한동안 안 나타나나 했더니 또 나타났네요.

그냥 무시하심이.

vagabond20의 이미지

제가 공연한 논란거리를 만들었나 봅니다.
Vue 나 React 를 주로 사용하는 개발자들 입장에서 보면 좀 불편할 수 있는 포스팅일겁니다.
제 나름대로는 웹프로그래밍 전문가의 말을 듣고 싶었고, 그걸 그냥 생각없이 소개하고자 한것이었습니다.
미국에서 이러이러하니까 이게 정답이다! 라는 식으로 이야기하려던것은 아니었고요.

운영자께서 어떻게 하시는지 기다려 보겠습니다.

여의도자바

DarkSide의 이미지

트롤의 분탕질에 신경쓰지 마세요.

ifree의 이미지

개인적으로 Angular로 입문하여 React를 거쳐 Vue로 정착하였는데요.

Angular는 초기 학습 곡선이 조금 가파릅니다. 굳이 이렇게 어렵게 해야 하나? 하는 의문이 들기도 하는데, 프로젝트가 복잡해지면 그 이유를 납득하게 됩니다.

React 같은 경우는 매우 간단하고 깔끔해서 개인용 프로젝트로는 안성맞춤이지만, 프로젝트가 점점 커질 수록 감당하기 어려워집니다. 오히려 Angular보다 생산성이 떨어지죠. 제가 Vue로 전향한 이유입니다.

Vue는 Angular 보다는 간단하고, Vuetify 와 같은 UI 프레임워크도 잘 되어 있어서 소규모의 팀에서 작업하기에 적당합니다. 버전 3에 이르러서는 composition 이 도입되는 등, 엔터프라이즈 용으로 쓰기에도 큰 부족함은 없다고 생각됩니다만, 지금 생각해 보니 그냥 Angular 를 잡고 있었으면 더 낫지 않았을까 하는 생각이 들기도 하네요.

emptynote의 이미지


원래 광고라는것이 나 잘났다 하지요.

아래는 vue 측 주장 부분 인용하였습니다.

vue 측에서는 분명 react 역시 "대형 애플리케이션" 의 경우 강력한 라우팅 솔루션을 제공한다며

간접적으로 대형 어플리케이션 개발할 능력이 충분하다식 뉘앙스로 글을 적고 있습니다.

3대장은 서로 서로 영향을 주며 발전해 온것으로 알고 있습니다.

하여 다른쪽에 침 벹기는 누워 침벹기라 생각합니다.

의존성 관리에 대해서 전혀 생각 안하고 MVC 모델로 개발하다가

규모가 어느새 커져 버렸을때 유지 보수의 어려움을 경험한 사람이라면

아래 페이스북의 고민에 대해서 공감을 할거라 생각합니다.

------------ vue 측 주장 부분 인용

참고 주소 : https://kr.vuejs.org/v2/guide/comparison.html

대형 애플리케이션의 경우 Vue와 React는 강력한 라우팅 솔루션을 제공합니다. React 커뮤니티는 또한 상태 관리 솔루션 (Flux/Redux 등) 측면에서 매우 혁신적입니다. 이러한 상태 관리 패턴과 심지어 Redux 자체는 Vue 애플리케이션에 쉽게 통합할 수 있습니다. 실제로, Vue는 우수한 모델 개발 경험을 제공한다고 생각하는 Vue에 깊이 통합되어있는 Elm의 영감을받은 상태 관리 솔루션인 Vuex를 통해 이 모델을 더욱 발전 시켰습니다.

----------- 왜 MVC 프레임워크가 아닌가? 부분 인용
참고 주소 : https://blog.gaerae.com/2016/04/hello-react.html

왜 MVC 프레임워크가 아닌가?
MVC는 확장이 어렵고 거대한 시스템에 어울리지 않는다고 페이스북은 결론을 내렸습니다.

.... <중간 생략> ....

하지만 "좀더 예측 가능하도록 코드 구조화"에 대한 목표로 "데이터 흐름이 단방향인 시스템 아키텍처" Flux를 제안합니다.

Anti-Lock의 이미지

현재 주제와는 별개로...
페이스북이 'MVC 모델이 복잡해지기 쉬워 이에 대한 대안으로서 Flux를 소개한다' 라는 내용을 발표하고 재법 논쟁이 있었던것 같습니다.. 7년도 더 되었네요..
https://www.infoq.com/news/2014/05/facebook-mvc-flux/
오늘날에는 페이스북이 같은 의견을 내면 무리없이 수용가능한 분위기 인가요.
MVC,Flux,MVVM... 제가 이러한 개념이 없어서 뭐가뭔지도 모르겠네요.

세벌의 이미지

emptynote 글에

누워 침 뱉기
라는 표현이 있기에 한마디 남기고 갑니다.
사람마다 의견은 다를 수 있지요. 그런데 말이죠. emptynote 글은 매우 공격적이어서, 그 글을 읽는 사람을 화나게 하는 거 같아요. 그건 emptynote 본인 스스로에게
누워 침 뱉기
가 되는 건 아닐까 하는 생각이 드네요.