서버와 클라이언트는 어떤 과정이 반복되나요?
 
ASP.NET 의 서버 모델은 아래의 그럼처럼 반복적인 추가 작업을 하게 됩니다.

[그림6] 서버 모델 프로세스
 
HTML Form 모델은 여러 개의 Form 의 구간을 두어 단지 필요한 데이터만 서버로 전송합니다.
아래 그림처럼 말이죠.

[그림7] HTML Form 모델 프로세스
 
이러한 뷰 스테이트(ViewState) 는 HTTP 파일 업로드가 되듯이 POST 로 서버로 업로드 됩니다. 즉 이 뷰 스테이트(ViewState) 양이 커지게 되면 web.config 에서 요청 데이터 사이즈의 크기를 조절해 주어야 하는 상황까지 벌어집니다.
 
<httpRuntime maxRequestLength="업로드 사이즈" />
 
그리고 우리나라의 인터넷 인프라가 아무리 발달하였다고 하여도 그것은 전적으로 다운로드 속도입니다. 대부분의 경우는 업로드 속도는 다운로드 속도에 못 미치며, 다운로드 속도의 절반도 못 미치는 경우가 대부분입니다.
 
그렇다고 업로드 속도가 해결된다고 모든 것이 해결되는 것은 아닙니다. 서버의 자원은 한정적입니다. 서버의 직/역직렬화 과정 등은 전송된 데이터의 양 만큼의 메모리 자원을 요구하게 됩니다. 즉, 알게 모르게 웹 서버는 스트레스를 받고 있으며 추가적인 코스트(Cost) 가 발생하기도 합니다.
 
이러한 면에서 HTML Form 모델은 기존 ASP.NET 서버 모델에 비해 하나의 서버에서 수십에서 수백 명의 사용자의 접속을 더 허용할 수 있습니다.
 
 
그럼 ASP 와 다를 바가 없는데요? 차라리 ASP 가 빠르겠네요.
 
ASP 와 ASP.NET 은 내부적으로 전혀 다른 구조입니다. 그리고 ASP.NET 은 ASP 의 인터프리터 방식과 비교할 때 더 나은 성능을 낼 수 있습니다.
 
ASP.NET 은 .NET Framework 과 C#(VB.NET 등) 으로 언어적 측면과 프레임워크가 제공하는 기능으로 생산성의 향상을 기대할 수 있습니다. 그리고 ASP.NET 파이프라인(Pipeline) 의 향상된 아키텍처와 보안적 측면에서 기존 ASP 에 비해 향상된 보안 기능을 제공합니다. 그리고 컴파일 언어 측면에서 성능 향상과 한번 컴파일된 어셈블리는 어셈블리 캐시에 적재되어 인터프리터 언어인 ASP, PHP 등에 비해 월등히 빠른 성능을 기대할 수 있습니다.
 

[그림8] ASP.NET 실행 모델
 
즉, ASP.NET 이 제공하는 인프라는 기존 ASP 등과 비교할 때 보다 향상된 아키텍처와 언어적 측면, 보안적 측면, 성능적 측면 등의 이점을 누릴 수 있습니다.
 
ASP.NET 의 서버 컨트롤을 사용하는 서버 모델은 변칙적인 웹 개발 방법에 불과합니다. 즉, 단일 Form 개발 방법을 통해 서버 컨트롤과 상태 유지의 장점 등으로 개발 생산성의 관점에서 시작되었습니다. ASP.NET 서버 모델의 단일 Form 방식은 성능 자체를 최적화할 방법이 없습니다.
 
즉, ASP.NET 을 사용하는 서버 모델은 HTML Form 모델의 성능을 따라갈 수 없습니다. 서버 컨트롤을 남용하는 특정 사람들에 의해 ASP.NET 이 느리다는 편견이 확산된 것이 안타까울 뿐입니다.
 
 
그럼 서버 컨트롤을 쓰지 않는 것이 결론인가요?
 
반드시 그렇게 하지 않아도 됩니다. ASP.NET 의 서버 모델은 HTML Form 방식의 개발 방법보다 여러 가지 처리에 대한 고민을 보다 단순화 할 수 있습니다. 그렇기 때문에 ASP.NET 을 입문하는데 ASP 에 비해 오히려 난이도가 쉽다고 생각합니다. 그리고 다양한 고객 또는 사용자의 요구 사항을 충족하기 위해서는 3-party 제품을 통해 복잡하고 많은 리소스가 투입되는 작업을 서버 컨트롤 하나로 단순화 시킬 수 있습니다.
 
