웹 서버 개발 플랫폼의 역할과 위치

w3techs.com은 웹 기술에 대한 조사 결과를 공유하는 사이트입니다. 이곳에서 웹 서버 개발 플랫폼의 시장 위치에 대한 보고서를 읽고 ASP.NET 개발자 입장에서 느낀점을 정리합니다.

저의 웹 개발 환경 경험은 ASP.NET 75%, Java 15%, 기타 10% 정도 될 것 같습니다.

2014년 1월 26일 기준 상위 5개 웹 서버 개발 플랫폼에 대한 차트를 보면 눈에 띄는 3가지가 있습니다.

  1. PHP의 넘사벽 점유율
  2. 그 뒤를 따르는 ASP.NET의 높은 점유율
  3. Java로 개발된 사이트의 높은 트래픽

programming_language

일단 PHP에 대한 얘기는 접겠습니다. 제가 PHP에 대한 어떤 지식도 없거든요. 🙂 Java 식민지 대한민국에 살고있는 다른 많은 프로그래머 분들은 조금 의아하게 생각하실 수도 있겠지만(이름만 대면 다 알만한 요즘 가장 유명한 모 에반젤리스트가 작년 한 국내 개발자 행사에서 ‘.NET을 누가 쓰냐? 이미 망했다.’라는 뉘앙스의 말을 한 적이 있을 정도죠…), 전 이 차트에서 상대적으로 왼쪽 상단에 Java가 위치하고 중간쯤에 ASP.NET이 위치하는 것에 크게 공감합니다. 아마 ASP.NET이 저 위치에 있는 가장 큰 이유는 ASP.NET Web Forms의 높은 생산성 때문이 아닐까 생각합니다.

Web Forms는 엄청난 생산성을 가지고 있습니다. 여기에 이의를 제기하는 사람은 아직까지 본 적이 없습니다. 몇 년 전 Java와 ASP.NET을 모두 사용한 프로젝트를 수행한 적이 있는데 그 당시 Java 개발 경력만 있던 어떤 분이 Visual Studio에서 Web Forms 페이지의 기능을 개발하는 과정을 보고 놀라했던 적이 있습니다. 웹 컨트롤을 디자이너 화면으로 드래그해 적당한 위치에 추가하고 더블 클릭해서 코드를 작성해 기능을 구현하는 모습이 그 분에겐 놀라움의 대상이었죠. 저 역시 전적으로 타의에 의해 웹 개발을 시작했을 때 플랫폼이 Web Forms였던 덕에 쉽게 진입할 수 있었다고 생각합니다.

하지만 Web Forms의 생산성이 항상 좋은 결과만을 가져오지는 않습니다. 너무 쉽기 때문에 사용자(프로그래머)를 안이하게 만들어버리는 측면도 있습니다. 기계적으로 드래그, 더블 클릭, 짧은 코드 작성 프로세스만 반복하면 어느 새 내가 만든 웹 페이지는 느리고 뚱뚱해지기 쉽습니다. 50MB가 넘는 뷰 스테이트를 본적도 있습니다. 또 다른 예로, 요즘의 프로그래밍에 중요한 디자인 패턴 중 하나인 dependency injection을 떠올려보면 Spring 개발자는 개발 과정에서 자연스럽게 경험하는 반면 Web Forms 개발자들은 경험은 커녕 이름도 들어보지 못한 경우가 많습니다. 상대적으로 확장성 및 유지보수성은 떨어지겠죠. 물론 누군가 Spring 개발자중 DI의 개념과 목적을 이해하는 비율이 얼마나 되겠냐고 묻는다면 반론을 제기할 근거를 가지고 있지 않을 뿐더러 굳이 반론하고 싶은 의지도 없습니다.

사실 ASP.NET에는 ASP.NET MVC도 있고 Web Forms를 사용하더라도 충분한 고려가 수반된다면 날씬하고 민첩한 프로그램을 만들 수 있습니다. 즉 ‘ASP.NET으로 웹 사이트를 만들었더니 느리더라’라고 말하는 프로그래머가 있다면 범인은 생각보다 가까운 곳에 있다는 거죠. 그렇지만 여전히 많은 프로그래머들은 ASP.NET을 쉽고 빠르게 웹 사이트를 개발하는 수단 이상으로 생각하지 않습니다. ASP.NET은 쉽지만 느리다는 인식(또는 미신)은 높은 생산성 덕분에(?) 쉽게 사라지지 못할 것 같습니다.

