웹이란 무엇인가?

오늘 이태원 도장에서 웹을 지탱하는 기술이라는 책으로 스터디를 시작 하게되었다. 이 책의 목적은 크게 두 가지인데, 첫번째는 HTTP와 URI, 그리고 각종 하이퍼미디어 포맷의 스펙을 설명하는것이고 또다른 하나는 웹 서비스의 구체적인 설계방법을 보여주는것이다. 이 두가지를 어떻게 알려주는지를 항상 염두하고 책을 읽어보자!

1. 웹이란 무엇인가

오늘날에 우리는 브라우저를 통해 다양한 활동을 한다. 영상을 보거나, SNS을 하거나 뉴스를 보는것 모두를 chrome 이나 firefox 라는 웹 브라우저를 통해 이용하고 있다. 크게 웹의 용도를 3가지로 나누는데 웹사이트, 유저인터페이스로서의 웹, 프로그램을 위한 API로서의 웹이다.

  1. 네이버, 야후 같은 포털 사이트나 wiki, blog들이 웹사이트이다.
  2. 라우터, 텔레비전, 프린터 등을 유저 인터페이스로서의 웹으로 사용된다. 또한 사진관리 소프트웨어가 사진을 배포할 때 각 사진에 THML 링크를 생성하는 것도 웹 기술을 유저인터페이스 측면에서 사용한 예이다.
  3. 프로그램을 위한 API로써 데이터 포맷으로 XML이나 JSON과 같이 프로그램에서 해석 처리하기 쉬운것을 이용한다. API로서의 웹은 웹서비스라고도 불리다.

웹을 지탱하는 기술로 3가지 기술

  1. HTTP(Hyptertext Transfer Protocol) : HTML을 주고받기 위한 프로토콜
  2. URI(Uniform Resource Identifier) : 인터넷 상의 어떠한 리소스를 가리키는 기술
  3. HTML(Hypertext Markup language) : 정보를 표시하는 문서

웹을 정보 시스템으로 본다면 2가지 측면으로볼 수 있음

  1. 하이퍼 미디어
  2. 분산시스템

2. 웹의역사

웹이 왜 이런 아키텍처를 갖게 됬는지 대해서 쉽게 알기 위해서 기술들이 성립해온 과정을 공부해보자

웹이 각광받게된 이유

웹 이전의 하이퍼미디어는 복잡성으로 인한 문제점이 있었지만, 웹은 단방향 링크밖에 지원하지 않고, 링크가 끊어질 가능성이 있으며, 버전관리와 트랜스클루전 기능이 없다는 이러한 간단한 특징이 성공할 수 있게 한 이유이다.

웹 이전의 분산 시스템

  1. 단말기로 호스트 컴퓨터에 접속해서 호스트에서 집중해서 처리하는 중앙 집중형 시스템에서 컴퓨터가 작아지면서 복수의 컴퓨터를 조합하여 처리를 분산화한 분산 시스템이 등장함.
  2. RPC(Remote Procedure Call) : 원격 서버에서 실행하고 있는 프로그램을 클라이언트 쪽에서 호출할 수 있음. NFS같은 분산 시스템을 구현하는데는 사용되지만, 통신상대가 정해져있는 좀 더 복잡한 이기종 분산 환경으로 확장이 되지 않음

    • 성능 열화 문제
    • 데이터 변환 문제
    • 인터페이스 버전업 시 호환성 문제
    • 부하 분산의 문제
  3. CORBA, DCOM : 분산 오브젝트로 진화
  4. 웹의 탄생 팀 버너스릭가 하이퍼미디어를 이용한 인터넷 기반의 분산정보관리 시스템을 위한 첫 버전의 서버와 브라우저를 완성 시킴. 그 이후 일리노이대학에서 이전에는 문자 정보밖에 다루지 못했던것에 비해 인라인으로 이미지를 함께 넣을 수 있는 Mosaic 브라우저를 만들게 되면서 확산됨.
  5. 웹은 인터넷을 이용한 하이퍼미디어로 설게되었는데, 심플한 단방향 링크뿐이라는 특징이 사용자에게 이해하기 쉬워서 넓게 보급되었음.
  6. 폐쇄된 네트워크 환경에서 정해진 클라이언트를 위한 것이 RPC라면 웹은 개방된 네트워크 환경에서 불특정 다수의 클라이언트에 대해 서비스를 제공하기에 적합하다.

웹의 표준화

REST, SOAP, WS-* 여러개의 API가 존재 했지만, 가장 간단한 REST가 넓게 확산됨. REST가 보급되면서 웹은 인터넷을 정복하였고 모든 소프트웨어와 데이터들이 계속해서 웹으로 구현되어지고 있고 중요성은 날로 커지고 있음.


Written by@Zero1
This blog is for that I organize what I study and my thinking, feeling and experience.

GitHub