가끔 이런 사람들을 봅니다.
 
서버 컨트롤 사용 못하게 하는 프로젝트도 있나요? 차라리 ASP 로 개발하자고 하세요”
 
서버 컨트롤은 ASP.NET 의 서버 모델이 제공하는 단지 보너스 정도라고 생각합니다. 서버 컨트롤이 ASP.NET 의 전부이며, 서버 컨트롤을 사용하지 않는 것은 ASP.NET 개발이 아니라고 단언하면 안됩니다. 말했듯이 ASP.NET 의 서버 모델이 기본적인 웹 개발과 비교하면 변칙적인 방법에 불과합니다.
 
ASP.NET 을 서버 모델과 HTML Form 모델로 개발하였을 때, 절대 ASP.NET 서버 모델의 개발 방법은 HTML Form 모델로 개발하는 성능의 꽁무니도 못 따라옵니다. 혹시 이견이 있다면 실무 프로젝트에서 같은 사이트를 양측 모두 적용해 보셨나요? 요즘 이런 개그가 있죠. “안 해보셨으면 말을 하지 마세요!”
 
개발하는 프로젝트의 성격과 사용자는 유저에 따라 두 개발 방식의 적절한 선택이 필요하고 두 모델에 대한 이해가 필요합니다. 그리고 ASP.NET 을 바라보는 올바른 안목이 필요합니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 천이백 2015.01.28 19:11 신고 Address Modify/Delete Reply

    구글링하다가 우연히 들어오게 되어서 글을 남깁니다. 이 글을 보고 답변을 다실 지는 모르겠지만
    ASP.NET의 서버 모델은 변칙적인 방법에 불과하다는 생각이 지금도 유효하신 건가요?
    ASP.NET에 대한 평가를 하려면 PHP나 JSP 또는 ASP와 비교를 해야지 html 과 비교하는 것 자체가 제가 보기엔 어불성설인 것 같네요.
    http://www.wrensoft.com/zoom/benchmarks.html
    위의 벤치마크에서도 나와 있지만 asp.net은 성능상에도 다른 서버 프로그래밍과 비교해서 뒤처지지 않는 것으로 나오네요. MS의 많은 천재 개발자들이 편법을 이용해서 프로그래밍 언어를 개발할 리도 없다고 생각하고요.
    그리고 또 한가지 국내 최대 쇼핑몰 중의 하나인 지마켓이나 옥션이 모두 asp.net 기반으로 돌아가는 쇼핑몰입니다. 이런 대형 쇼핑몰에서 아무런 문제없이 사용하고 있는 asp.net이 서버 측 성능상의 문제로 트래픽 때문에 서버가 중지된 적이 있다는 소리는 아직 한번도 안들어 본 것 같습니다만....
    웹 개발을 하는 사람이 옥션이나 지마켓보다 훨씬 더 큰 대규모의 사이트를 개발하고 있다면 모를까,단지 서버측의 부하가 좀 생긴다고 해서 여러 장점을 가진 서버 기술을 사용하지 못할 이유는 전혀 없는 것 같습니다.
    그리고 데이터베이스와 연동하는 서버측 기술도 MS에서 제공하는 것이 데이터가 계속 주고 받아야 하는 서버에 상당히 부담을 주는 연동 기술도 있지만 dataset 과 같이 서버의 자원을 가져온 다음에 연결을 끊어 주는 다양한 기술들이 있는데 이런 것만 적절히 사용해도 현재의 컴퓨터 환경에서는 그리 큰 문제가 될 것이라고는 전혀 생각이 안 듭니다.

    • 땡초 POWERUMC 2015.01.29 12:23 신고 Address Modify/Delete

      내용을 모두 이해하시지 못하신 것 같아 재차 설명을 드립니다.

      네트워크 오버헤드를 설명하기 위해 ASP.NET 이 랜더링하는 HTML 의 양을 설명한 것입니다.

      그리고 ASP.NET 을 사용하는 것은 성능 문제가 아니라, ASP.NET + 서버 컨트롤을 사용한 경우 성능 문제를 야기한다는 것입니다.
      이유는 물론 글에 설명되어 있습니다.

      그리고 옥션과 지마켓이 ASP.NET 웹 개발 프레임워크를 쓰는 것이지, ASP.NET + 서버컨트롤 방식을 사용하지는 않습니다.
      ASP.NET + 웹폼 방식으로 개발하면 기대하는 성능을 얻을 수 있습니다.
      최근 유행하는 ASP.NET MVC 도 웹폼 방식이고요.