맨위로가기

웹 애플리케이션

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

웹 애플리케이션은 웹 기술을 사용하여 구축된 응용 프로그램으로, 웹 브라우저를 통해 실행되며 다양한 기능과 사용자 인터페이스를 제공한다. 1990년대 월드 와이드 웹의 등장과 함께 발전해 왔으며, 초기에는 정적 웹 페이지에서 시작하여 CGI, Java Servlet, Ajax, HTML5, 프로그레시브 웹 앱(PWA) 등의 기술 발전을 거쳤다. 웹 애플리케이션은 클라이언트-서버 구조를 기반으로 하며, 3계층 또는 n계층 아키텍처를 사용하여 데이터베이스, 비즈니스 로직, 사용자 인터페이스를 구성한다. 보안, 크로스 플랫폼 지원, 사용자 인터페이스 디자인, 웹 애플리케이션 프레임워크, 통신 프로토콜, 데이터 바인딩, 데이터 액세스 등 다양한 기술적 측면을 고려하여 개발되며, 미디어 재생, 오프라인 지원, 접근 제어, 캐시 및 동기화 등의 기능을 제공한다. 최근에는 애플리케이션 서비스 제공업체(ASP)를 통해 소프트웨어 접근성을 높이는 데 활용되고 있다.

더 읽어볼만한 페이지

  • 웹 개발 - Ajax
    Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다.
  • 웹 개발 - WebXR
    WebXR은 웹 브라우저에서 가상 현실 및 증강 현실 콘텐츠를 구현하기 위한 API로, 다양한 장치 및 플랫폼에서 몰입형 웹 경험을 제공하며, 구글, 메타, 모질라 등 여러 기업과 단체가 개발에 참여하여 지속적인 업데이트를 통해 기능 향상을 목표로 한다.
  • 월드 와이드 웹 - 구글
    구글은 래리 페이지와 세르게이 브린이 개발한 웹 검색 엔진에서 출발하여 검색 기술 혁신을 통해 유튜브, 안드로이드 등 다양한 서비스를 제공하는 세계적인 기술 기업으로 성장했지만, 개인정보보호 및 독점 논란에도 직면하고 있다.
  • 월드 와이드 웹 - 온라인 언론
    온라인 언론은 인터넷을 통해 뉴스 및 정보를 제공하며, 디지털 기술 발달과 함께 성장하여 시민 저널리즘 부상, 정보 전달 속도 혁신 등의 특징을 보이지만 정보 신뢰성 문제, 전통 언론 쇠퇴 등의 과제를 안고 있다.
  • 소프트웨어 구조 - Ajax
    Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다.
  • 소프트웨어 구조 - 멀티테넌시
    멀티테넌시는 단일 애플리케이션 인스턴스로 여러 고객에게 서비스를 제공하여 SaaS 및 클라우드 환경에서 비용과 관리 효율성을 높이고 데이터 활용 가치를 창출하는 소프트웨어 아키텍처 방식이다.
웹 애플리케이션

2. 역사

웹 애플리케이션의 역사는 초기 클라이언트-서버 모델의 한계를 극복하는 과정에서 시작되었다. 초기의 웹은 주로 정적 웹 페이지들이 하이퍼링크로 연결된 형태였으나, CGI(Common Gateway Interface)의 등장은 서버 측에서 사용자의 요청에 따라 동적으로 콘텐츠를 생성하는 웹 애플리케이션의 가능성을 열었다.

1995년 넷스케이프가 클라이언트 측 스크립팅 언어인 자바스크립트를 도입하면서, 웹 페이지 내에서 동적 HTML 요소를 활용한 사용자 인터페이스 구현이 가능해졌다. 이후 서버 측에서는 Java Servlet, Apache HTTP Server의 모듈로 동작하는 PHP (mod_php[4]), 마이크로소프트의 Active Server Pages(ASP) 등 다양한 기술들이 등장하며 웹 애플리케이션 개발 환경을 발전시켰다.

웹 애플리케이션이라는 개념은 1999년 Java Servlet Specification 버전 2.2를 통해 공식적으로 소개되었다. 2000년대 초반에는 Ajax(Asynchronous JavaScript and XML) 기술이 부상하면서, 웹 페이지 전체를 새로고침하지 않고도 서버와 데이터를 주고받으며 화면 일부만 갱신하는 것이 가능해졌다. 이는 Gmail, 구글 지도와 같은 서비스들의 등장으로 이어지며 웹 애플리케이션의 사용자 경험(UX)을 크게 향상시키는 중요한 전환점이 되었다.

HTML5 표준의 발전과 함께 웹 기술은 꾸준히 진화했으며, 최근에는 스마트폰 환경에서 네이티브 앱과 유사한 경험을 제공하는 것을 목표로 하는 프로그레시브 웹 앱(PWA) 기술이 주목받고 있다[5]. 또한 클라우드 컴퓨팅의 발전과 함께 자체 서버 대신 클라우드 서비스를 활용하거나, 여러 마이크로서비스API를 통해 연동하여 구성하는 분산 컴퓨팅 방식의 웹 애플리케이션 개발도 활발히 이루어지고 있다.

2. 1. 초기 모델

초기 클라이언트-서버 컴퓨팅 환경에서는 응용 소프트웨어마다 고유한 사용자 인터페이스를 가졌고, 이를 사용자의 개인용 컴퓨터에 각각 설치해야 했다. 서버 환경이 변경되면 클라이언트 응용 프로그램도 업그레이드해야 했기 때문에 기술 지원 비용이 증가하고 생산성이 저하되는 문제가 있었다. 또한, 대부분의 애플리케이션은 특정 컴퓨터 아키텍처나 운영 체제에 종속되어 다른 시스템으로의 이식이 어려웠다.

1990년 월드 와이드 웹이 등장했을 당시 웹은 주로 정적 웹사이트들이 하이퍼링크로 연결된 형태였다. 사용자는 웹 서버에 저장된 HTML 파일을 웹 브라우저로 열어보고 링크를 따라 넷 서핑을 했다. 이후 CGI(Common Gateway Interface)가 등장하면서 사용자의 입력에 따라 서버가 동적으로 HTML 문서 같은 자원을 생성하여 반환하는 것이 가능해졌다. 이를 통해 다양한 형태의 초기 웹 애플리케이션, 즉 동적 웹 페이지 구축의 길이 열렸다.

