본문 바로가기
Back-end

웹 프로그래밍

by 신재권 2021. 8. 7.

웹 프로그래밍(Web Programming)의 의미

웹 프로그래밍은 웹(Web)에서 사용되는 프로그램을 제작한다는 의미를 가진다.

웹(Web) 이란?

웹(Web)은 월드 와이드 웹(World Wide Web)을 의미하는 단어로, 텔넷(Telnet)과 파일전송규약(FTP)과 같은 인터넷 서비스 중 하나이다.

앞 글자만을 사용해 WWW, W3, 혹은 웹(Web)이라고 지칭한다.

일반적으로 인터넷(Internet)이라고 지칭하는 서비스는 웹 서비스를 가리키는 것이다.

웹 서비스는 하이퍼링크(Hyperlink)를 통해 매우 간편한 조작만으로 서비스를 제공받을 수 있어 여타의 인터넷 서비스 중 가장 널리 사용되는 서비스가 되었다.

하이퍼텍스트는 Hyper+Text의 합성어이다.

기존의 문서나 책, 텍스트 파일에서 정보를 얻으려면 문자가 작성된 순서대로 읽어나가야 하는 반면, 하이퍼텍스트를 이용한 문서는 문장의 일부의 어구나 단어가 다른 문서의 열람을 지칭하는 포인터(Pointer)로 사용이 가능하다.

즉, 문서 내용 중 하이퍼텍스트로 만들어진 텍스트를 클릭하면 그 텍스트에 지정해 놓은 다른 정보에 접근이 가능하다는 뜻이다.

이러한 하이퍼텍스트와 다른 정보 간의 연결을 하이퍼링크(Hyperlink)라고 한다.

웹 프로그래밍(Web Programming)이란?

프로그램(Program)은 컴퓨터에게 작업을 수행시키기 위한 일련의 명령어들을 순서대로 작성하여 놓은 문서 파일로 일정한 작성 규칙이 정해져 있으며, 프로그램을 작성하는 행위를 프로그래밍(Programming), 프로그램을 전문적으로 작성 혹은 제작하는 사람들을 프로그래머(Programmer)라고 부른다.

따라서 웹 프로그래밍은 월드 와이드 웹 인터넷 서비스를 제공하기 위해 사용되는 프로그램을 제작하는 행위를 의미한다.

웹 서비스(Web Service)의 개요

웹 서비스 동작의 구성요소

웹 서비스가 동작하려면 웹 클라이언트(Web Client)와 웹 서버(Web Server), 웹 브라우저(Web Browser)이 세 가지 필수 구성요소가 필요하다. 웹 클라이언트는 웹 서비스를 제공받기 위해 사용하는 컴퓨터이고, 웹 브라우저는 인터넷 익스플로러(Internet Explorer)와 같이 프로그래밍 언어를 우리가 보기 쉽게 변경해주는 프로그램이다.

웹 서버는 서비스를 제공하는 회사나 단체 등에서 가지고 있는 웹 애플리케이션이 포함된 서버 컴퓨터라고 볼 수 있다.

웹 클라이언트 ↔웹 브라우저 ↔ 웹 서버

따라서 웹 애플리케이션을 통해 웹 서비스가 제공되는 과정은 다음과 같다.

  1. 웹 클라이언트는 웹 브라우저에 보이는 HTML 문서 내에서 마우스 클릭과 같은 행위를 통해 웹 서버에 서비스를 요청(Request)한다.
  2. 서비스 요청을 받은 웹서버는 웹 클라이언트가 보낸 요청에 알맞은 정보를 제공하기 위해 HTML문서를 전송, 즉 응답(Response)하게 된다.
  3. 웹 브라우저는 웹 서버가 전송한 응답 결과인 HTML문서를 해석하여 사용자에게 출력해주며, 이후 출력된 화면에서 다시 1번과정을 통해 진행된다.

결국 웹 애플리케이션을 통한 웹 서비스의 진행은 웹 클라이언트 요청(Request)과 응답(Response)의 반복으로 이루어지며, 이러한 웹 서비스 진행을 위한 규약이 HTTP(Hypertext Transfer Protocol)이다.

HTTP(Hypertext Transfer Protocol)

웹 서비스 구성요소 중 하나인 웹 브라우저는 웹 클라이언트와 웹 서버 간의 통신을 중개하는 프로그램으로 마이크로소프트사의 인터넷 익스플로러 외의 구글의 크롬, 애플의 사파리, 모질라 재단의 파이어폭스 등 다양한 종류가 존재한다.

각각의 웹 브라우저가 웹 클라이언트의 요청과 웹 서버의 응답을 동일하게 처리할 수 있는 것은 통신 방법에 '약속'이 존재하기 때문이고 이러한 컴퓨터들 간의 정보 교환을 위해 미리 그 방법을 약속해 놓은 것을 프로토콜(Protocol)이라고 한다.

