웹 애플리케이션: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
문서 내용을 ‘ㅋㅋㅋ’으로 교체
218.55.55.230(토론)의 5751531판 편집을 되돌림
1번째 줄:
{{정리 필요}}
ㅋㅋㅋ
[[소프트웨어 공학]]적 관점에서 '''웹 애플리케이션'''(web application) 또는 '''웹 앱'''은 [[인터넷]]이나 [[인트라넷]]을 통해 [[웹 브라우저]]에서 이용할 수 있는 응용 소프트웨어를 말한다.
 
웹 애플리케이션은 클라이언트로서 웹 브라우저를 사용하는 사람이 많기 때문에 인기를 누리고 있다. 수천만 대의 [[개인용 컴퓨터|PC]]에 굳이 소프트웨어를 배포해서 설치하지 않아도 웹 애플리케이션을 유지 관리할 수 있다는 점이 장점 중에 하나이다. 웹 애플리케이션은 웹 메일, 온라인 전자상거래 및 경매, 위키, 인터넷 게시판, 블로그 및 MMORPG 게임 등 다양한 기능을 구현할 수 있다.
 
== 역사 ==
초기의 클라이언트-서버 컴퓨팅 환경에서 각 응용 소프트웨어들은 저만의 사용자 인터페이스를 가지고 있고 사용자 PC마다 따로 설치하여야 했다. 서버 환경이 바뀌면 클라이언트 응용 프로그램도 업그레이드해야 하고 이에 따라 기술 지원 비용은 증가하고 생산성은 떨어지게 되었다.
 
이와 대조적으로 웹 애플리케이션은 웹 브라우저가 지원하는 HTML/XHTML 같은 표준 형식의 웹 문서 조합을 동적으로 만들어 내는 것이다. 동적 기능을 수행하는 자바 스크립트라는 표준 언어가 클라이언트 동작을 담당한다. 일반적으로 개별 웹 페이지는 정적 문서로 웹 브라우저로 배포되지만, 웹 문서가 연속적으로 전달되고 문서 마크업에 포함된 웹폼을 통해 정보를 주고 받을 수 있기 때문에 사용자에게 인터렉티브한 경험을 얻게 한다. 웹 브라우저는 웹 문서를 해석하는 기능을 수행한다.
 
== 인터페이스 ==
웹 인터페이스가 클라이언트의 기능에 제한을 주는 일은 거의 없다. [[자바 (프로그래밍 언어)|자바]], [[자바스크립트]], [[DHTML]], [[어도비 플래시|플래시]]와 기타 기술들을 활용하면 응용 프로그램에 특정적인 방법, 이를테면 화면에 그림을 그리거나 소리를 재생하거나 키보드와 마우스에 접근하는 것이 모두 가능하다. [[드래그 앤드 드랍]]과 같은 일반적인 기법도 앞의 기술로 가능하다. 웹 개발자는 클라이언트측 스크립트를 활용해서 기능을 추가하는 경우가 많은데, 특히 페이지를 다시 불러오지 않으면서 인터렉티브한 경험을 구현하는 것이 그러한 경우이다. 최근에는 클라이언트측 스크립트와 서버측 기술(이를테면 PHP)을 함께 활용하는 기술들이 개발되고 있다. 다양한 기술을 조합한 웹 개발 기법인 [[Ajax (programming)|Ajax]]는 더욱 인터렉티브한 경험을 제공하는 기술의 예이다.
 
== 기술적 고려 ==
웹 애플리케이션을 만들 때 중요한 점은 클라이언트의 운영 체제의 종류나 버전에 상관 없이 작동되도록 표준 브라우저 기능을 사용해야 한다는 것이다. 이는 [[마이크로소프트 윈도]], [[맥 오에스 텐]], [[리눅스]] 등의 [[운영 체제]]에 각각의 클라이언트를 만드는 것보다 한 번 만들어서 거의 모든 곳에 쓰일 수 있도록 해야 한다는 것이다. 하지만 [[HTML]], [[CSS]], [[DOM]] 등과 같은 다양한 기술들의 불완전한 구현은 웹 애플리케이션의 개발에 많은 문제를 야기할 수 있다. 웹 애플리케이션의 사용자 인터페이스를 디자인 할 때에는 사용자들이 글자 크기, 색, 글꼴을 바꿀 수 있다는 점을 염두에 두고 레이아웃을 구현하여야 한다.
 
