본문 바로가기

Development Note

COMPARING JVM WEB FRAMEWORKS 을 살펴보고

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기술 관련된 조사를 하다가 발견한 발표 문서인데 굉장히 흥미로운 내용들이 많아서 좀 자세하게 살펴 보았습니다.

근래의 트랜드를 살펴보는 재미가 있어서 본 내용과 느낌을 그대로 전달 해 보고자 합니다.

혹여나 저자가 이야기 하고자 하는 바와는 다를 수 있으니 적당히 필터링 해서 들으셨으면 하네요.


'COMPARING JVM WEB FRAMEWORKS' 라는 이름의 PT 입니다. 2014년 2월에 정리한 내용이라 최근 내용이라고 봐도 무방 하겠더라구요.




먼저 근래의 기술과 관련된 이야기를 합니다. 현재 웹 개발에 사용되는 도구들과 언어등 이를 둘러싼 모든 내용들의 역사와 흐름을 정리한 표입니다. 다소 복잡해 보이지만.. 알고보면 저 조차도 저 많은 것들을 하나하나 접했다고 하니 굉장히 신기하더라구요. 여튼 많은 기술들이 있습니다만 근세의 개발자들의 행태를 다음과 같이 정리를 했습니다. 확실히 종래의 모습과는 비슷한 듯 다르지 만  웹이 굉장히 중요해지고 그 기능도 충만해 진것은 사실인 것 같네요.


현대의 웹 개발자


1. 성능 좋은 하드웨어로 시작한다.

2. IntelliJ IDEA 를 사용한다.

3. Javascript, HTML5/CSS3 를 활용할 수 있다.

4. 고성능의 웹사이트를 생산한다.

5. 모바일 기기들을 고려한다.

6. 클라우드 서비스를 이용 한다.

7. 보안과 관련하여 신경을 쓴다.



그러면서 SOFEA 이야기를 합니다. 이거 이런 약어로는 처음 들어봤지만 처음 보는 시스템은 전혀 아닙니다. MVC 를 서버가 아닌 프론트로 돌리고 서버에서는 API 만 제공하는 형태를 보여주고 있습니다. 과거에도 한번 구경했었던 이 구조는 굉장히 신선하기 짝이 없었죠. 이전에는 Javascript 는 웹사이트 화면하고만 관계있는 것인 줄 알았는데, 현재는 아주 많이 발전한 모습입니다. 이런 개발 환경에서 직접일을 해본적이 없어서 특별히 언급할 부분은 없지만 어떠한 형태로 MVC 를 프론트가 대신할 수 있는지가 궁금하더라구요. 공부를 해봐야겠습니다.


이런 진화된 구조가 가져다 주는 잇점들을 여러가지 생각해볼 수 있는데 성능과 관련된 부분을 대부분 Client 가 맡아 하다보니 Client-side 의 성능 문제가 발생 할 수도 있겠구나.. 이런 생각이 들더군요. 그런점에서 현 구조가 완벽한 방법은 아니라는 이야기도 있습니다. 그런면에서는 이것 또한 시도의 일부라는 점을 기억하고 넘어가야 겠네요.


웹사이트를 개발하는 방법을 이 정리에서는 종류별로 크게 세가지로 나누어서 비교하고 설명하였는데 그 세가지는 아래와 같습니다.


Pure Web Frameworks : Apache Struts, Google Web Toolkit, JSF, Spring MVC

Full Stack Frameworks : Rails, Grails, Play Framework, Lift, SpringRoo

SOFEA Frameworks

 - API Frameworks : Vert.x Jersey, Apache CXF, SpringBoot, RestEasy

 - Javascript MVC Frameworks :Backbone.js AngularJS, Ember


Pure Web Frameworks 와 Full Stack Frameworks 의 경계를 잘 이해하기 힘드네요. 위키에서 살펴보면 다음과 같이 이야기가 나옵니다.


Eventually, mature, "full stack" frameworks appeared, that often gathered multiple libraries useful for web development into a single cohesive software stack for web developers to use. Examples of this include ASP.NET,JavaEE (Servlets), WebObjects, web2py, OpenACS, Catalyst, Mojolicious, Ruby on Rails, Grails, Django, Zend Framework, Yii,[3] CakePHP[4] and Symfony.


웹 개발을 위해 자주사용하는 여러 라이브러리들을 모아놓은 응집도가 높은 소프트웨어 스택 이라고 이야기 하는데 그 범주를 정하기가 쉽지 않아 보입니다. Pure Web 의 경우에는 언어 베이스의 라이브러리 사용을 통해서 조금 더 Low Level 로 개발하는 방식을 의미하는 것 같아 보이고.. Full Stack 은 자주 사용하는 라이브러리의 조합들을 통해서 만들어 놓은 사용하기 쉬운 웹 개발 툴 정도로 이해를 해보았습니다.설정이나 자주 사용되는 기능에 대해서는 쉽게 사용할 수 있게 되어있는 그런? 것을 말이죠. 아님 말구요. -_-;


SOFEA Frameworks 는 API 부분과 Front 로 분류를 하였는데 이부분은 오히려 간단하게 분류가 가능합니다. 쉽게 나누자면 Server / Client 로 나누면 이해가 더 빠를 더라구요.

이런 분류를 통해 사용이 되고 자주 찾을 수 있는 것들로 순위를 나누어 보았는데.. 흥미로왔습니다.




이 표는 제가 직접 내용을 보고 제작해 보았습니다. 각각의 사이트들에서 수집한 내용들을 토대로 순위를 매겨 보았는데. Grails, Spring MVC, Jersey 는 부동의 1위를 굳건히 하고 있었습니다. 더욱 놀라운 것은 이들은 압도적으로 1위를 차지 하여 2,3,4,5위의 존재가 무색할 정도로 압도적이라는 것이었습니다. 다만 Backbone, Angular 는 근소한 차이로 그 이용 빈도가 차이가 나고 있었습니다. 어쩌면 그 이용 수가 적기 때문일 수도 있구요.


다양한 것들이 존재하지만 그 지배자는 명확히 있어서 노잼이었습니다. 하지만 놀라운것은.. 다 나를 스쳐 지나갔는데.. 왜 장단점을 하나도 못 느꼈느냐... 라는 거지요.


Grails 를 좀 살펴볼 필요가 있어보여요.