웹 애플리케이션은 웹 브라우저가 해석할 수 있는 HTML이나 XHTML 같은 표준 형식의 웹 문서를 동적으로 생성하여 사용자에게 제공하는 방식이다. 1995년 넷스케이프는 클라이언트 측 스크립팅 언어인 자바스크립트를 도입하여 개발자들이 동적 HTML(DHTML) 요소를 사용자 인터페이스에 추가할 수 있도록 했다. 이를 통해 전체 웹 페이지를 서버로부터 다시 로드하지 않고도 데이터 유효성 검사나 페이지 일부 표시/숨기기 같은 작업이 클라이언트 측에서 가능해졌다. 웹 브라우저는 이러한 웹 문서를 해석하고 실행하는 역할을 담당하며, 사용자에게 연속적인 정보 전달과 상호작용 경험을 제공한다.

웹 애플리케이션이라는 개념은 1999년 발표된 Java Servlet Specification 버전 2.2에서 자바 언어를 통해 공식적으로 소개되었다. 이 시기에는 자바스크립트XML이 이미 개발되어 있었고, XMLHttpRequest 객체는 마이크로소프트의 Internet Explorer 5에 ActiveX 객체 형태로 막 도입된 상태였다. CGI 이후 서버 측에서는 Java Servlet과 같은 Jakarta EE 기술, Apache HTTP Server의 모듈로 동작하는 PHP (mod_php[4]), 마이크로소프트가 개발한 Active Server Pages(ASP) 등이 사용되었다.

2000년대 초반에 들어서면서 마이스페이스 (2003), Gmail (2004), Digg (2004), 구글 지도 (2005)와 같은 서비스들이 등장하며 웹 애플리케이션은 더욱 상호작용적인 형태로 발전했다. 특히 웹 페이지 전체를 새로고침하지 않고도 서버와 데이터를 주고받으며 필요한 부분만 동적으로 업데이트하는 기술이 중요해졌는데, 이러한 방식은 2005년 Ajax(Asynchronous JavaScript and XML)라는 이름으로 널리 알려지게 되었다.

이러한 초기 웹 애플리케이션 모델은 클라이언트 측에 별도의 프로그램을 설치할 필요 없이 웹 브라우저만 있으면 다양한 환경에서 접근할 수 있다는 장점을 가졌다(크로스 플랫폼). 또한 업데이트가 서버 측에서 이루어지므로 사용자는 항상 최신 버전을 이용할 수 있었다.

2. 2. 웹 2.0과 발전

2000년대 초반, 웹 기술은 사용자와의 상호작용을 강화하는 방향으로 발전하기 시작했다. 이 시기를 흔히 웹 2.0이라고 부르기도 한다. 대표적인 사례로 마이스페이스 (2003), Gmail (2004), Digg (2004), 구글 지도 (2005) 등이 등장하며 웹 애플리케이션의 가능성을 보여주었다.

이러한 서비스들은 사용자가 웹 페이지 전체를 새로 불러오지 않고도 서버와 데이터를 주고받으며 화면의 일부만 동적으로 변경할 수 있게 만들었다. 예를 들어, Gmail에서는 메일 목록을 보면서 페이지 이동 없이 새 메일을 확인하거나 보낼 수 있게 되었고, 구글 지도에서는 지도를 부드럽게 이동하고 확대/축소할 수 있게 되었다.

이러한 상호작용성의 핵심에는 2005년에 Ajax (Asynchronous JavaScript and XML)라는 이름으로 알려지게 된 기술이 있었다. Ajax는 자바스크립트XMLHttpRequest 객체 (초기에는 마이크로소프트인터넷 익스플로러 5에 ActiveX 객체 형태로 도입됨)를 사용하여 백그라운드에서 서버와 통신하는 방식을 의미한다. 이를 통해 웹 애플리케이션은 데스크톱 애플리케이션과 유사한 사용자 경험을 제공할 수 있게 되었다.

2. 3. 프로그레시브 웹 앱 (PWA)

'''프로그레시브 웹 앱'''(Progressive Web App, PWA)은 일반 웹페이지(웹사이트)와 모바일 앱의 특징을 결합한 하이브리드 형태의 웹 애플리케이션이다.[4] 이 용어는 2015년 디자이너 프랜시스 베리먼과 구글 크롬 엔지니어 알렉스 러셀이 처음 만들었다. PWA는 기술이 발전하면서 등장했으며, 특히 스마트폰 환경에서 네이티브 앱과 유사한 사용자 경험을 제공하는 것을 목표로 한다.

PWA는 최신 웹 브라우저가 지원하는 새로운 기술들을 활용한다. 이를 통해 처음에는 웹 브라우저 탭 안에서 실행되지만, 나중에는 인터넷 연결 없이 오프라인 상태에서도 작동할 수 있으며, 사용자가 직접 URL을 입력하지 않고도 홈 화면 등에서 바로 실행할 수 있는 장점을 가진다.

1990년대 월드 와이드 웹 등장 이후 웹 기술은 정적인 페이지에서 CGI, 자바 서블릿, PHP, ASP 등을 거쳐 동적인 웹 애플리케이션으로 발전해왔고, 이후 Ajax, HTML5 등의 기술이 등장하며 사용자 경험을 향상시켜 왔다. 이러한 기술 발전의 연장선상에서, 2019년 현재에도 PWA는 네이티브 앱과 동등한 경험을 제공하기 위해 활발히 개발되고 있는 기술 분야이다[5].

3. 구조

웹 애플리케이션은 기본적으로 클라이언트-서버 모델을 따르며, 월드 와이드 웹을 기반으로 하는 분산 컴퓨팅의 한 형태로 볼 수 있다. 대표적인 웹 애플리케이션에서는 웹 브라우저HTTP 프로토콜을 이용해 웹 서버와 통신하며 HTML 문서를 받아 화면에 표시한다. 이때 DOM을 통해 JavaScript가 웹 페이지의 내용을 동적으로 조작하고, 필요에 따라 웹 서버와 데이터를 주고받으며 상호작용한다.

웹 애플리케이션을 구현하는 기술 스택은 매우 다양하며, 명확하게 정의된 기준은 없다. 동적인 웹 페이지와의 경계도 모호한 편이다.

