on
웹 프로그래밍에서 JSP와 Servlet을 왜 사용하는가?
웹 프로그래밍에서 JSP와 Servlet을 왜 사용하는가?
⚠ 특별한 표시 없는 내용의 출처는 『자바 웹을 다루는 기술(이병승. 길벗. 2018)』입니다. ⚠
0. 프로그램은 변화한다.
웹은 기본적으로 웹 브라우저를 통해 실행된다.
클라이언트의 요청 -> 웹 브라우저 -> 서버 -> 데이터 전송 -> 웹브라우저
하지만 클라이언트의 요청은 끊임없이 변화한다.
=> 클라이언트를 만족시키기 위해서는 프로그램은 끊임없이 변화할 수밖에 없다.
클라이언트는 pdf파일을 jpg로 변환하고 싶어 한다고 가정하자.
1. 클라이언트 PC 기반 프로그램
그는 'pdf 변환기'라는 프로그램을 pc에 설치한다.
클라이언트의 요청에 따라 프로그램은 실행된다.
그러나 어느 날 pdf파일이 변환되지 않는 오류가 생긴다.
클라이언트가 요청한 pdf에는 '잠금'이 되어있기 때문이다.
요청은 "변화" 했다.
변화한 요청을 해결하기 위해서는 패치된 프로그램을 새로 설치해야 만한다.
만약 요청의 변화가 하루에 10번씩 일어난다면? 프로그램을 하루에 10번을 설치해야 한다.
2. 클라이언트-서버 기반 프로그램 동작 방식
'pdf 변환기'의 개발자는 고민을 했다.
그리고 서버를 통해 기능을 수행할 수 있도록 프로그램을 변경했다.
프로그램의 기능이 변경되어도 더 이상 프로그램을 패치하고 설치하는 과정을 반복할 필요가 없어졌다.
어느 날 클라이언트는 pdf를 png로 변환되길 원한다.
pdf를 png로 변환하는 기능을 넣기 위해서는 단순히 기능만 추가하는 것에서 그치지 않는다.
png 변환 기능 버튼을 넣기 위해서 프로그램을 재설치해야 하는 것이다.
클라이언트의 PC에 설치된 프로그램의 UI를 변경하기 위해서는 다시 설치되어야 한다.
3. 웹 기반 프로그램 동작 방식
클라이언트 PC 기반 방식, 서버 기반 방식은 "프로그램의 변화 = 재설치" 로 이어졌다.
그러나 웹 기반 프로그램은 클라이언트에게 그 어떤 설치를 요구하지 않는다.
클라이언트는 그저 웹 브라우저를 통해 요청을 전송하기만 하면 된다.
그것이 가능한 이유는 프로그램의 모든 파일이 서버를 통해 움직이기 때문이다.
4. 정적 웹 프로그래밍
클라이언트는 프로그램의 설치에서 자유로워졌다.
개발자는 성공적으로 프로그램을 웹을 구현했다.
개발자는 자신의 프로그램에 [최근에 사용한 pdf]라는 기능을 넣었고,
그 기능을 위해 하루 종일 컴퓨터 앞에 앉아있게 된다.
클라이언트들에게 계속해서 변화하는 정보를 업데이트하기 위해,
하나하나 손으로 html을 수정하며 정보를 갱신하고 있기 때문이었다.
정적인 웹은 그저 고정된 정보만을 제공한다.
5. 동적 웹 프로그래밍
개발자는 자신을 대신해서 정보를 갱신할 수 있는 방법을 강구한다.
그리고 CGI(Common Gate Interface) 기능을 이용한다.
CGI는 WAS(웹 애플리케이션 서버)를 이용하여 프로그램 기능을 프로세스 방식으로 실행하는 것을 말한다.
그러나 곧 웹이 너무 느리다는 클라이언트들의 불만이 생기게 된다.
CGI는 동일한 작업을 실행하더라도 개별적인 프로세스를 생성했기 때문이다.
개발자는 이러한 문제를 해결하고자 JSP, ASP, PHP와 같은 기술을 이용하기로 한다.
6. 드디어 JSP를 사용하다.
JSP는 CGI와 다른 방식, 스레드 방식을 사용한다.
스레드는 프로세스보다 훨씬 가벼운 작업 단위이다.
클라이언트가 앞선 작업과 똑같은 작업을 요청한다면, JSP는 기존에 있는 프로세스에 스레드만을 생성 하게 된다.
즉, 프로세스의 재활용이 가능 해지면서 동시에 쾌적한 환경을 만든다.
7. 그럼 Servlet은?
Servlet은 단순히 표현하자면, 자바로 만든 CGI 프로그램이라 할 수 있다.
JSP와 마찬가지로 웹 프로그래밍에 쓰이지만, 속도가 느리다 는 단점이 있다.
Servlet에 대한 것을 다음 게시글에서 더 자세히 다루도록 하겠다.
from http://y39ism.tistory.com/3 by ccl(A) rewrite - 2021-09-08 21:00:35