좋은 결과물을 만들지 못하는 ASP.NET 프로그래머들을 비난하려는 의도는 전혀 없습니다. 모든 책임이 그들에게 있는 것도 아니며 저도 그들 중 하나니까요. 또 절대 Java를 싫어하지도 않아요! Java에 람다가 추가된 소식에 기뻐했던 사람 중 한 명입니다. 단지 ASP.NET이 Java에 비해 점유율이 높은 반면 높은 트래픽을 감당하는 역할은 대부분 Java가 맡고있는 것에 대한 단상입니다.

참고로 w3techs.com에서 조사된 2014년 1월 26일자 상위 5개 웹 서버 프로그래밍 언어(플랫폼) 점유율입니다.

조사된 점유율 전체 합이 100%가 조금 넘네요. 사소한 오류라고 생각하고 있습니다.

플랫폼 점유율 지난 달 대비 변화
1. PHP 81.7% +0.3%
2. ASP.NET 18.0% -0.4%
3. Java 2.7%
4. ColdFusion 0.8%
5. Perl 0.6%
Advertisements

웹 서버 개발 플랫폼의 역할과 위치”에 대한 5개의 생각

  1. HeeSung Park

    초기 ASP.NET이 서버컨트롤(runat=server)과 단일 폼 방식을 제공함으로써, 응용프로그램 개발자들이 상대적으로 쉽게 웹개발에 적응할 수 있게 한 점은, 응용개발자들에게 있어서는 일종에 혜택이었을지 모르나, 기존 웹개발자(특히 asp)들에게 있어서는 좌절과 실망이었죠.
    결국 컴파일된 소스코드를 보면 ViewState에 의한 무리한 정보 저장과 표준에 맞지 않은 억지스러운 서버 컨트롤, 디자이너와 협업이 되지 않아 개발자가 코딩을 일일히 수반해야 했던 수많은 어려움들이 있었던 것으로 기억합니다.
    (당시 MS에서 주관한 .net framework 3.5 2주 교육세미나에 참석해서 강사에게 “ASP.NET이 다른 언어에 비해 장점이 무엇입니까?” 란 질문을 던지자, 그 강사분 대답이 “웹하시게요? 그냥 PHP하세요.” 였었죠.)

    하지만 시간이 흘러 Razor가 나오고 MVC가 나온 현재에 이르러서는 정말 이렇게 매력적일 수 있나 싶을 정도이며, vs기반의 MVC 개발을 하다가 다른 IDE에서 소스좀 볼라 치면, 벌써 눈이 피로해지더군요. (누구말로는 눈이 썩는다고…)

    한국에서도 어서 빨리 .NET framework기반의 프로젝트가 많이 활성화 됐으면 좋겠습니다.

    응답
    1. Gyuwon 글의 글쓴이

      저는 전자 쪽이었습니다. Win32 API, MFC, Windows Forms 개발하다가 어쩔 수 없는 상황때문에 웹 프로그래밍을 시작한 것이 Web Forms 였죠. 그렇게 저도 꽤 오랫동안 웹을 잘 못 이해하고 있었습니다. 뭐 지금이라고 이해도가 높은건 아닙니다. 아하하…

      응답
  2. Geunho Kim

    웹에 대한 이해도 부족하고, Spring에 대한 경험도 없지만,
    Java가 서버 사이드에서 높은 트래픽을 감당하는데 가장 많이 쓰인다는 것이 재미있는것 같습니다. (JVM 에서 돌기에, 다른 언어에 비해 느리다는 것은 완전히 옛말인가봐요 🙂

    가끔씩 들려 좋은 글 읽고 갈게요~!

    응답
    1. Gyuwon 글의 글쓴이

      근호씨가 들러주셨군요! 🙂
      네이티브 언어를 제외하고 언어별 성능에 대한 평가는 매우 복잡하지요.
      혹시 고성능 Java 서버에 대해 관심 있으시다면 Vert.x에 대해 한 번 알아보세요.

      응답
  3. 남뉴

    재밌는 글 잘봤습니다. 국내에선 거의 자바만 해서 ASP.NET는 전세계적으로 망했다는 글을 자주 보게 되고, ASP.NET이나 VS관련 블로그 글만 보면 비판이 아닌 비난으로 도배되어 있을 정도죠.
    실제 자바가 하이 트래픽으로 쓰고 있는 이유는 안드로이드덕분입니다.^^ VS로도 안드로이드나 맥을 같이 쓸 수 있는 기능을 강화해야 할듯 하네요. 단순히 윈도우 폰만들 보는게 아니구요

    응답

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중