웹 애플리케이션의 기능이 점차 강화되고 복잡해짐에 따라, 이러한 복잡성을 관리하기 위해 다양한 소프트웨어 아키텍처가 고안되고 적용되고 있다. 웹 애플리케이션은 네트워크를 통한 분산 환경에서 동작하므로, 그 특성에 맞는 아키텍처를 선택하는 것이 중요하다. 가장 흔한 구조는 3계층 아키텍처이지만, 애플리케이션의 복잡도에 따라 N계층 아키텍처 등 더 세분화된 구조가 사용되기도 한다. 최근에는 여러 개의 작은 마이크로서비스들을 API를 통해 연결하여 하나의 웹 애플리케이션을 구성하는 방식도 많이 사용되고 있어, 분산 컴퓨팅으로서의 특징이 더욱 강화되는 추세이다.

3. 1. 3계층 아키텍처

다양한 변형이 존재하지만, 웹 애플리케이션은 주로 3계층 아키텍처로 구축된다. 가장 일반적인 형태에서 세 계층은 '프레젠테이션', '애플리케이션', '저장'이라고 불린다.

  • 프레젠테이션 계층 (Presentation Layer): 첫 번째 계층으로, 웹 브라우저가 여기에 해당한다. 사용자에게 보여지는 인터페이스를 담당한다.
  • 애플리케이션 계층 (Application Layer): 중간 계층으로, 동적 웹 콘텐츠 기술을 사용하는 엔진이 이 계층에 속한다. 예를 들어 ASP, ASP.NET, CGI, ColdFusion, JSP/Java, Node.js, PHP, 파이썬, 루비 온 레일즈 등이 있다. 이 계층은 비즈니스 로직을 처리하고 데이터베이스와 상호작용하여 데이터를 가공한다.
  • 저장 계층 (Storage Layer): 세 번째 계층으로, 데이터베이스가 해당된다. 데이터를 영구적으로 저장하고 관리하는 역할을 한다.


웹 브라우저(프레젠테이션 계층)는 사용자의 요청을 중간 계층(애플리케이션 계층)에 보낸다. 중간 계층은 이 요청을 받아 데이터베이스(저장 계층)에 필요한 데이터를 쿼리하거나 업데이트한다. 그 후, 처리된 결과를 바탕으로 사용자 인터페이스를 동적으로 생성하여 웹 브라우저에게 응답으로 전달한다.

3. 2. N계층 아키텍처

일반적으로 웹 애플리케이션은 3계층 구조로 설계되지만, 더 복잡한 요구사항을 처리하기에는 부족할 수 있다. 이러한 한계를 극복하기 위해 N계층 아키텍처가 사용된다.

N계층 아키텍처의 가장 큰 장점은 비즈니스 로직(애플리케이션 계층)을 더 세분화된 모듈로 나눌 수 있다는 점이다. 이를 통해 각 계층의 역할을 명확히 하고 개발 및 유지보수를 용이하게 한다. 또한, 데이터 계층을 분리하고 데이터 접근을 위한 인터페이스 역할을 하는 통합 계층을 추가할 수 있다. 예를 들어, 데이터베이스의 클라이언트 테이블에 직접 SQL 쿼리를 실행하는 대신, "list_clients()"와 같은 함수를 호출하여 클라이언트 데이터에 접근하는 방식이다. 이렇게 하면 다른 계층에 영향을 주지 않고도 데이터베이스 시스템을 교체하는 등 유연성을 높일 수 있다.

일부에서는 웹 애플리케이션을 클라이언트와 서버로 구성된 2계층 구조로 보기도 한다. 이 구조는 클라이언트가 대부분의 로직을 처리하거나(스마트 클라이언트), 서버가 로직을 처리하고 클라이언트는 단순 표시만 하는(멍청한 클라이언트) 형태이다. 2계층 구조는 디스플레이와 데이터베이스를 분리하고 확장성을 높일 수 있지만, 각 계층의 역할이 명확하게 전문화되지 않아 복잡한 애플리케이션에는 한계가 있다.

웹 애플리케이션 기술이 발전하면서 기능은 점점 더 강력해지고 구조는 복잡해지고 있다. 이러한 복잡성에 효과적으로 대응하기 위해 N계층 아키텍처와 같은 다양한 소프트웨어 아키텍처가 활용되고 있으며, 특히 네트워크를 통한 분산 컴퓨팅 환경에 적합한 구조가 중요해지고 있다.

3. 3. 2계층 아키텍처

일부에서는 웹 애플리케이션을 2계층 아키텍처로 보기도 한다. 이는 크게 두 가지 방식으로 나눌 수 있다. 하나는 클라이언트 측에서 대부분의 작업을 처리하고 서버에는 단순히 데이터 요청만 하는 '스마트' 클라이언트 방식이고, 다른 하나는 서버가 대부분의 로직을 처리하고 클라이언트는 화면 표시만 담당하는 '멍청한' 클라이언트 방식이다.

이 구조에서 클라이언트는 사용자에게 보여지는 화면(프레젠테이션 계층)을 담당하고, 서버는 데이터베이스(저장 계층)를 관리한다. 애플리케이션의 핵심 로직(비즈니스 로직)은 클라이언트나 서버 중 한 곳에 있거나 양쪽에 나뉘어 있을 수 있다.

2계층 구조는 애플리케이션의 확장성을 높이고 화면 표시와 데이터 저장을 분리하는 장점이 있다. 하지만 각 계층의 역할이 명확하게 전문화되지 않아, 복잡한 애플리케이션에는 한계가 있어 대부분 3계층 이상의 구조를 사용하게 된다.

4. 기술적 고려 사항

웹 애플리케이션 개발 과정에서는 여러 중요한 기술적 요소들을 고려해야 한다. 대표적으로 다양한 운영 체제와 웹 브라우저 환경에서 문제없이 작동하도록 하는 크로스 플랫폼 지원 능력 확보가 필수적이다. 이를 위해서는 웹 표준 기술을 준수하고 브라우저 간의 구현 차이로 인한 호환성 문제를 해결해야 한다. 또한, 사용자가 글꼴이나 색상 등 개인 설정을 변경할 수 있다는 점을 염두에 두고 유연하게 반응하는 사용자 인터페이스를 디자인하는 것도 중요하다. 과거에는 플래시자바 애플릿 같은 플러그인 기술을 활용한 리치 인터넷 애플리케이션(RIA) 방식도 사용되었으나, HTML5[1], PWA(Progressive Web Apps)와 Service Worker API[2], WebAssembly[3] 등 웹 표준 기술이 발전하면서 점차 그 중요성이 줄어들고 있다. 이러한 기술적 고려 사항들은 웹 애플리케이션의 품질과 사용자 경험을 결정짓는 핵심 요소이다.

