Be Coder
웹 애플리케이션 - Client/Server 본문
Client Tier의 웹 브라우저에서 실행되는 클라이언트 스크립트
Server Tier에서 실행되는 서버 스크립트
웹 브라우저 : HTML을 보여주며, 함께 전송된 JavaScript, JScript, VB script 수행
웹 브라우저 -> 웹 서버 요청 : CGI, PHP, JSP, ASP
웹 서버 -> 웹 브라우저 : HTML, JavaScript, Jscript, VBScript
웹 서버 : 서버에 존재하는 CGI, PHP, JSP, ASP 등이 요청에 의해 수행
서버 스크립트 | 클라이언트 스크립트 | |
수행 장소 | 웹 서버, WAS | 웹 브라우저 |
제어 묘듈 | 웹 서버에 포함되거나, 관리자가 직접 관리 | 항상 브라우저에 포함 |
목적 | 동적인 웹 문서 작성 | 사용자 요청에 즉각적인 반응, 웹 문서의 모습을 동적으로 변경 |
1. Client Tier 대표적인 기술들
> HTML, RIA, Ajax, JavaScript, CSS
- HTML : 웹 문서 작성하는 Markup Language. 여러 태그들로 구성되며, 각 태그들을 사용해 원하는 형태로 문서 작성. HTML5가 최신 규격이며, 문서 작성에서 그림, 영상, 음악 등을 실행하는 기능까지 추가됐고, 모바일 환경에서도 호환.
- JavaScript : 유저와 페이지 간의 동적 상호작용이 가능하게 하려고 사용하는 스크립트 언어. HTML 내에 직접 삽입하여 사용.
- RIA : 웹 브라우저를 기반으로, 풍부한(Rich) 기능을 제공하는 것을 가능하게 하는 웹 클라이언트 기술.
-> 기존 Web Application의 편리한 배포, 관리, 저렴한 유지 비용 장점에 Desktop Application 수준의 사용자 편의성, 효율적인 데이터 통신, 견고한 아키텍처를 합쳐서 제공됨.
-> 전체 페이지가 아닌 필요 부분만 로딩해서 페이지 부하가 적고, 빠르며, 복잡한 디자인에 대한 렌더링 속도 저하 문제 완화.
- Ajax : 대화식 웹 어플리케이션 제작을 위해 이용하는 웹 개발 기법. 특정 하나의 기술이 아니라, 함께 사용하는 기술의 묶음을 지칭.
-> 표현 정보를 위한 HTML과 CSS
-> 동적 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, JavaScript
-> 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSTL
-> XMLHttpRequest(XML/XSTL 대신 미리 정의된 HTML이나 일반 텍스트, JSON 등을 이용할 수 있음)
-> 구글 맵, 자동 단어 추천, 위젯 등 실시간 정보 전달 컨텐츠 구현에 사용. + 기능 연동을 통한 애플리케이션 개발 가능
2. Server Tier의 대표적인 기술들
- ASP (Active Server Page) : COM객체를 사용해 개발. 개발 환경이 .NET이라 MS에 종속적.
- PHP : Unix, Linux 환경에서 가장 빠르게 동작하는 웹 사이트 구성의 도구. 오픈소스 모델로 개발되기 때문에, 호환성 높음. 가볍고 사용하기 쉬우며, 다양한 DB를 지원. 하지만, 객체 지향 언어의 특성이 부족함.
- JSP : Java 기반의 웹 스크립트 언어. 기존에는 서블릿으로 동적 웹 페이지 개발을 지원했으나, 컴파일 코드 방식 때문에 개발자 생산성이 떨어졌고, 이를 보완하기 위해 JSP 기술 등장. Java의 객체지향 언어 특성을 그대로 사용 가능.(호환성도 좋고, 멀티스레딩, 클레스 라이브러리 지원, 보안 등. 하지만 ASP, PHP보다 다소 느림)
-> 최초 요청시 서블릿으로 컴파일 되고, 서블릿은 다시 메모리에 적재. 이후 요청은 모두 과정이 생략되고, 메모리에 적재된 서블릿 코드에서 바로 응답. = 성능이 우수하고, 다수 사용자 처리에 효율적.
-> 유지보수 측면에 강점.
ASP | JSP | PHP | |
OS | Windows | Linux(Unix), Windows | Linux(Unix), Windows |
WAS | IIS | Tomcat, Zeus | Apache |
DB | MySql, Oracle, Access | MySql, MSSQL, Oracle, Access | MySql, Oracle Sybase 등 |
속도(상대적) | 중간 | 느림 | 빠름 |
이식성(상대적) | 낮음 | 높음 | 중간 |
장점 | COM 객체 사용 | 객체 지향, 유지보수 용이 | 빠른 속도, 가볍고 용이 |
- Servlet : Java 플랫폼에서 컴포넌트를 기반으로 한 웹 애플리케이션 개발 시 활용되는 기술. JSP가 Servlet기반이므로, JSP를 효율적으로 사용하기 위해서는 Servlet 사전 지식 필수. 최근에는 Struts, Spring 같은 오픈 소스 프레임워크가 주목받고 있으며, 이 프레임워크들의 많은 부분이 Servlet 기반이므로 더욱 중요.
비즈니스 로직과 프레젠테이션 로직이 하나의 Servlet소스에 있어서 개발과 관리 측면에 문제가 되었고, 두 로직 분리를 위해 JSP 탄생. 하지만, JSP는 대체 기술이 아니고, Sevlet과 상호보완적.
- Node.js : 오픈소스 JavaScript엔진 구글 V8에 비동기 이벤트 처리 라이브러리 libuv를 결합한 플랫폼. JavaScript로 브라우저 박에서 서버를 구축하는게 가능한 런타임 환경을 제공함. Non-blocking I/O, 단일 스레드 이벤트 루프를 사용한 높은 처리 성능, 내장 HTTP 서버 라이브러리, 별도의 소프트웨어 없이 웹 서버에서 동작 가능 및 동작 제어 등이 강점. 대신 비동기라 I/O 처리는 강점이지만, 싱글 스레드로 실행되므로, 병렬처리에 취약.
'웹' 카테고리의 다른 글
Servlet Programming - 서블릿 개요와 동작 과정 (0) | 2020.04.19 |
---|---|
Servlet Programming - HTTP 프로토콜의 이해(Request/Response Msg) (0) | 2020.04.19 |
웹 프로그래밍 방식 (0) | 2020.04.17 |
웹 애플리케이션 (0) | 2020.04.17 |
JavaScript - 이벤트 (0) | 2020.03.15 |