웹 프로그램 동작 방식에 대한 설명, JSP란 무엇인가

DongHyun Kim·2022년 8월 24일
0

백엔드

목록 보기
1/16
post-thumbnail
post-custom-banner

위 그림의 책을 참고하여 작성한 글입니다

Goal 🚩

JSP와 같은 웹 기반 프로그래밍 언어를 배우기 전에 큰 틀로 JSP란 무엇이며 JSP를 왜 사용하는지를 설명하고자 한다. 이를 위해선 프로그램이 어떻게 동작하는지를 우선 알아야 하므로 프로그램 동작 방식을 살펴보겠다.

프로그램 동작 방식의 종류

프로그램 동작 방식은 사용자와 서버를 기준으로 크게 세 가지로 분류된다.

  1. 클라이언트 PC 기반 프로그램
  2. 사용자(클라이언트)가 자신의 컴퓨터에 프로그램을 설치해서 사용하는 방식이다. 게임으로 예를 들면, 콘솔 게임과 같이 컴퓨터에 게임을 설치해서 이용하는 방법이있다.
    단점
    - 프로그램이 수정됐을 때 사용자가 수정된 버전을 이용하려면 일일이 다시 설치하거나 업데이트를 해줘야한다.
    만약 코인이 하락 중이라 팔기 위해 앱을 켰는데 새로운 코인 종목을 추가하느라 업데이트를 해야한다면 사용자 경험은 최악이었을 것이다.
    - DB 접속 정보의 노출의 위험이 있다. 개인 컴퓨터마다 DB에 데이터를 요청하는 코드가 다 있기 때문에 이를 해킹당할 위험이 있다.

  3. 클라이언트-서버 기반 프로그램 동작 방식
  4. 사용자가 수행하던 모든 기능을 서버에서 수행하는 방식이다. 게임으로 예를 들면 온라인 게임과 같은 서비스다. 사용자가 게임을 실행시키면 서버에서 자신과 다른 사용자들의 데이터를 받아와서 캐릭터들이 같은 공간에서 실시간으로 행동할 수 있다. 코인 같은 경우도 추가되거나 삭제되는 코인 종목 정도는 서버에서 처리해서 사용자에게 보여주면 된다
    단점
    하지만 여전히 서버에서 코드를 작성하여 새로운 기능을 사용자에게 전달하려면 사용자가 직접 업데이트하거나 새로 설치를 해야한다. 마치 게임을 패치하면 업데이트 해줬던 것처럼!

  5. 웹 기반 프로그램 동작 방식
  6. 사용자는 설치할 필요없이 서버에 요청만하면 서버가 필요한 정보를 모아서 사용자에게 응답하는 방식이다. 구글을 켜서 웹서핑할 때 사이트마다 업데이트를 하지 않아도 최신 버전으로 볼 수 있는 이유이다. 게임으로 비유하자면 클라우드 게이밍과 비슷하다. 클라우드 게이밍은 사용자가 게임을 설치할 필요없이 서버에게 요청만하면 서버가 모든 필요한 정보를 처리해서 응답해서 화면에 띄워준다. 이런 뛰어난 사용자 경험을 제공하기 위해 요즘 게임 업계와 IT가 합세하여 클라우드 게이밍을 개발하는 이유이다 (네트워크랑 서버는 죽어나가겠지만)

    정적 웹 프로그래밍 VS 동적 웹 프로그래밍

    이 웹 기반 프로그램 동작 방식도 정적 웹 프로그래밍과 동적 웹 프로그래밍으로 나뉜다. 정적 웹 프로그래밍이란 개발자가 서버에 올려놓은 파일을 해석만 하여 보여주는 방식이기 때문에 새로운 파일을 서버에 바꾸지 않는 이상 보여지는 것이 동일하다. 주식으로 예를 들면 가격에 변동이 있을 때마다 개발자가 html을 직접 바꿔줘서 서버에 올려야지 결과가 반영이된다.
    반면 동적 웹 프로그래밍은 사용자가 정보를 요청하면 서버에서 필요한 정보를 WAS(web application server)에 요청해서 가져와준다. 주식 가격을 개발자가 바꿔주던 역할을 WAS가 대신하게 된 것이다.

JSP 등장 배경

처음 동적 웹 프로그래밍은 CGI(Common Gate Interface, 공용 게이트웨이 인터페이스)였다. CGI는 WAS에서 실행되는 기능들이 모두 프로세스 방식으로 실행된다. 프로세스 방식이란 클라이언트가 서버에 요청할 때마다 새로 만들어서 전달하는 것을 의미한다. 예를 들어 클라이언트 3명이 환율 가격을 조회하는 요청을 보냈을 때 서버는 각 클라이언트마다 환율 가격 조회 프로세스를 만들어 전달한다. 이 방식은 매우 비효율적이고 서버에 부하가 심하기 때문에 등장한 것이 JSP, ASP PHP이다.

JSP 프로그램의 특징

JSP는 프로세스 방식의 단점을 보완한 쓰레드 방식이다. 클라이언트가 서버에 요청하면 최초로 1번만 만들고 이후로 같은 요청을 하는 클라이언트가 있다면 생성해놨던 것을 이용한다. 만약 클라이언트 1, 2, 3이 환율 정보를 순서대로 요구했다면, 서버는 최초로 클라이언트 1이 요구했을 때 환율 정보 조회 기능을 WAS에 만들어서 전달한 뒤 클라이언트 2, 3이 요구했을 때는 만들어놨던 기능을 전달해주면 된다.
이 방식으로 프로그램의 수행 속도와 다수의 사용자가 접속했을 때 과부하도 덜 걸리게 할 수 있게 된 것이다.
profile
do programming yourself
post-custom-banner

0개의 댓글