4. 1. 크로스 플랫폼 지원

웹 애플리케이션을 만들 때 중요한 점은 클라이언트의 운영 체제 종류나 버전에 상관 없이 작동하도록 표준 웹 브라우저 기능을 사용하는 것이다. 이를 통해 마이크로소프트 윈도우, OS X, 리눅스 등 다양한 운영 체제마다 별도의 클라이언트를 개발하는 대신, 한 번 개발하여 거의 모든 환경에서 사용할 수 있게 된다.

하지만 HTML, CSS, DOM과 같은 표준 기술들이 브라우저마다 다르게 또는 불완전하게 구현되는 경우가 있어, 웹 애플리케이션 개발 시 호환성 문제가 발생하기도 한다. 또한, 이러한 구현 차이 때문에 사용자 인터페이스(UI)를 디자인할 때는 사용자가 글자 크기, 색상, 글꼴 등을 변경할 수 있다는 점을 고려하여 레이아웃을 구현해야 한다.

결국 웹 브라우저만 있으면 사용자의 특정 환경에 크게 의존하지 않고 애플리케이션을 사용할 수 있다는 점이 웹 애플리케이션의 크로스 플랫폼 지원 능력이다.

4. 2. 사용자 인터페이스 디자인

웹 애플리케이션의 사용자 인터페이스를 디자인할 때는 사용자들이 글자 크기, 색상, 글꼴 등을 개인 설정에 맞게 변경할 수 있다는 점을 염두에 두어야 한다. 따라서 이러한 다양한 사용자 환경 변화에 유연하게 대응할 수 있도록 레이아웃을 구현하는 것이 중요하다. 또한, 웹 브라우저마다 HTML, CSS, DOM 등 웹 표준 기술의 구현 방식에 차이가 있을 수 있어, 일관된 사용자 경험을 제공하는 데 어려움이 따를 수 있다.

4. 3. 리치 인터넷 애플리케이션 (RIA)

덜 흔하게 쓰이지만, 사용자 인터페이스의 전부 또는 일부를 구현하기 위해 어도비 플래시자바 애플릿과 같은 플러그인 기술을 사용하는 접근 방법도 있다. 많은 웹 브라우저가 이러한 기술들을 플러그인 기능을 통해 지원하며, 이를 통해 브라우저 설정 문제를 일부 회피할 수 있다. 따라서 플래시나 자바에 기반한 애플리케이션은 비교적 쉽게 구현될 수 있다는 장점이 있다. 하지만 클라이언트 환경마다 다른 자바나 플래시 구현 방식이 호환성 문제를 일으킬 수도 있다.

이러한 방식은 클라이언트 측에서 더 많은 연산을 처리하는 전통적인 클라이언트-서버 구조와 유사하기 때문에, 이를 일반적인 "웹 애플리케이션"으로 분류하는 것에 대한 논쟁이 있었다. 이러한 배경에서 등장한 대체 용어가 바로 "리치 인터넷 애플리케이션"(Rich Internet Application, RIA)이다.

그러나 웹 기술이 발전함에 따라 과거 플러그인 기반 RIA가 담당했던 기능들이 점차 웹 표준 기술로 대체되고 있다. 예를 들어, 과거에는 미디어 재생을 위해 플러그인이 필수적이었으나, HTML5의 `HTMLMediaElement`를 통해 표준적으로 미디어 재생 및 제어가 가능해졌다.[1] 또한, 웹 서버와의 연결이 끊겼을 때 사용이 불가능했던 단점은 PWA(Progressive Web Apps)와 Service Worker API[2] 등을 통해 오프라인 상태에서도 작동할 수 있도록 개선되고 있다. 네이티브 앱에 비해 느리다는 지적을 받았던 실행 속도 문제 역시 WebAssembly 기술을 통해 네이티브 코드에 가까운 성능을 낼 수 있게 되었다.[3] 이러한 웹 표준 기술의 발전은 플러그인 기반 RIA의 필요성을 점차 감소시키고 있다.

5. 보안

웹 애플리케이션에서 발생하는 보안 침해는 기업 정보와 개인 고객 데이터를 모두 위험에 빠뜨릴 수 있어 중요한 문제로 인식된다. 이러한 자산을 보호하는 것은 웹 애플리케이션 운영의 핵심이며, 개발 초기 단계부터 보안을 고려하는 것이 장기적으로 더 효과적이다.

5. 1. 보안 취약점

웹 애플리케이션에서의 보안 침해는 기업 정보와 개인 고객 데이터 유출로 이어질 수 있기 때문에 중요한 문제로 다뤄진다. 이러한 자산을 보호하는 것은 웹 애플리케이션 운영의 핵심이며, 개발 과정에서부터 고려되어야 할 몇 가지 주요 영역이 있다. 여기에는 사용자 인증, 인가, 자산 처리, 입력값 검증, 로깅 및 감사 프로세스가 포함된다. 개발 초기 단계부터 애플리케이션에 보안 기능을 통합하는 것이 장기적으로 더 효과적이며 문제 발생 소지를 줄일 수 있다.

웹 애플리케이션 기술이 발전하면서 기존의 문제점을 해결하는 동시에 새로운 과제가 등장하는 흐름이 이어지고 있다. 과거 지적되었던 단점과 이를 해결하기 위한 기술적 접근 방식의 예시는 다음과 같다.

  • 표준 기능으로 미디어 재생이 어려웠던 문제: HTML5의 HTMLMediaElement를 이용한 미디어 재생 및 제어 기능으로 해결.[1]
  • 웹 서버 장애 또는 통신 두절 시 이용 불가 문제: PWA(install + Service Worker API[2])를 통한 오프라인 동작 지원으로 개선.
  • 네이티브 앱 대비 느린 실행 속도 문제: WebAssembly를 통해 네이티브 수준의 코드 실행 속도 확보.[3]

5. 2. 보안 강화 방안

웹 애플리케이션은 외부 해커의 공격 시도에 노출될 수 있으며, 프로그램 오류로 인한 보안 문제는 심각한 결과를 초래할 수 있다. 특히 기업 정보나 개인 고객 데이터 유출과 같은 보안 침해는 주요 우려 사항이다. 따라서 이러한 자산을 보호하는 것은 웹 애플리케이션 개발에서 매우 중요하다.

