웹 기반 프로그래밍의 소개와 발전과정 및 특징

업데이트:

  • 연구주제 : 웹 기반 프로그램의 소개와 발전과정 및 특징
  • 연구목적 : 웹 프로그래밍 기초
  • 연구일시 : 2020년 04월 21일 09:00~17:00
  • 연구자 : 이재환 ljh951103@naver.com
  • 연구장비 : HP EliteDesk 800 G4 TWR, Kotlin, Android studio, IntelliJ
  • 관련연구 : Web, HTTP, Server


서론

우리가 살고 있는 세상은 현재 대부분이 프로그램을 기반으로 이루어져 있습니다.
우리의 일상속에도 컴퓨터 프로그램은 깊숙히 자리잡고 있는데요.
우리가 사용하고 있는 프로그램은 어떻게 발전해왔을까요?


본론

프로그램 발전 과정

1. 클라이언트 PC 기반 프로그램

클라이언트 PC 기반 프로그램은 간단히 CD를 생각해보시면 됩니다. 우리가 예전에 게임CD를 돈을 주고 사거나 얻어서 게임을 했던 경험이 있죠? 그 CD에 담긴 프로그램이 클라이언트 PC 기반 프로그램의 예가 됩니다.

이 프로그램은 클라이언트 PC에서 실행하면서 모든 기능을 수행합니다. 하지만 이 클라이언트 PC 기반은 업데이트의 단점이 있습니다. 프로그램을 수정하려면 소스 코드를 추가 후, 다시 모든 클라이언트 PC에 설치하거나 업그레이드를 해야 합니다. 예를 들어 환율 정보를 알려주는 프로그램이 있을 때, 환율 정보는 항상 바뀌기 때문에 변화하는 것을 바로 반영하지 못합니다.
정리하면 다음과 같습니다.


특징

  1. 프로그램이 변경될 때마다 일일이 다시 설치 해야함

  2. 데이터베이스 접속 정보와 같은 정보가 쉽게 노출 될 수 있어 보안에 취약함 -> 역설계 및 디컴파일을 통해 클라이언트 프로그램 내 소스에 저장되어 있는 환율정보 등의 데이터들이 노출될 수 있음


2. 클라이언트-서버 기반 프로그램

image

이러한 문제점을 해결하기위해 등장한 것이 클라이언트-서버 기반 프로그램입니다.
이 프로그램은 클라이언트 PC에 프로그램에 있다고 하더라도 서버와 통신을 주고받으며 서버에 있는 자원이 클라이언트 프로그램을 수시로 업데이터 해줄 수 있습니다.


특징

  1. 기능(로직)이 변경되어도 모두 서버에서 처리하므로 클라이언트 프로그램은 수정할 필요가 없음 -> 환율정보가 변경되어도 사용자는 신경 쓸 필요가 없으며, 서버측 보안만으로 환율정보를 보호

  2. 중요한 기능은 서버에서 처리하므로 보안 측면에서도 우수함

  3. 화면 기능은 서버에서 처리를 하지 못함

다음과 같이 단점 또한 존재합니다. 여전히 사용자에 관련된 회면 기능이 바뀌면 클라이언트 프로그램도 수정해서 다시 설치해줘야 합니다.


3. 웹 기반 프로그램

image

웹 기반 프로그램은 화면과 데이터 처리 모두 서버에서 수행합니다. 지금의 프로그램의 대부분이 바로 웹 기반 프로그램입니다.
이러한 웹 기반 프로그램의 등장인 기술의 발전과 함꼐 컴퓨터의 성능의 발전이 있습니다. 그로인해 서버의 성능도 비약적으로 발전하게 되어 이제는 화면 기능까지 서버에서 담당해줄 수 있게 되는거지요.


특징

  1. 화면과 로직을 서버에서 모두 처리하므로 클라이언트가 특별히 수행할 작업이 없음

  2. 모든 기능이 서버에서 처리되므로 보안 면에서도 월등히 우수함


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

이제 정적 웹프로그래밍과 동적 웹프로그래밍을 알아보도록 하겠습니다.


정적 웹프로그래밍

정의

정적 웹 프로그래밍이란 뭘까요?

  • 웹 서버(Apache)에 미리 보여줄 HTML 페이지, CSS, 이미지, 자바스크립트 파일을 저장해 놓고 브라우저에서 요청 할 경우 그대로 전달하는 방식
  • 사용자는 페이지가 변경되지 않는 한 고정된 웹 페이지를 보이게 함
  • 주로 화면의 디자인을 구성하거나 클라이언트의 이벤트를 처리함
  • 환율 정보나 주가 정보 등 실시간 정보를 표시 하는데는 적합하지 않는 방식