HTTP는 Hypertext Transfer Protocol의 약어로, 웹 클라이언트가 웹 브라우저를 통해 정보를 요청(Request)하고 웹 서버가 그 요청에 응답(Response)하여 웹 브라우저에 해당 응답을 처리한 후 결과를 출력해주기까지 웹 서비스 전반에 걸친 규칙들을 규명해 놓은 프로토콜이다.

웹 브라우저를 통해 웹사이트에 접속하려 할 때 사용하는 주소 첫 부분인 http://가 바로 이 HTTP 프로토콜을 사용한다는 것을 의미한다.

웹 서비스의 동작 과정

웹 포털 사이트에서 어떠한 검색어를 입력하는 것은 해당 검색어와 관련된 정보의 검색을 요청(Request)하는 행위이다. 웹 서버는 이 요청을 받았으므로 해당 검색 결과를 HTML 문서 형태로 웹 클라이언트에게 전송하게 된다.

전송받은 HTML문서는 웹 브라우저에 의해 해석되고 웹 브라우저 내 화면에 출력됨으로써 사용자의 검색 요청에 대한 응답 과정이 마무리 된다.

이후 출력된 HTML문서에서 다른 하이퍼링크를 클릭하면 (즉, 요청을 보내면) 다른 페이지로 이동하게 되면서 다시 한번 요청과 응답이 일어나게 된다.

HTTP 프로토콜을 이용한 웹 서비스의 동작 과정은 웹 클라이언트의 요청과 웹 서버의 응답으로 진행된다.

HTML(Hypertext Markup Language)

웹 서비스(Web Service) 동작 방식

웹 서비스의 동작 방식은 정적 웹 페이지로 시작하여 동적 웹 페이지 구현을 위해 여라 단계에 거쳐 서블릿/JSP에 이르게 되었다.

정적 웹 페이지(Static Web Page) 방식

정적 웹 페이지에서 '정적'을 의미하는 'static'은 '고정적인', '정지 상태인' 등의 의미를 가지고 있다. 정적 웹 페이지 방식은 웹 클라이언트의 정보 요청을 이미 완성되어 있는 HTML 문서로 응답하는 방식을 의미한다. 인터넷 주소에서 사용되는 웹 페이지 파일의 마지막 확장자가 '.htm', 또는 '.html'로 끝나는 페이지들이 이에 해당한다.

정적 웹 페이지 방식의 웹 서비스는 웹 클라이언트가 웹 브라우저를 통해 웹 서버에게 요청하였을 때 웹 서버에 해당 요청을 처리할 수 있는 완성된 HTML 문서가 없을 경우 응답이 불가능하다. 더 정확히 말하면, 정적 웹 페이지 방식은 웹 브라우저의 인터넷 주소창에 입력되는 주소 혹은 화면 내 버튼과 같은 사용자 요청을 처리하기 위한 HTML 문서 파일이 웹 서버 내에 존재해야 응답 가능한 방식이다.

정적 웹 페이지 방식은 가장 기본적인 웹 서비스 구현 방식으로, 사용자의 요청 종류나 사용자의 특성에 관계없이 항상 동일한 응답만을 제공할 수밖에 없다는 단점이 있다.

동적 웹 페이지(Dynamic Web Page) 방식

동적 웹 페이지 방식은 정적 웹 페이지와는 달리 응답을 위해 미리 작성된 HTML 문서 파일이 웹 서버 측에 저장되어 있지 않다.

동적 웹 페이지 방식은 필요할 때 마다 요청에 알맞은 HTML을 제작하여 전송하는 방식을 취한다. 미리 제작해 놓은 HTML 문서를 전송하는 정적인(static) 방법이 아니라 웹 클라이언트의 요청이 있을 때 마다 웹 서버에서 요청에 알 맞는 HTML문서를 다이나믹(dynamic)하게 제작하여 응답으로 전송하는 것이다.

이렇게 동적으로 응답하는 HTML 문서가 제작되려면 프로그래밍적 요소가 필요하다.

요청에 따라 응답해줄수 있는 프로그램이 활용되는 것이다. 따라서 동적 웹 페이지 방식은 정적 웹 페이지 방식에 비해 웹 클라이언트의 요청에 유연한 응답처리가 가능하다.

CGI(Common Gateway Interface)방식