웹 애플리케이션의 보안 문제를 예방하기 위한 여러 프로젝트와 표준이 존재한다. 대표적으로 Web Application Security Consortium (WASC), CGI Security, OWASP 등이 있으며, 이들은 관련 문서를 작성하고 정보를 제공하는 데 중점을 둔다.

웹 애플리케이션 프레임워크의 사용은 코드를 단순하게 만들고, 개발팀이 기반 구조에 집중하게 함으로써 프로그램의 오류를 줄이는 데 기여할 수 있다. 또한, POST 후 GET과 같은 보안 관련 패턴의 사용을 촉진할 수도 있다.

효과적인 보안 강화를 위해서는 개발 프로세스 초기부터 보안을 고려하는 것이 장기적으로 더 효과적이고 덜 방해가 될 수 있다. 웹 애플리케이션 개발 프로세스에 포함되어야 하는 주요 보안 운영 영역은 다음과 같다.

  • 인증 (Authentication, AuthN): 사용자의 신원을 확인하는 과정이다.
  • 인가 (Authorization, AuthZ): 인증된 사용자가 특정 자원이나 기능에 접근할 권한이 있는지 확인하는 과정이다.
  • 자산 처리: 중요한 데이터를 안전하게 처리하고 저장하는 방식을 의미한다.
  • 입력 검증: 외부로부터 들어오는 데이터(사용자 입력 등)의 유효성을 검사하고 악의적인 코드를 차단하는 것이다.
  • 로깅 및 감사: 시스템 활동 기록을 남기고 정기적으로 검토하여 보안 사고를 탐지하고 대응하는 것이다.


전통적으로는 아이디와 비밀번호를 이용한 인증인가를 통한 접근 제어가 일반적이었으나, 최근에는 보안성과 편의성을 높이기 위해 토큰 기반 방식으로 전환하는 추세이다. 소셜 로그인, OAuth, OpenID Connect 등을 지원하는 클라우드 기반 IDaaS(Identity as a Service)도 많이 활용된다.

6. 개발

웹 애플리케이션 프레임워크는 개발 과정을 간소화하여 신속한 애플리케이션 개발을 돕는다. 이 외에도 인터넷 운영 체제를 기반으로 애플리케이션을 개발하는 방법 등이 고려될 수 있다.

6. 1. 웹 애플리케이션 프레임워크

웹 애플리케이션 프레임워크는 개발자가 프로그램의 고수준 설계를 정의하여 신속한 애플리케이션 개발(RAD)을 용이하게 한다. 프레임워크를 사용하면 개발팀은 사용자 관리와 같은 일반적인 문제 해결에 시간을 쏟는 대신, 애플리케이션의 핵심 목표에 더 집중할 수 있다.

프레임워크는 코드를 단순화하고 개발팀이 기반 구조에 집중하도록 도와 프로그램 오류를 줄이는 데 기여한다. 특히 웹 애플리케이션은 외부 해커의 공격 시도에 노출될 가능성이 높기 때문에, 프로그램 오류로 인한 보안 문제는 매우 중요하다. 웹 애플리케이션 프레임워크는 POST 후 GET과 같은 보안 강화 기법의 사용을 촉진하여 이러한 위험을 줄이는 데 도움을 줄 수 있다.

웹 애플리케이션의 보안 문제를 예방하고 해결하기 위한 노력으로, Web Application Security Consortium (WASC), CGI Security, OWASP와 같은 프로젝트들이 관련 문서를 개발하고 있다.

인터넷 운영 체제에 기반한 애플리케이션 개발의 잠재성도 언급되지만, 현재 이 모델을 지원하는 플랫폼은 많지 않은 상황이다.

6. 2. 인터넷 운영 체제

웹 애플리케이션 프레임워크가 빠른 애플리케이션 개발을 용이하게 하는 것 외에도, 인터넷 운영 체제에 기반한 애플리케이션 개발 역시 잠재성을 가지고 있다. 다만, 현재 이러한 모델에 맞는 실행 가능한 플랫폼은 많지 않은 상황이다.

7. 인터페이스

웹 인터페이스가 클라이언트의 기능에 제한을 주는 일은 거의 없다. 자바, 자바스크립트, DHTML, 플래시와 기타 기술들을 활용하면 응용 프로그램에 특정적인 방법, 이를테면 화면에 그림을 그리거나 소리를 재생하거나 키보드와 마우스에 접근하는 것이 모두 가능하다. 드래그 앤드 드롭과 같은 일반적인 기법도 앞의 기술로 가능하다. 웹 개발자는 클라이언트측 스크립트를 활용해서 기능을 추가하는 경우가 많은데, 특히 페이지를 다시 불러오지 않으면서 인터렉티브한 경험을 구현하는 것이 그러한 경우이다. 최근에는 클라이언트측 스크립트와 서버측 기술(이를테면 PHP)을 함께 활용하는 기술들이 개발되고 있다. 다양한 기술을 조합한 웹 개발 기법인 Ajax는 더욱 인터렉티브한 경험을 제공하는 기술의 예이다.

8. 기술

일반적으로 특정 종류의 동적 웹 페이지와 웹 애플리케이션을 명확히 구분하기는 어렵다. 웹사이트가 데스크톱 앱이나 모바일 앱과 비슷한 기능을 갖추고 있을 때 "웹 애플리케이션"으로 불릴 가능성이 높다. HTML5는 웹 페이지로 로드되어 로컬에 데이터를 저장하고 오프라인 상태에서도 작동할 수 있는 애플리케이션 제작을 위한 명시적인 언어 지원을 도입했다.

초기 클라이언트-서버 컴퓨팅 환경에서는 각 응용 소프트웨어가 자체 사용자 인터페이스를 가지고 사용자 PC마다 별도로 설치해야 했다. 서버 환경이 변경되면 클라이언트 응용 프로그램도 업그레이드해야 했고, 이는 기술 지원 비용 증가와 생산성 저하로 이어졌다.

반면, 웹 애플리케이션은 웹 브라우저가 지원하는 HTML이나 XHTML 같은 표준 형식의 웹 문서를 동적으로 생성하는 방식으로 작동한다. 클라이언트 측 동작은 표준 스크립트 언어인 자바스크립트가 주로 담당한다. 개별 웹 페이지는 정적 문서 형태로 웹 브라우저에 전달되지만, 연속적인 웹 문서 전달과 웹폼을 통한 정보 교환을 통해 사용자에게 상호작용적인 경험을 제공한다. 웹 브라우저는 이러한 웹 문서를 해석하고 표시하는 역할을 한다.