구성요소

  • 웹 서버: 각 클라이언트에게 서비스를 제공하는 컴퓨터를 의미
  • 클라이언트: 네트워크로 서버에 접속한 후 서버로부터 서비스를 제공받는 컴퓨터를 의미
  • HTTP 프로토콜:Hyper Text Transfer Protocol의 약자로 www 서비스를 제공하는 통신 규약을 의미 웹 서버와 클라이언트는 이 프로토콜을 이용해 정보를 주고 받음
  • HTML: Hyper Text Markup Language 의 약자로, www 서비스를 제공하기 위한 표준 언어
  • 자바스크립트: HTML 웹 페이지의 여러가지 동적인 기능을 제공하는 스크립트 언어
  • CSS(Style Sheet): HTML 문서에서 서체나 색상, 정렬 등 세부적인 HTML 페이지의 디자인 관련된 기능


문제점

image

정적 웹프로그래밍에서는 관리자가 수작업으로 HTML 코드를 업데이트 해야합니다. 따라서 다가오는 다음의 문제점들이 있습니다.

  • 사용자에게 디자인같은 고정된 정보만 제공
  • 정보 수정 시 관리자가 직접 HTML 소스를 수정하여 사용자에게 정보를 제공
  • 실시간 정보를 제공받기를 바라는 사용자들에게는 적합하지 않는 방식


동적 웹프로그래밍

정의

image

동적 웹 프로그래밍이란 뭘까요?

  • 정적 웹프로그래밍에서 관리자의 역할을 웹 애플리케이션 서버(Web Application Server, WAS)가 수행
  • 클라이언트의 요청이 있을 때마다 데이터베이스에 접근해서 실시간 정보를 얻어와서 클라이언트에게 전송
  • 처음에 동적인 방식으로 프로그램을 제공하는 기능은 CGI(Common Gate Interface,공용 게이트웨이 인터페이스)였음
  • 프로그래밍 언어인 펄(Perl)이 대표적인 CGI언어임


프로세스 방식

image

위의 사진이 바로 CGI 방식이자 프로세스 방식입니다. 이는 초기 웹 프로그램에서 사용하던 방식입니다. 프로세스 방식으로 실행되기 때문에 서버의 부하가 심하다는 단점이 있습니다.
왜 그럴까요? 프로세스 방식으로 실행되면 매번 클라이언트가 호출할 때 마다 특정 기능이 새로 메모리에 올라오게 됩니다. 따라서 계속적으로 메모리 작업을 하기 때문에 다음과 같은 문제점이 발생합니다.


문제점

  • 같은 기능을 수행하더라도 각 경우에 대해서 처음부터 메모리에 로드해서 수행해야 함
  • 초기 인터넷 환경에선 사용자 수와 수행할 기능이 적으므로 실행 문제를 발생시키지 않음
  • 사용자 수가 급격히 늘고 기능이 복잡해지면서 이런 방식으로 서비스 수행 시 메모리에 과부하가 걸리는 문제를 발생시킴

이러한 문제점들을 해결하기 위해 나온 기술이 JSP, ASP, PHP와 같은 서버사이드 스크립트 언어입니다.


JSP

image

예로 JSP를 들어보겠습니다. JSP 프로그램은 브라우저 요청시 스레드 방식으로 실행되므로 이전의 프로세스 방식보다 효율적으로 기능을 수행할 수 있습니다. 즉, 여러 클라이언트가 같은 기능을 호출해도 스레드 방식으로 동작하기 때문에 특정 기능을 다 같이 공유할 수 있습니다.

특징

  • 프로세스 방식이 아닌 스레드 방식으로 실행
  • 클라이언트 요구를 처리하는 기능은 최초 한번만 메모리에 적재(load)됨
  • 클라이언트가 동일한 기능을 요구하면 기존에 사용한 기능을 재사용함
  • 따라서 프로세스 방식으로 동작하는 것보다 휠씬 빠르게 수행할 수 있음


결론

지금의 웹 프로그램이 있기까지의 과정들을 알아보았습니다.
다음에는 웹 프로그래밍 실전 부분에 대해 다루어 보겠습니다.


향후과제


참고자료


Writer: Jae-Hwan Lee

댓글남기기