본문으로 바로가기

[WEB] 웹 기반 프로그램

category Web/Web 2021. 9. 11. 00:23

동작 방식


클라이언트는 사용자 컴퓨터의 웹 브라우저를 통해 해당되는 HTML 문서를 서버에 요청한다. 서버는 요청받은 HTML 문서를 브라우저에 전송하여 결과를 보여준다.

  

웹 기반 프로그램의 경우 사용자가 사용하는 프로그램의 기능이나 화면이 바뀌면 서버에서 모두 처리한다. 

클라이언트가 특별히 수행해야할 작업이 없고, 모든 기능을 서버에서 처리하므로 보안 면에서 우수하다.

   

  

정적 웹 프로그래밍


웹 서버에 미리 보여줄 HTML 페이지, CSS 페이지, JavaScript 파일을 저장해 놓고 브라우저에서 요청할 경우 그대로 전달하는 방식이다.

  • 사용자에게 화면 디자인 같은 고정된 정보만 제공한다.
  • 정보 수정 시 관리자가 직접 HTML 소스를 수정하여 사용자에게 정보를 제공한다.

사용자들은 실시간 정보를 제공받길 원한다. 하지만 정적 웹 프로그램이 새로운 정보를 제공하려면 관리자가 HTML 페이지에서 해당 정보가 표시된 곳을 찾아 수정하고, 정보를 제공해야하기 때문에 실시간으로 정보를 제공받기가 어렵다.

ex) 환율 정보를 웹 페이지로 제공한다고 했을 때, 서버 관리자가 계속해서 손으로 직접 HTML을 수정해서 제공해야한다.

  

  

동적 웹 프로그래밍


정적 웹 플로그래밍에서 관리자가 하던 역할을 애플리케이션 서버(AS)가 수행한다. 애플리케이션 서버는 웹 서버가 처리하지 못하는 동적 데이터에 대응하기 위해 만들어졌다. 따라서 실시간 정보가 저장되어있는 데이터 베이스에 클라이언트의 요청이 있을 때마다 데이터베이스에 접근하여 실시간 정보를 클라이언트에게 제공할 수 있다.

  

처음 동적 방식으로 프로그램을 제공하는 기능은 CGI였다.

더보기

CGI란 공통 게이트웨이 인터페이스(Common Gateway Interface)의 약어로, 웹서버와 외부 프로그램 사이에서 정보를 주고받는 방법이나 규약들을 말한다.

  • 초기 웹 프로그램에서 사용하는 방식이다
  • 프로세스 방식으로 실행된다
  • 서버의 부하가 심하다.

 

클라이언트가 환율 정보를 요청하면 웹 애플리케이션 서버는 환율 조회 기능을 수행하는 프로세스를 메모리에 생성한다. 그리고 데이터베이스와 연동하여 환율 정보를 클라이언트에세 반환한다. 또 다른 클라이언트가 환율 정보 요청을 하면 다시 프로세스를 메모리에 생성한 후 기능을 수행한다.

  

➡ 각 경우에 대해 처음부터 메로리에 기능을 로드하여 수행한다. 이는 사용자가 많고 처리해야할 일이 많은 현재에는 메모리에 과부하가 걸려 기능 수행에 어려움이 생길 수 밖에 없다.

  

이러한 문제점을 개선하여 나온 것이 JSP, ASP, PHP와 같은 동적 웹 프로그래밍 기술이다.

  

JSP 프로그램


JSP는 기본적으로 스레드 방식으로 실행하기 때문에 CGI 방식보다는 효율적으로 기능을 수행한다.

  

클라이언트가 환율 정보를 요청하면 웹 애플리케이션 서버는 환율 조회 기능을 메모리에 로드한 후, 환율 정보를 얻어와 클라이언트에게 전공한다. 다시 클라이언트가 동일하게 정보를 요청하면 기존에 서비스를 담당했던 기능이 메모리에 남아있기 때문에 이 기능을 이용해 환율 정보를 가져온다. 즉, 각각의 요청에 대한 기능을 메모리에 따로 로드하지 않아도 된다.

  

다수의 사용자가 접속해서 기능을 수행해야 하는 환경에서는 JSP, ASP, PHP와 같이 스레드 방식으로 동작하는 프로그램이 유리하다.

  

동작 특징

  • 프로세스 방식이 아닌 스레드 방식으로 실행한다.
  • 클라이언트이 요구를 처리하는 기능은 최초 한 번만 메모리에 로드된다.
  • 클라이언트가 동일한 기능을 요구하면 기존에 사용한 기능을 재사용한다.

'Web > Web' 카테고리의 다른 글

[WEB] HTML, HTTP API, CSR, SSR  (0) 2022.03.30
[WEB] 동시 요청 - 멀티 쓰레드  (0) 2022.03.29
[WEB] 서블릿  (0) 2022.03.29
[WEB] 웹 서버, 웹 애플리케이션 서버  (0) 2022.03.28
[WEB] 웹 애플리케이션  (0) 2021.09.11