웹 인터페이스는 클라이언트 기능에 거의 제한을 두지 않으며, 다양한 기술을 활용하여 특정 애플리케이션에 필요한 기능을 구현할 수 있다. 드래그 앤드 드롭과 같은 일반적인 사용자 인터페이스 기법도 구현 가능하다. 웹 개발자들은 특히 페이지를 새로고침하지 않고도 상호작용적인 경험을 제공하기 위해 클라이언트측 스크립트를 자주 활용한다. 여러 기술을 조합한 Ajax는 더욱 동적인 사용자 경험을 가능하게 하는 기술의 예이다.

다양한 변형이 존재하지만, 웹 애플리케이션은 주로 3계층 아키텍처로 구축된다. 가장 일반적인 구성은 웹 브라우저가 첫 번째 계층, 동적 웹 콘텐츠 기술 엔진(ASP, ASP.NET, CGI, ColdFusion, JSP, PHP, 파이썬, 루비 온 레일즈 등)이 중간 계층, 그리고 데이터베이스가 세 번째 계층을 이루는 형태이다. 웹 브라우저는 중간 계층에 요청을 보내고, 중간 계층은 데이터베이스에 쿼리를 보내거나 자료를 업데이트하며 사용자 인터페이스를 생성하여 브라우저로 전달한다.

대표적인 웹 애플리케이션의 기술 스택은 웹 브라우저HTTP를 이용해 HTML 문서를 받아 표시하고, 이를 DOM을 통해 JavaScript가 조작하며, 필요에 따라 웹 서버와 통신하여 데이터를 갱신하는 방식이다. 이처럼 '''을 기반'''으로 만들어지는 '''응용''' 소프트웨어를 통칭하여 웹 애플리케이션(Web 앱)이라고 부른다. 이는 웹 애플리케이션을 구현하는 기술 스택의 한 예일 뿐이며, 다양한 기술 조합으로 웹 앱을 만들 수 있다.

웹 애플리케이션의 예로는 위키백과 등에서 사용되는 위키, 블로그, 전자 게시판, 은행의 인터넷 뱅킹, 증권사의 온라인 트레이딩, 전자 상가 등 통신 판매의 쇼핑 카트 기능 등이 있다. 웹 애플리케이션과 대비되는 개념으로는 로컬 데스크톱 환경에서 동작하는 데스크톱 애플리케이션이나 스마트폰에서 동작하는 네이티브 앱이 있다.

웹 앱은 클라이언트-서버 모델을 기본으로 하며, WWW를 기반으로 하는 분산 컴퓨팅의 한 형태로 볼 수 있다. 2010년대 후반부터는 다수의 마이크로서비스API를 통해 연동하여 구성하는 웹 앱이 증가하면서 분산 컴퓨팅으로서의 측면이 더욱 강화되고 있다.

1990년 월드 와이드 웹 등장 이후 웹 애플리케이션이 발명되면서, 성능, 편의성, 사용자 경험(UX)을 향상시키기 위한 기술 개발이 꾸준히 이루어져 왔다. 초기 웹은 정적 HTML 파일들을 하이퍼링크로 연결한 형태였으나, CGI의 등장으로 사용자 입력에 따라 동적으로 자원을 생성하고 반환하는 것이 가능해졌다. 이후 Java Servlet, Apache HTTP Server용 모듈인 mod_php[4], 마이크로소프트의 ASP 등이 등장했으며, Ajax, 플래시, HTML5 등으로 기술이 발전했다. 2019년경부터는 특히 스마트폰 앱 분야에서 네이티브 앱과 동등한 경험 제공을 목표로 하는 '''프로그레시브 웹 앱'''(PWA) 관련 기술 개발이 활발히 이루어지고 있다[5]. 또한 클라우드 컴퓨팅의 발전으로 자체 웹 서버 대신 클라우드 서비스를 백엔드로 활용하는 웹 앱 개발도 확산되고 있다.

8. 1. 프로그래밍 언어

원칙적으로, 웹 애플리케이션은 특정 프로그래밍 언어에 얽매이지 않는다. 백엔드(서버 측)는 개발자가 임의로 프로그래밍 언어를 선정할 수 있다. 프론트엔드(클라이언트 측)에서도 DOM은 언어 중립적인 사양이며, 또한 WebAssembly를 통한 C 언어나 Rust를 사용한 개발도 원리상 가능하다. 하지만 현실적으로 프론트엔드는 JavaScript 혹은 TypeScript를 비롯한 AltJS가 주류를 이루고 있다.

8. 2. HTML

전통적인 웹 애플리케이션에서는 HTML이 거대한 하나의 파일로 구성되는 경우가 많았다. 웹 애플리케이션의 규모가 커지면서 코드를 나누어 관리할 필요성이 커졌고, HTML 커스텀 요소 등을 포함하는 웹 컴포넌트 기술을 통해 HTML을 분할하는 것이 가능해졌다.

과거에는 HTML을 업데이트하기 위해 DOM을 직접 조작하는 절차적 프로그래밍 방식(예: element.setAttribute())을 주로 사용했다. 그러나 최근에는 선언적 프로그래밍 방식과 템플릿을 활용하는 기술(예: lit-html, JSX)이 널리 사용되고 있다.

웹 페이지의 요소들을 조합하는 방식은 자식 요소를 통해 이루어진다. 웹 표준에서는 웹 컴포넌트<slot> 태그를 이용한 자동 삽입과 .assignedElements() 메서드를 통한 조작 기능을 제공한다[6]. React와 같은 라이브러리에서는 컴포넌트의 속성인 props.children을 사용하며, 자식 요소 외에도 임의의 속성(props.x)을 전달할 수 있다. 자식 요소의 조작은 React.Children 객체가 제공하는 메서드를 통해 이루어진다[7][8].

8. 3. DOM

대부분의 웹 애플리케이션은 HTML을 기반 기술로 사용하며, 웹 브라우저는 DOM을 통해 문서에 접근한다. 웹 애플리케이션에 요구되는 성능이 높아지면서 기존 DOM 업데이트 방식의 속도가 부족하다는 문제가 제기되었고, 이를 해결하기 위한 몇 가지 기술이 등장했다. 대표적인 예로 가상 DOM(Virtual DOM)과 DOM 템플릿(lit-html) 등이 있다.

8. 4. 통신 프로토콜

