위 그림의 책을 참고하여 작성한 글입니다
JSP와 같은 웹 기반 프로그래밍 언어를 배우기 전에 큰 틀로 JSP란 무엇이며 JSP를 왜 사용하는지를 설명하고자 한다. 이를 위해선 프로그램이 어떻게 동작하는지를 우선 알아야 하므로 프로그램 동작 방식을 살펴보겠다.
프로그램 동작 방식은 사용자와 서버를 기준으로 크게 세 가지로 분류된다.
사용자(클라이언트)가 자신의 컴퓨터에 프로그램을 설치해서 사용하는 방식이다. 게임으로 예를 들면, 콘솔 게임과 같이 컴퓨터에 게임을 설치해서 이용하는 방법이있다.
단점
- 프로그램이 수정됐을 때 사용자가 수정된 버전을 이용하려면 일일이 다시 설치하거나 업데이트를 해줘야한다.
만약 코인이 하락 중이라 팔기 위해 앱을 켰는데 새로운 코인 종목을 추가하느라 업데이트를 해야한다면 사용자 경험은 최악이었을 것이다.
- DB 접속 정보의 노출의 위험이 있다. 개인 컴퓨터마다 DB에 데이터를 요청하는 코드가 다 있기 때문에 이를 해킹당할 위험이 있다.
사용자가 수행하던 모든 기능을 서버에서 수행하는 방식이다. 게임으로 예를 들면 온라인 게임과 같은 서비스다. 사용자가 게임을 실행시키면 서버에서 자신과 다른 사용자들의 데이터를 받아와서 캐릭터들이 같은 공간에서 실시간으로 행동할 수 있다. 코인 같은 경우도 추가되거나 삭제되는 코인 종목 정도는 서버에서 처리해서 사용자에게 보여주면 된다
단점
하지만 여전히 서버에서 코드를 작성하여 새로운 기능을 사용자에게 전달하려면 사용자가 직접 업데이트하거나 새로 설치를 해야한다. 마치 게임을 패치하면 업데이트 해줬던 것처럼!
사용자는 설치할 필요없이 서버에 요청만하면 서버가 필요한 정보를 모아서 사용자에게 응답하는 방식이다. 구글을 켜서 웹서핑할 때 사이트마다 업데이트를 하지 않아도 최신 버전으로 볼 수 있는 이유이다. 게임으로 비유하자면 클라우드 게이밍과 비슷하다. 클라우드 게이밍은 사용자가 게임을 설치할 필요없이 서버에게 요청만하면 서버가 모든 필요한 정보를 처리해서 응답해서 화면에 띄워준다. 이런 뛰어난 사용자 경험을 제공하기 위해 요즘 게임 업계와 IT가 합세하여 클라우드 게이밍을 개발하는 이유이다 (네트워크랑 서버는 죽어나가겠지만)
이 웹 기반 프로그램 동작 방식도 정적 웹 프로그래밍과 동적 웹 프로그래밍으로 나뉜다.
정적 웹 프로그래밍이란 개발자가 서버에 올려놓은 파일을 해석만 하여 보여주는 방식이기 때문에 새로운 파일을 서버에 바꾸지 않는 이상 보여지는 것이 동일하다. 주식으로 예를 들면 가격에 변동이 있을 때마다 개발자가 html을 직접 바꿔줘서 서버에 올려야지 결과가 반영이된다.
반면 동적 웹 프로그래밍은 사용자가 정보를 요청하면 서버에서 필요한 정보를 WAS(web application server)에 요청해서 가져와준다. 주식 가격을 개발자가 바꿔주던 역할을 WAS가 대신하게 된 것이다.