CGI는 Common Gateway Interface의 약어로, 동적 웹 페이지 방식으로 웹 서비스를 구현하기 위해 사용되는 기술이다. CGI는 웹 서버와 외부 프로그램이 정보를 어떻게 주고받을 지에 대한 규칙을 정의하여 웹 동작 방식에 Perl이나 C++과 같은 프로그래밍적 요소를 더 해주는 역할을 해준다.

  1. 웹 클라이언트에서 웹 브라우저를 통해 웹 서버에 정보를 요청(Request)
  2. (CGI 방식을 이용한 동적 웹페이지 요청 URL 주소가 'cgi'로 끝난다).
  3. 웹 서버는 전송된 요청을 처리하기 위해 CGI 프로그램을 직접 호출하고 , 프로세스를 생성하여 실행
  4. 웹 서버는 CGI프로그램에서 수행된 결과를 웹 브라우저로 전송

웹 브라우저를 통해 웹 서버에게 요청이 전달되면 웹 서버는 CGI 프로그램을 직접 호출하고 프로세스가 생성되어 실행한다.

그러나 이러한 CGI 프로그램 호출 과정은 동시에 동일한 요청이 여러 곳에서 발생되었을 경우 요청된 수만큼 동일한 프로세스가 생성되어 메모리 효율을 낮춘다는 단점을 가진다.

따라서 동시다발적으로 일어나는 요청을 처리하기에 기존의 CGI 방식은 태생적 한계를 가지고 있으며, 이러한 CGI 방식의 한계를 뛰어넘고자 고안된 방식이 바로 애플리케이션 서버 방식이다.

애플리케이션 서버(Application Server) 방식

애플리케이션 서버 방식은 웹 서버가 요청을 처리하기 위한 외부 프로그램을 직접 실행하는 것이 아니라 프로그램 실행 과정을 애플리케이션 서버에게 위임함으로써 간접적으로 프로그램 수행을 명령하는 방식이다.

기존 CGI 방식에서 웹 서버와 프로그램 사이에 애플리케이션 서버를 추가하여 확장 CGI방식으로 부르기도 하는 애플리케이션 서버 방식은 동적 웹 서비스를 다음과 같이 진행하게 된다.

  1. 웹 클라이언트에게 웹 브라우저를 통해 웹 서버에 정보를 요청(Request)
  2. 웹 서버는 전송된 요청(Request) 처리를 위한 프로그램 실행을 애플리케이션 서버에 일임
  3. 애플리케이션 서버는 요청에 맞는 프로그램을 스레드(Thread)를 생성하여 실행
  4. 웹 서버는 프로그램에서 수행된 결과를 웹 브라우저로 전송

애플리케이션 서버는 동시에 여러 웹 브라우저가 동일한 요청, 즉 동일한 프로그램 실행을 요구하더라도 하나의 프로세스만을 사용하여 수행이 가능하다. 각각의 요청을 스레드(Thread)로 처리하기 때문에 기존 CGI 방식에 비해 메모리 사용 효율이 높다는 장점을 가지고 있다.

따라서 최근 대부분 웹 서비는 애플맄이션 서버 방식을 이용하여 동적 웹 서비스를 제공하고 있으며 , 서블릿/JSP가 바로 아파치 톰캣(Apache Tomcat)을 이용한 애플리케이션 서버 방식을 활용하는 기술이다.

애플리케이션 구현 방식과 서블릿/JSP의 특징

서블릿과 JSP는 모두 Java 프로그래밍 언어를 이용하여 애플리케이션 서버 방식으로 동적 웹 서비스를 구현하는 기술이다. 이 두가지 기술은 구현방식에 따라 컴파일(Compile) 방식과 스크립트(Script)방식으로 분류된다.

컴파일 방식과 스크립트 방식

구분 컴파일 방식 스크립트 방식
언어 종류 Perl, C 기반 CGI 프로그램, 서블릿 JSP, ASP, .Net, PHP, Ruby 등
코드 형태 컴파일(번역)이 끝난 실행 프로그램 컴파일 전 스크립트 코드
컴파일 시점 프로그래머가 프로그램 실행 전 직접 실행 요청 시 자동으로 애플리케이션 서버 실행
코드 실행 컴파일된 기계어 실행 스크립트 코드를 해석하여 실행
코드 변경 소스 코드 재 컴파일(재번역) 스크립트 코드를 수정하면 웹 요청 시 자동 재 컴파일

구현방식이 다르다고 해도 모두 프로그래밍 언어를 사용하므로 작성된 프로그램이 실행 되기 위해서는 반드시 컴파일 과정을 거쳐야 하며 컴파일 방식과 스크립트 방식이 가장 큰 차이를 보이는 것은 이러한 컴파일이 수행되는 시점이다.

컴파일 방식은 프로그램을 만든 후 프로그램을 실행시키기 전에 반드시 프로그래머가 컴파일 작업을 직접 수행해야 한다.

반면에 스크립트 방식은 웹 클라이언트의 요청이 발생할 때 애플리케이션 서버가 알아서 컴파일 작업을 수행한다.