서버와 클라이언트 간의 통신 수단으로는 전통적으로 HTTP가 이용된다. HTTP는 무상태 프로토콜이므로, 그 자체만으로는 상태 관리를 할 수 없다. 하지만 대부분의 웹 애플리케이션에서는 세션 관리가 필요하므로, 쿠키 등을 이용하여 서버와 클라이언트 간에 세션 ID를 주고받아 세션을 관리한다.

사이버 보안의 중요성이 높아짐에 따라, 최근에는 HTTPS가 사실상의 표준 통신 방식으로 자리 잡아가고 있다. HTTP를 기반으로 하는 상위 통신 프로토콜로는 gRPC가 있으며, 실시간 통신 용도로는 WebSocket이 사용된다. 또한 HTTP와는 별개의 실시간 통신 프로토콜로 WebRTC도 사용된다. 더 나은 통신 효율과 실시간 양방향 통신을 실현하기 위한 차세대 프로토콜로 HTTP/3 (HTTP over QUIC), QUIC 등이 개발되고 있다.

8. 5. 캐시 및 동기화

웹 애플리케이션은 클라이언트-서버 모델을 기본으로 하며, 서버에 대한 리소스 요청을 높은 빈도로 수행한다. 더 빠른 동작이나 네트워크가 끊어졌을 때의 동작을 위해, 리소스의 복사본을 제공하는 캐시가 필요에 따라 사용된다. 캐시는 클라이언트부터 서버 백엔드까지 다양한 단계에서 이루어질 수 있다. 클라이언트에 가까운 캐시일수록 네트워크 지연 시간은 줄어들고 오프라인 상태에서의 동작에 유리하지만, 데이터를 최신 상태로 유지하는 동기화의 어려움이 발생한다.

캐시가 사용될 수 있는 주요 단계는 다음과 같다.

