프로가 되기 위한 웹 기술 입문 - 1

Reading time ~3 minutes

웹 기술, 웹이 뭐지? 내가 생각하기에 웹 서비스도 만들고 배우면서 주먹구구식으로 필요한 것만 살짝씩 배운 경향이 있는거 같아 이번 기회에 웹 기술을 정리해보고자 한다.

웹 이란?

웹 애플리케이션

웹 애플리케이션이 뭔지 설명하자면 데스크탑 애플리케이션과 비교할 수 있겠다. 기본적으로 컴퓨터상에 설치하는 앱을 말할 수 있겠다. CD를 통해 배포되거나 인터넷으로 다운 받아 설치 할 수 있는 앱들 말이다. 예를 들면 오피스라던지 한글이라던지. 데스크탑 애플리케이션의 특징은 설치된 컴퓨터에서만 실행할 수 있고 실행 전에 설치돼야 한다.

웹 애플리케이션은 우리가 인지하지 못하는 부분에서도 접해왔고 접하고 있다. 당연하다고 생각하고 사용해 왔던 대형 포털 사이트, 인터넷 서점, 동영상 스트리밍 사이트 등 모두 웹 애플리케이션이다. 그럼 이 웹 애플리케이션은 뭐가 다른가? 왜 웹 애플리케이션이라 하는거지? 웹 애플리케이션은 설치된 본인의 컴퓨터가 아닌 서버에서 처리가 이루어진다. 또, 컴퓨터에 애플리케이션을 설치할 필요가 없다.

데스크탑 애플리케이션 vs 웹 애플리케이션

데스크탑 애플리케이션 웹 애플리케이션
주된 처리를 PC에서 진행한다. 주된 처리를 서버에서 진행한다.
화면은 운영체제의 기능으로 표시 HTML을 이용한 웹 브라우저로 표시
PC에 설치 필요 PC에 설치할 필요 없음

웹의 발전

전 세계를 이어 주는 인터넷이라는 것이 발달하게 되었고, 초기에 음성 데이터만을 주고 받는 전화의 한계를 넘어 디지털화된 온갖 정보를 주고 받을 수 있게 되었다. 초기의 인터넷은 40년 전에 ARPANET 이라는 초기 모델이 만들어 졌다. 하지만 장비들이 고가였고, 흥미가 떨어지는 문제점 때문에 보편화되지 못했다.

WWW

www www 1

이를 바꾼 계기가 WWW의 발전이라고 한다. 1989년 유럽 원자핵 연구 기관에서 논문이나 연구 내용을 공유하기 위해서 고안한 것이 지금날의 WWW 이다. 여기서 문서 내용의 공유 형식을 HTML(Hyper Text Markup Language)이라는 통일된 형식을 사용하자 제안되며 지금까지 사용하고 있다.

뒷받침 기술의 발명

웹 서버와 클라이언트

간단하게 클라이언트는 웹 서버로 원하는 자료를 요청하고 웹 서버는 클라이언트의 요청에 따라 알맞은 HTML 파일을 건네주는 구조다. 이 간단한 동작을 위해 발전된 기술들이 있다. 서버로는 아파치 HTTP 서버, MS의 IIS(Internet Information Services)가 널리 사용된다.

왜 이렇게 서버랑 클라이언트로 역할을 나눌까? 이 질문에는 WWW의 생긴 원인에서 찾을 수 있을 것 같다. 문서 공유를 하기 위해 처음 고안되었듯, 오늘날의 웹도 컨텐츠 또는 정보를 공유, 검색하기 위함인데 이런 컨텐츠 또는 정보는 불특정 다수에게 공개하고 있다. 정보는 한 곳에 정리되어 있어야 관리하기 편하기 때문이다.

URL

클라이언트는 서버로의 요청을 URL(Uniform Resource Locator)로 한다.

http://garden715.github.io/index.html

라는 URL이 있을 때 http는 스킴이라고 하고 https, ftp, file 등 이 있다. garden715.github.io 를 호스트명 이라고 하고, /index.html이 경로명이다. garden715.github.io라는 호스트에 있는 index.html의 파일을 요청 한 것이다.

HTTP

URL의 사용으로 다양한 컨텐즈, 정보를 주고 받을 수 있게 되었는데, 다양해짐에 따라 서로 주고 받는 정보에 따른 약속의 필요성이 생겼다. 이런 약속이 없다면 요청의 의미를 해석하기 힘들고, 설령 해석해서 답변을 준다 하더라도 요청자가 올바르게 이해하리라는 보장이 없다.

이러한 이유로 웹 서버와 클라이언트가 통신하기 위한 약속, 즉 프로토콜이 필요해졌다. 이것이 HTTP(Hyper Text Transfer Protocol이다.

CGI

웹 사이트는 이제 단순 문서 공유만을 위한 서비스가 아닌 더 많은 사람들을 위한 새로운 컨텐츠를 계속해서 제공하는 동적인 서비스로 바뀔 것을 요구당한다. 하지만 서비스 제공자의 입장에서 컨텐츠를 갱신하는 방식은 여간 쉬운 작업이 아니어서 컴퓨터로 하여금 편리하게 컨텐츠 갱신을 할 수 있는 환경을 갖추고자 했다.

정적 콘텐츠와 동적 콘텐츠

동적 콘텐츠

정적 콘텐츠

이런 동적 콘텐츠를 생성하기 위한 프로그램과 웹 서버간의 연동이 필요한데 이것이 CGI(Common Gateway Interface 라는 구조이다. 서버는 클라이언트가 보낸 요청을 서버상에서 작동하는 프로그램으로 보낸다. 그 프로그램에서 요청을 분석해 HTML을 생성한다음 웹 서버로 보내고 웹 서버는 클라이언트로 응답한다.

서블릿

CGI 프로그램의 문제점에 대응하기 위해 서블릿이 등장했다. 기존의 CGI 프로그램은 개발 언어의 문제와 성능 문제를 안고 있었다. 요구하는 서비스의 규모가 거대해 졌고, 요청을 모두 감당하기 힘들어 졌다. 이 문제를 보완하기 위해 자바/서블릿이 탄생했다. 이전의 문제의 해결과 더불어 멀티스레드, 보안, 통신에 표준화된 방식으로 지원했다.

서블릿은 자바로 만들어진 HTML등의 웹 콘텐츠를 생성하기 위한 프로그램인데 CGI와 비슷하다. 콘텐츠를 생성하는데 자바를 사용하니까 객체지향을 적용할 수 있고, 대규모 애플리케이션에 적합하다는 장점이 있다. 또 CGI와는 다르게 프로그램을 매번 실행할 필요가 없어 비교적 고속으로 동작한다.

CGI vs. Servlet

CGI를 이용한 웹 애플리케이션

CGI를 이용한 웹 애플리케이션

Servlet을 이용한 웹 애플리케이션

Servlet을 이용한 웹 애플리케이션

출처 :

  • 이 글은 고모리 유스케 지음, 김정환 옮김의 프로가 되기 위한 웹 기술 입문을 읽고 작성되었습니다.
  1. http://www.techspot.com/news/66067-public-first-gained-access-world-wide-web-25.html 

Dooray!

Dooray CalDav, IMAP 사용법 Continue reading

Vue.js

Published on February 10, 2018

Java_tuning5

Published on March 06, 2017