스크립트 방식은 처음 요청이 있을 때 컴파일 과정이 일어나고 이후 코드에 수정이 없다면 다시 컴파일 과정을 거치기 않고 이미 컴파일된 코드를 실행하므로 사실상 컴파일 방식과의 속도 차이는 없다고 봐도 무방하다. 오히려 코드를 수정해야 할 때 프로그래머가 직접 수정된 코드를 컴파일 할 필요가 없고 , 스크립트 방식으로 사용되는 언어들도 발전해 컴파일된 이후의 성능은 컴파일 방식 언어들과 비교해도 전혀 손색이 없기 때문에 현재의 웹 서비스 대부분은 스크립트 언어를 기반으로 구현되고 있다.

서블릿 & JSP 의 특징

서블릿 /JSP는 웹 서비스 구현 시 서버 측에서 실행되는 스크립트 기술로, 웹 서버에 의해 전달받은 요청을 처리하기 위해 국내외에서 널리 사용된다. 서블릿/JSP가 웹 프로그램 분양서 인기를 얻는 이유를 살 펴보자.

  1. JSP는 'Java Server Page' 이다
    1. .Java는 JVM 방식을 사용하므로 어떤 운영체제에서나 어떤 JSP 컨테이너에서도 사용이 가능하다. 즉 한번 작성한 프로그램은 어디에서든 실행이 가능하다.JSP를 사용하는 가장 큰 이유는 JSP가 Java 프로그래밍 언어를 기반으로 한 서버 사이드 스크립트 언어이기 때문이다.
  2. MVC 패턴 적용 및 로직의 분리가 간편하다
    1. 이는 웹 서비스 구현에 있어서 웹 브라우저 내 사용자가 보게될 화면을 구성하는 프레젠테이션 로직(Presentation Logic)과 웹 클라이언트가 보낸 요청의 실제 처리를 담당하는 기능 부분인 비지니스 로직(Business Logic)의 분리와도 의미가 통하는 부분이 있다. 이와 같은 로직의 분리는 웹 페이지의 디자인과 내부 기능 사이의 간섭이 최소화된다는 큰 장점을 가진다. 이는 웹 서비스 구현에 있어서 웹 브라우저 내 사용자가 보게될 화면을 구성하는 프레젠테이션 로직(Presentation Logic)과 웹 클라이언트가 보낸 요청의 실제 처리를 담당하는 기능 부분인 비지니스 로직(Business Logic)의 분리와도 의미가 통하는 부분이 있다. 이와 같은 로직의 분리는 웹 페이지의 디자인과 내부 기능 사이의 간섭이 최소화된다는 큰 장점을 가진다.

MVC 패턴(위키피디아)

  1. 컴포넌트(Component), 모듈(Module)의 재사용성이 높다.
    1. 공통적으로 사용되는 부븐을 JSP 페이지나 자바 빈즈로 만들어 주고 필요할 때마다 다시 사용하는 것이 가능하다. 이는 컴포넌트에 국한된 것이 아니라, 하나의 모듈에도 적용이 된다. SOA(Service Orented Architecture)에서 언급된 것처럼 프로젝트 중심이 아닌 서비스 중식으로 개발을 하게 되면 개발이 서비스 단위로 이루어지고 , 서비스 단위로 만들어진 모듈은 다른 프로젝트에서도 재사용이 가능해진다. 그 뿐만 아니라, 각 서비스 별로 개발이 되어 특정 서비스가 변경되어야 하는 일이 생겨도 빠른 대처가 가능해지므로 개발 및 운영의 효율성, 더 나아가 비용절감 측면에도 큰 효과를 꾀할 수 있다.
  2. 서버 자원 사용이 효율적이다.
    1. 기존 CGI방식은 요청 수만큼의 프로세스가 생성되어 서버 자원 낭비가 발생할 수 있다. 그러나 JSP는 최조 요청 시 프로세스를 한번 생성하고 (요청 처리 JSP 페이지가 서블릿 컴파일을 통해 생성된 인스턴스를 메모리에 적재하고 이를 스레드 단위로 처리) 스레드(Thread)를 이용하여 새로운 컴파일 및 메모리 적재 과정 없이 진행되므로 자원의 효율과 처리 속도 향상으로 이어지게 된다.
  3. 구현과 학습이 용이하며 대중적이다.
    1. JSP는 서버 사이드 스크립트 언어이므로 기본적인 Java문법만 이해하면 바로 구현이 가능하여 기능도 강력하다. 또한 국내외 웹 프로젝트 시장 내 점유율이 가장 높다는 점도 주목할 필요가 있다.

'Back-end' 카테고리의 다른 글

Spring Concept  (0) 2021.08.09
서블릿(Servlet)  (0) 2021.08.08
SQL 문법 (4)  (0) 2021.08.01
SQL문법 (3)  (0) 2021.07.25
Springboot 동작원리  (0) 2021.07.19