덜 흔하게 쓰이지만, 다른 접근 방법은 [[어도비 플래시]]나 [[자바 애플릿]]를 사용하여 사용자 인터페이스의 전부나 일부를 구현하는 것이다. 많은 웹 브라우저들이 이러한 기술들을 플러그인과 같은 기능을 통해 지원하고, 이것들은 브라우저의 설정 문제를 비켜나가게 할 수 있게 됨으로써, 클라이언트마다 다른 자바나 플래시의 구현이 문제가 될 수는 있겠지만 플래시나 자바에 기반한 애플리케이션들은 쉽게 구현될 수 있다. 구성이 클라이언트가 더 많은 역할을 하는 전통적인 클라이언트-서버 구조와 비슷하므로 "웹 애플리케이션"이란 용어가 논쟁거리가 되었다. 이에 따른 대체 용어는 "[[리치 인터넷 애플리케이션]]"이다.
 
== 구조 ==
다양한 변형이 존재하지만, 웹 애플리케이션은 주로 [[3계층]] 애플리케이션으로 구축된다. 가장 흔한 구성으로, 웹 브라우저가 첫 번째 계층이고, 동적 웹 콘텐츠 기술([[액티브 서버 페이지|ASP]], [[ASP.NET]], [[공용 게이트웨이 인터페이스|CGI]], [[ColdFusion]], [[JSP]], [[PHP]], [[파이썬]], [[루비 온 레일즈]]) 과 같은 것들의 엔진이 중간 계층이며, 데이터베이스가 세 번째 계층이다. 웹 브라우저는 데이터베이스에 쿼리를 보내고, 자료를 업데이트하며, 사용자 인터페이스를 만드는 중간 계층에게 요청을 보낸다.
 
== 사업 용도 ==
최근 응용 소프트웨어 회사에서 취하는 전략은 이전에 로컬 응용 프로그램으로 배포된 소프트웨어에 웹 접근을 제공하는 것이다. 응용 프로그램의 종류에 따라, 완전하 다른 브라우저 기반의 인터페이스를 요구할 수도 있으며, 아니면 기존의 응용 프로그램에 적응하여 다른 프레젠테이션 기술을 사용해야 할 수도 있다. 이러한 프로그램들은 사용자가 로컬 하드 드라이브에 별도의 프로그램을 설치하지 않고 달마다, 또는 해마다 응용 소프트웨어 사용비를 내게 한다. 이러한 전략을 따르는 회사는 [[애플리케이션 서비스 제공업체]] (ASP)로 알려져 있으며 ASP들은 현재 소프트웨어 산업에서 크나큰 집중을 받고 있다.
 
 
== 웹 애플리케이션 작성 ==
많은 [[웹 애플리케이션 프레임워크]]들이 프로그래머가 프로그램의 고수준 설명을 정의하게 함으로써 빠른 애플리케이션 개발을 용이하게 해 준다. 또한, 이 모델에 맞는 플랫폼이 많지는 않지만, [[인터넷 운영 체제]]에 기반한 애플리케이션의 개발에 대한 잠재성도 있다.
 
웹 애플리케이션 프레임워크의 사용은 코드를 단순하게 만들고, 한 팀이 기반에만 집중하게 함으로써 프로그램의 에러를 줄일 수 있다. 외부의 [[해커]]의 공격 시도에 노출된 애플리케이션들은 프로그램의 오류에 의한 보안 문제는 큰 문제이다. 웹 애플리케이션 프레임워크는 [[POST 후 GET]]과 같은 것들의 사용을 촉진할 수 있다.
 