단계설명관련 기술/링크
앱 내 캐시애플리케이션 자체적으로 데이터를 저장하는 캐시-
클라이언트 측 프록시브라우저와 네트워크 사이에서 동작하는 캐시Service Worker API [https://developer.mozilla.org/ko/docs/Web/API/Cache Cache API]
브라우저 캐시웹 브라우저가 자체적으로 관리하는 캐시[https://developer.mozilla.org/ko/docs/Web/HTTP/Caching HTTP 캐싱], HTTP ETag
웹 프록시 캐시사용자 네트워크와 인터넷 사이에 위치한 프록시 서버의 캐시-
CDN 캐시지리적으로 분산된 서버에 콘텐츠를 저장하는 캐시콘텐츠 전송 네트워크
BFF 캐시Backend for Frontend 서버에서 사용하는 캐시-
DB 인메모리 캐시데이터베이스 자체 또는 별도의 메모리 시스템에 데이터를 캐싱인메모리 데이터베이스



캐시는 원리적으로 항상 동기화 문제를 안고 있다. 캐시는 기본적으로 복사된 시점의, 즉 시간이 지난 오래된 리소스를 제공하기 때문이다. 따라서 각 웹 애플리케이션의 요구 사항에 맞춰 적절한 캐시 전략을 선택해야 한다. 또한, 사용자가 데이터를 변경하는 POST 요청 시 캐시에 먼저 내용을 반영하고 나중에 캐시와 백엔드 서버를 동기화하는 방식도 사용될 수 있다. 이 경우에도 동기화 과정에서의 데이터 충돌이나 경합 문제는 원리적으로 존재한다.

동기화 방법 중 하나로 차분 동기화(delta sync)가 있다[9]。가장 단순한 동기화 방법은 캐시를 새로고침하는 것, 즉 모든 데이터를 서버로부터 다시 가져오는 방식이다. 충분한 계산 능력과 통신 자원이 있다면 모든 데이터가 최신 상태임을 쉽게 보장할 수 있다. 그러나 자원이 제한적인 경우, 캐시에 저장된 데이터와 서버의 최신 데이터 사이의 차이(delta)만을 계산하여 갱신함으로써 자원 사용량을 줄일 수 있다. 차분 동기화 방식에서는 여러 종류의 쿼리가 사용된다: BaseQuery, DeltaQuery, 그리고 필요에 따라 SubscriptionQuery[9]。BaseQuery는 캐시 새로고침과 같이 전체 데이터를 가져오는 쿼리이며, DeltaQuery는 데이터 원본으로부터 변경된 차분 정보만을 가져오는 쿼리이다. 데이터 원본 서버는 변경된 정보를 별도로 기록해두고, DeltaQuery 요청이 오면 해당 갱신 정보 큐(Queue)에서 정보를 보내준다. 이를 통해 기존 데이터 전체에 접근하지 않고도 동기화가 가능해진다. DeltaQuery는 주기적으로 서버에 요청(fetch)하여 구현할 수 있으며, 실시간 갱신이 필요하다면 WebSocket 등을 사용한 구독(Subscription) 방식으로 차분 정보를 받아 구현할 수도 있다.

차분 동기화를 구현할 때는 BaseQuery와 DeltaQuery의 적절한 사용 시점, 오프라인 상태 대응 등이 중요한 문제가 된다. 예를 들어, 네트워크 연결이 끊겼다가 다시 연결되었을 때 BaseQuery를 다시 실행하도록 설계할 것인지, DeltaQuery의 요청 빈도는 어떻게 조절할 것인지(예: 지수 백오프(exponential backoff)와 지터(jitter) 적용), 실시간 구독 방식 사용 시 연결이 끊어졌을 때 재접속은 누가 책임질 것인지 등을 고려해야 한다. 또한, 데이터 원본 서버 측에서 차분 정보를 어떻게 생성하고 유지 관리할 것인지(생성 방식, 보존 기간 및 형식 등)도 중요한 고려 사항이다.

8. 6. 접근 제어

전통적으로는 ID와 패스워드를 이용한 인증인가를 통해 접근 제어를 수행했다. 그러나 보안과 편의성을 높이기 위해 토큰 기반 방식으로 점차 바뀌고 있다. 소셜 로그인, OAuth, OpenID Connect 등이 대표적인 예이며, 이러한 기능을 제공하는 클라우드 기반의 인증·인가 서비스(IDaaS)를 활용하는 경우도 많다.

8. 7. 데이터 바인딩

웹 애플리케이션에서는 데이터가 변경될 때 화면(UI)을 자동으로 업데이트하거나, 반대로 사용자가 화면을 조작했을 때 데이터를 자동으로 변경하는 경우가 많다. 이러한 과정을 데이터 바인딩이라고 부른다. React나 LitElement 같은 프론트엔드 프레임워크가 이러한 데이터 바인딩 기능을 주로 담당한다. 많은 경우, HTML과 비슷한 방식으로 화면 구조를 선언적으로 정의하고 여기에 데이터를 결합하는 방식으로 데이터 바인딩을 구현한다.

8. 8. 데이터 액세스

웹 애플리케이션에서는 외부 데이터베이스 등에 대한 데이터 접근이 자주 필요하다. 원격 데이터에 접근할 때, 클라이언트 측에서는 기본적으로 [https://developer.mozilla.org/ko/docs/Web/API/Fetch_API fetch API]를 사용한다. 데이터를 제공하는 서버 측의 기술 방식이나 사양으로는 REST와 GraphQL 등이 있다. 데이터 구조를 정의하는 스키마 사양의 경우, REST 방식에 대응하는 OpenAPI Specification이 있으며, GraphQL은 자체 사양 내에 스키마 정의를 포함하고 있다.

9. 기능에 따른 분류

웹 애플리케이션은 제공하는 기능에 따라 다양하게 분류할 수 있다. 예를 들어, 동영상이나 음악과 같은 미디어 콘텐츠를 다루는 기능이나 인터넷 연결 없이도 작동하는 오프라인 기능을 중심으로 웹 앱을 나눌 수 있다. 이 외에도 전자 상거래, 소셜 네트워킹, 온라인 게임, 업무용 도구 등 목적과 기능에 따라 웹 애플리케이션의 종류는 매우 다양하다.

9. 1. 미디어 (동영상, 음성)

웹 표준은 높은 수준의 HTML 요소부터 낮은 수준의 API까지 다양한 미디어 관련 기술을 제공한다.

  • <audio> 요소: HTML의 `<audio>` 태그는 `src` 속성만 설정하면 웹 페이지에 간단한 오디오 재생 위젯을 표시할 수 있다. <audio> 요소 (MDN)
  • HTMLMediaElement DOM 인터페이스: JavaScript를 사용하여 미디어 재생을 세밀하게 제어할 수 있는 DOM API이다. 재생, 정지, 탐색, 볼륨 조절 등을 프로그래밍 방식으로 구현할 수 있다. HTMLMediaElement (MDN)
  • Web Audio API: 오디오 처리를 위한 저수준 API이다. AudioNode로 구성된 오디오 처리 그래프를 JavaScript로 구축하여 복잡한 오디오 합성, 효과 적용, 분석 등을 수행할 수 있다. Web Audio API (MDN)

9. 2. 오프라인

웹 서버와의 통신(네트워크)이 끊긴 상태를 오프라인이라고 한다. 소프트웨어가 오프라인 상태에서도 동작하려면 다음과 같은 요소들이 필요하다.

  • 로컬에 존재하는 소프트웨어 프로그램
  • 실패하는 네트워크 요청 처리
  • 온라인 복귀 시 동기화


웹 앱은 일반적으로 사용자의 기기에 직접 설치(프로그램을 로컬에 저장하고 조립)하는 과정이 필요 없기 때문에, 오프라인 상태에서는 앱 프로그램 자체에 접근하기 어렵다는 문제가 있다. 따라서 웹 앱이 오프라인에서도 작동하기 위해서는 특별한 기술적 장치가 필요하다. 예를 들어, PWA는 설치 기능과 Service Worker API[2] 등을 통해 웹 앱의 오프라인 동작을 가능하게 한다. 이러한 오프라인 기능을 중요하게 고려하여 개발하는 웹 앱에 대해 "오프라인 우선(eng)"이라는 표어가 사용되기도 한다.

10. 사업 용도

기업 환경에서 웹 애플리케이션은 다양한 목적으로 활용된다. 고객 관계 관리(CRM), 전사적 자원 관리(ERP)와 같은 내부 업무 시스템을 웹 기반으로 구축하여 접근성과 효율성을 높이는 경우가 많다. 또한, 전자 상거래 플랫폼, 온라인 예약 시스템 등 고객에게 직접 서비스를 제공하는 용도로도 널리 사용된다.

최근에는 소프트웨어 자체를 웹을 통해 서비스 형태로 제공하는 애플리케이션 서비스 제공업체(ASP) 모델이 중요한 사업 방식으로 부상하고 있다. 이는 기업이 별도의 소프트웨어를 설치하거나 관리할 필요 없이 웹 브라우저를 통해 필요한 기능을 이용할 수 있게 해준다.

10. 1. 애플리케이션 서비스 제공업체 (ASP)

최근 응용 소프트웨어 회사들은 기존에 로컬 응용 프로그램으로 배포하던 소프트웨어에 접근을 제공하는 전략을 취하고 있다. 이는 소프트웨어의 종류에 따라 완전히 새로운 브라우저 기반의 인터페이스를 개발하거나, 기존 응용 프로그램에 다른 프레젠테이션 기술을 적용하는 방식으로 이루어진다. 이러한 프로그램들은 사용자가 로컬 하드 드라이브에 별도의 프로그램을 설치할 필요 없이, 월별 또는 연간 단위로 응용 소프트웨어 사용료를 지불하고 이용할 수 있게 한다. 이러한 전략을 따르는 회사를 애플리케이션 서비스 제공업체(ASP)라고 부르며, ASP는 현재 소프트웨어 산업에서 큰 주목을 받고 있다.

참조

[1] 웹사이트 HTMLMediaElement. MDN web docs https://developer.mo[...]
[2] 웹사이트 サービスワーカー API. MDN web docs https://developer.mo[...]
[3] 웹사이트 WebAssembly の概要 - WebAssembly とは何か. MDN web docs https://developer.mo[...]
[4] 문서 Perl, mod_perl, Python, mod_python, Ruby, mod_ruby 관련 문서
[5] 웹사이트 プログレッシブウェブアプリ. MDN web docs https://developer.mo[...]
[6] 웹사이트 MDN web docs - Web API https://developer.mo[...]
[7] 웹사이트 React Docs - コンポジション vs 継承 https://ja.reactjs.o[...]
[8] 웹사이트 React Docs - React の最上位 API https://ja.reactjs.o[...]
[9] 웹사이트 AWS AppSync - チュートリアル: Delta Sync https://docs.aws.ama[...]
[10] 웹사이트 scs-architecture.org https://scs-architec[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com