웹 애플리케이션이란, 웹 브라우저와 웹
기술을 사용하여,
사용자와 대화하는
대화식으로서
인터넷을 이용하는 일종의 컴퓨터 프로그램을 말한다.
일반적으로 웹
사이트(Web Site)와 혼동하기 쉬운데,
엄밀히 말하면 웹 사이트(Web Site)는
기본적으로 웹
페이지의 모음으로
지금의 수 많은 웹과 같이 콘텐츠를 제공하는
사용자와 대화하는 식의 웹이 아니였다.
가장 대표적인 웹 사이트의 예로서는
과거의 블로그나 뉴스 페이지를
예로 드는 것이 알기 쉬울 것이다.
과거의 블로그들이나 뉴스 페이지들은
페이지들을 모아놓은 정말 순수한 웹 사이트였다.
즉, 과거의 블로그들과 뉴스 페이지들은
정해진 웹 페이지를 보여주는 웹 페이지의 모음에 불과했다.
물론 지금의 블로그는 경계가 무너지면서
검색 기능, 댓글 기능 등
여러가지 애플리케이션이 포함된 웹 사이트가 되어버렸다.
웹 사이트와 웹 애플리케이션의 경계가 무너진 것이다.
그렇기에 지금의 블로그들은
동적 페이지 기술들과 대화형 방식 등의
다수의 애플리케이션들이 들어가 있기 때문에
엄밀히 말하면 웹 사이트라고 말할 수는 없을 것이다.
결국 본래의 웹 사이트라는 것은
지금과 같이 댓글을 달고, 검색을 하며
좋아요와 싫어요를 누르고 이러한 반응으로서
바로 페이지의 화면으로 나타나는
대화식의 웹 애플리케이션이 아니라는 것이다.
따라서, 순수하게 웹 사이트라고 할 수 있는 것은
단순히 HTML으로만 이루어진 링크로 연결 되어 있는
과거의 뉴스 페이지나 블로그들 뿐이다.
반대로 웹 애플리케이션은
사용자와 대화하는 식으로 기능을 수행하기 때문에
웹 애플리케이션을
이용하는 사용자의 요구에 따라
웹에서 다른 이용자에게 메시지를 보내거나
댓글을 다는
등의 애플리케이션이 동작해야 한다.
가장 대표적인 예로
댓글을 달 수 있고,
좋아요와 싫어요와 같은 애플리케이션을 포함하는
사용자와 대화식으로 작동하는
Facebook을 예로 들 수 있을 것이다.
이 기능들이 동작할 수 있는 것은
내부의 수 많은 크고 작은 애플리케이션들이 있기 때문이다.
반대로 순수한 웹페이지라면
할 수 있는 것이 라고는 정해진 링크를 타고
다른 페이지로 들어가는 것 말고는 아무 것도 할 수 없다.
링크는 단지 정해진 태그로 표현되는 것이기 때문에
애플리케이션과는 거리가 매우 멀다고 볼 수 있다.
적어도 애플리케이션이라고 하려면
입력을 받고 알고리즘을 통해 산출하여
원하는 출력 값을 얻어내야만 한다.
지금에서는 흔히 볼 수 있는
검색 포털 사이트에서 볼 수 있는 위와 같은 기능들은
웹 페이지 내부에 있는 다수의 애플리케이션이 동작하면서 화면에 출력되는 것 이다.
따라서 웹 애플리케이션은
웹 사이트보다
인터페이스, 구현의 측면에서
다양한 첨단 기술이
요구되기 때문에 구현이 어렵다고 할 수 있다.
왜냐하면, 순수한 웹사이트는
단순히 페이지를 묶기만 하면 되기 때문에 별다른 기술이 필요 없다.
HTML 태그만 알고 있다면 말이다.
결국 웹 애플리케이션 이라는 것은
순수한 웹 사이트와 단순하게 비교하자면,
내부의 프로그래밍 언어로 작성되어진
특수한 애플리케이션(혹은 프로그램)이 있느냐 없느냐로 구분해 볼 수 있다.
현재에 들어서는 위에서도 언급했듯이
웹 사이트로 분류되어진 것들도
필요에 의해 검색이나 댓글 기능 등의
애플리케이션들이 포함되면서 대화식으로 변하고 있기 때문에
사실상 웹 애플리케이션과의
경계가 무너졌다고 볼 수 있다.
따라서 신뢰있는 기관, 혹은 단체에 의해
대부분의 개발자들이 납득할 만한 정의가 제시되고 정립되지 않는다면
현재의 웹 애플리케이션과 웹 사이트를 구분하려고 하는 것은
의미가 퇴색된다고 볼 수 있다.
과거 초기의 웹 애플리케이션은
클라이언트-서버 컴퓨팅 환경에서의
각 응용 소프트웨어 마다 UI를 가지고 있었으며,
사용자 PC마다 따로 설치했어야
했다.
왜냐하면, 현재는 HTTP이라는 통일된 프로토콜을 사용하지만
과거에는 대개 회사마다 독자적인 통신 프로토콜을 사용했었기 때문이다.
과거건 지금이건
독자적인 규격을 가지는 것은 회사 입장에서 매우 큰 이득이다.
소니의 블루레이나
애플의 라이트닝 커넥터를 생각한다면 이해하기 편할 것이다.
하지만, 적어도 Web에서는
이 독자적인 규격을 가지는 것은
위에서 서술했듯이 매우 큰 비용을 초래했다.
왜냐하면 서버 환경이
바뀌면
그에 따라 클라이언트 측 PC의
응용프로그램들도 업그레이드 해야 했으며,
이에 따른 기술 지원
비용이 증가함에 따라
생산성은 떨어지게 되었기 때문이다.
이러한 과거의 웹 애플리케이션과는 대조적으로
현재의 웹 애플리케이션(Web
Application)은
HTTP라는 표준 프로토콜의 정립으로 인해
웹 애플리케이션을 제공하는 기업의 유지 비용이 줄어들었다.
또한 비교적 최근에 들어서 이를 뛰어넘어
정적일 수 밖에 없는 웹 문서를
정적인 페이지 뿐만 아니라 동적으로 만들어 낼 수 있게 되었다.
동적 기능을 수행하는
자바 스크립트(JavaScript)라는
표준 언어가 클라이언트 동작을 담당한다.
과거에는 웹 페이지는
단순히 정적 문서로서 웹 브라우저로 배포되지만,
현재에는 웹 문서가 연속적으로
전달되고
웹의 정보를 담은 웹 폼(Form)을 통해 정보를
주고 받을 수 있기 때문에
사용자에게
데이터를 입력하게 할 수 있음은 물론이고
Ajax, axis, fetch와 같은 비동기 통신 기법의 정립으로 인해
과거 웹 애플리케이션의 한계를 개선할 수 있게 되었다.
따라서 현재 웹 애플리케이션을
만들 때 중요한 점은
사용자의 운영 체제의 종류나 버전에 상관없이
작동되도록 표준 브라우저
기능을 사용 가능해야 하게 한다는 점이다.
즉, 어느 운영체제건 간에
어떤 웹 브라우저 간에 구동이 가능해야 한다는 것이다.
하지만, HTML,
CSS, DOM과 같은 다양한 기술을 이용한
불완전한 구현,
특히 브라우저 마다 다른 DOM의 경우
웹 애플리케이션의 개발에 많은 문제를
야기 할 수 있다.
따라서 가장 이상적인
것이지만
현실적으로는 불가능에 가깝다고 할 수 있다.
현실에서는 다양한 브라우저에 대응하기 위해서는
크로스 브라우징을 해야만 한다.