[http://www.webappsec.org Web Application Security Consortium] (WASC), [http://www.cgisecurity.com CGI Security], [http://www.owasp.org OWASP]과 같은 프로젝트는 웹 애플리케이션의 보안 문제를 어떻게 피하는지에 대한 문서를 작성하는 데 주의를 기울여 개발되었다.
 
<!--
== 같이 보기 ==
{|
|- valign=top
| width=50% |
*[[AJAX]]
*[[Active Server Pages|ASP]]
*[[Alpha Five]]
*[[ASP.NET]]
*[[CSS]]
*[[ColdFusion]]
*[[Content management framework]]
*[[Dabble DB]]
*[[Django (web framework)|Django]]
*[[Web document|Dynamic web document]]
*[[JavaServer Pages|JSP]]
*[[LAMP (software bundle)|LAMP: Linux, Apache, MySQL and Perl/Python/PHP]]
| width=50% |
*[[Ruby On Rails]]
*[[Pylons (web framework)|Pylons]]
*[[Seaside (software)|Seaside]]
*[[Software development]]
*[[TurboGears]]
*[[Twisted (software)|Twisted]] (Python based webapp framework)
*[[List of web application frameworks]]
*[[World Wide Web Consortium]] (Web standards)
*[[qDecoder]] (Library for Web Applications)
*[[Zope]] (Python based webapp framework)
|
|}
-->
 
== 같이 보기 ==
* [[DHTML]]
* [[HTML]]
* [[HTML5]]
* [[CSS3]]
* [[웹 애플리케이션 서버]]
* [[자바스크립트]]
* [[웹 2.0]]
* [[웹 서비스]]
* [[웹 애플리케이션 프레임워크]]
* [[파이썬 (프로그래밍 언어)|파이썬]]
* [[펄]]
* [[PHP]]
 
== 바깥 고리 ==
* [http://www.joelonsoftware.com/articles/APIWar.html 마이크로소프트가 API 전쟁에서 어떻게 졌는가] ? 어떻게 웹 애플리케이션이 윈도 응용 프로그램을 대체하고 있는지에 대해 논한다.
* [http://www.whatwg.org/specs/web-apps/current-work/ 웹 애플리케이션 1.0]은 어떻게 웹 애플리케이션이 동작할 것인지에 대해 기록해 놓은 미완성 문서이다.
* [http://dmoz.org/Computers/Internet/On_the_Web/Web_Applications/ 웹 애플리케이션]: [[오픈 디렉터리 프로젝트]]
* [http://msdn.microsoft.com/webclientfactory 웹 클라이언트 소프트웨어 팩토리] ? 마이크로소프트 운영 체제에서 컴포지트 웹 및 페이지 플로 응용 프로그램을 만드는 법에 대해 논한다.
<!--
*[http://www.paulgraham.com/road.html The Other Road Ahead] ? An article arguing that the future lies on the server, not rich interfaces on the client-->
 
[[분류:월드 와이드 웹]]
[[분류:소프트웨어 구조]]
[[분류:웹 애플리케이션| ]]
[[분류:웹 개발|애플리케이션]]
 
[[ar:تطبيق وب]]
[[ca:Aplicació Web]]
[[cs:Webová aplikace]]
[[de:Webanwendung]]
[[el:Διαδικτυακή εφαρμογή]]
[[en:Web application]]
[[es:Aplicación web]]
[[fi:Web-sovellus]]
[[fr:Application Web]]
[[hy:Ցանցի կիրառական ծրագիր]]
[[id:Aplikasi web]]
[[it:Applicazione Web]]
[[ja:ウェブアプリケーション]]
[[nl:Webapplicatie]]
[[no:Webapplikasjon]]
[[pl:Aplikacja internetowa]]
[[pt:Aplicação Web]]
[[ru:Веб-приложение]]
[[sk:Webová aplikácia]]
[[ta:வலைச் செயலி]]
[[th:โปรแกรมประยุกต์บนเว็บ]]
[[uk:Веб-застосунок]]
[[vi:Ứng dụng web]]
[[zh:网络应用程序]]