웹을 지탱하는 기술

야마모토 요헤이의 웹을 지탱하는 기술을 읽고 학습한 내용을 기록한 글

KakaoTalk_Photo_2020-02-17-20-57-22

배달의 민족 이동욱 개발자님께서 추천하신 웹을 지탱하는 기술을 읽어보기로 하였다.

지금부터 책의 내용을 정리하면서 공부하려고 한다.

웹?

우리는 브라우저를 통해 인터넷에 존재하는 웹 서버와 통신을 하며 쇼핑을 하거나 뉴스를 읽을 수 있게 되었다.

웹은 크게 세가지로 나뉘어 진다.

  • 웹사이트로써의 웹

    • google.com이나 블로그, 소셜 네트워크처럼 다양한 서비스를 제공하는 웹 사이트로써의 웹
  • 유저 인터페이스로써의 웹

    • 브라우저를 통해 라우터나, TV, 공유기 등의 설정을 할때도 우리는 웹을 사용함
  • 프로그램 API로써의 웹

    • 프로그램을 위한 인터페이스인 API는 JSON같은 해석,처리하기 쉬운 데이터 타입으로 데이터를 주고받을 수 있음

    웹을 지탱하는 기술

KakaoTalk_Photo_2020-02-17-21-05-27

  • HTTP
  • URI
  • HTML

웹은 HTTP,URI,HTML을 기반으로 한 시스템이다.

크게 하이퍼미디어 시스템과 분산 시스템이라는 두가지 측면으로 볼 수 있다.

하이퍼미디어

하이퍼미디어란 텍스트 이미지,음성,영상 등 다양한 미디어를 하이퍼 링크로 연결하여 구성한 시스템을 의미한다.

웹은 하이퍼미디어의 한 예이다.

HTML로 기술한 웹 페이지에는 다른 웹페이지와 삽입된 이미지,동영상으로의 링크가 포함된다.

사용자는 브라우저를 통해 자유롭게 이것을 따라갈 수 있다.

분산 시스템

한 대의 중앙 컴퓨터가 모든 것을 처리하는 형식을 ‘중앙 집중형 시스템’이라고 부른다.

이 의미와 반대로 복수의 컴퓨터를 조립하여 처리를 분산시키는 시스템을 ‘분산 시스템’이라고 부른다.

웹은 전 세계에 배치된 서버에 전 세계의 브라우저가 액세스하는 분산 시스템이다.

분산 시스템으로서의 웹의 특징은 프로토콜이 심플하다는 점이다.

프로토콜이 심플하기 때문에 방대한 시스템을 실현할 수 있게 되었다.

웹의 역사

웹 이전의 인터넷

  • 최초의 인터넷은 1969년에 구축된 ARPANET
    • 리얼타임으로 상대와 통신하는 TCP/IP 사용

웹 이전의 하이퍼 미디어

  • 최초의 하이퍼미디어의 기원은 1945년의 Vannevar Bush가 발표한 Memex라는 정보검색 시스템에 대한 논문
  • Memex에 영감을 받은 Ted Nelson은 Xanadu라는 하이퍼미디어를 구상하고 개발, 그러나 복잡성으로 인해 구현에는 실패함
  • Apple에서 개발한 HyperCard는 최초의 실용적인 하이퍼미디어
  • 웹 이전의 하이퍼미디어의 문제점은 복잡성
  • 웹은 가장 성공한 하이퍼미디어, 그 이유는 최소한의 링크 기능만 갖추고 있기 때문에 단순함

웹 이전의 분산 시스템

  • 1960년대에는 중앙 집중형 시스템을 주로 사용
  • 1970년대 이후 복수의 컴퓨터를 조합하여 처리하는 분산 시스템이 등장
    • RPC는 대표적인 분산 시스템을 실현하기 위한 기술중 하나
    • RPC를 이용하면 원격 서버에 실행하고 있는 프로그램을 클라이언트 쪽에서 호출 가능
    • CORBA와 DCOM은 오브젝트의 메서드를 정의하고 구현은 네트워크를 경우해 Serialize된 메시지를 교환하는 점에서는 RPC와 같았으나 매우 복잡한 스펙을 갖고 있음

웹 이전의 분산 시스템의 문제점

  • 성능열화의 문제
    • 네트워크를 경유한 함수의 호출은 동일 프로세스 내에서 함수를 호출하는데에 비해 몇배나 시간이 걸림
  • 데이터형 변화의 문제
  • 인터페이스 버전업 시 호환성 문제
  • 부하 분산의 문제
    • RPC 기반의 시스템은 서버 상에 클라이언트의 어플리케이션 상태를 갖고 있다. 이로 인해 다수의 서버에서 부하를 분산하는 것이 어려워짐

웹의 탄생

  • 최초의 웹 브라우저는 1993년 일리노이 대학의 NSCA가 발표한 ‘Mosaic’
  • Mosaic으로 인해 웹의 보급을 단번에 앞당길 수 있었음
  • 웹에서의 하이퍼미디어는 심플한 단방향 링크기 때문에 사용자 입장에서는 이해가기 쉽고 구현이 간단하기 때문에 전 세계로 웹이 보급 될 수 있었음
  • RPC와는 반대로 웹은 불특정 다수의 유저들이 웹 서비스에 접근할 수 있도록 HTTP라는 심플한 프로토콜로 고정함으로써 분산시스템으로써 사용될 수 있었음

웹의 표준화

  • 웹을 구성하는 기술 세가지 HTTP URI HTML에 대한 표준화 진행
  • 웹 아키텍처를 결정한 중요한 사건은 REST의 탄생
    • REST를 만든 사람은 Roy Fielding
    • 그는 HTTP를 활용한 대규모 시스템을 위한 아키텍처 스타일을 REST(Representational State Transfer)라 이름 붙이고 박사학위 논문으로 제출
  • HTML 뿐 아니라 다양한 하이퍼미디어 포맷들이 탄생
  • 웹 상의 하이퍼 미디어 포멧의 defacto standard(사실상 표준)가 된 것은 JSON

SOAP VS REST

  • SOAP는 서비스 별로 별도의 프로토콜을 정의하여 사용해야 했고 각 벤더마다 제각기 정의하게 되면서 표준화가 정립되지 않게 되었음
  • 로이 필딩은 REST의 이론을 바탕으로 SOAP를 부정하고 웹 아키텍처로 REST를 권장
  • REST는 간결함을 장점으로 내세우며 Google과 Amazon같은 기업들이 사용하기 시작하면서 시장에 퍼짐
  • SOAP의 패인은 두가지
    • 기술적 이유
      • SOAP는 RPC가 갖고 있던 기술적 문제를 그대로 갖고 있음
      • 벤더 간 인터페이스 호환성 결여
      • 복잡한 프로토콜 스택
      • 네트워크를 통한 인터페이스 호출에 의한 오버헤드
    • 정치적 이유
      • SOAP의 표준화 정책이 제대로 이루어지지 못했음

REST란 무엇인가

  • REST는 웹의 아키텍처 스타일이자 네트워크 아키텍처 스타일
    • 아키텍처 스타일은 복수의 아키텍처의 공통적 성질,양식,규정 혹은 독특한 방식을 가르키는 말
    • 아키텍처 스타일의 예로는 MVC,Pipe and Filter, Event System등이 있다.
  • REST는 리소스 중심으로 행위를 표현
  • 리소스의 표현은 URI

REST의 특징

  • 클라이언트/서버 구조
    • 클라이언트/서버의 장점은 클라이언트와 서버로 분리하여 처리가 가능하다는 점
    • 클라이언트를 멀티 플랫폼으로 구성 가능
  • Stateless Server
    • 서버가 클라이언트의 상태를 관리하지 않음
    • HTTP를 Stateful하게 만드는 것은 Cookie의 사용
  • Cache
    • 캐시를 사용함으로써 서버와 클라이언트 사이의 통신량을 줄여 네트워크 대역 이용과 처리시간 단축 가능
  • Uniform Interface
    • URI로 지정한 리소스에 대한 조작을 통일
    • HTTP에는 메서드 수가 정해져 있고 이는 인터페이스의 유연성에 제약을 줌으로써 전체 아키텍처를 간결하게 만듦
  • 계층화 시스템
    • 시스템 계층화하기 쉬움
      • 서버/클라이언트 사이에 로드밸런서를 설치해 부하를 분산시키거나 프록시를 설치하여 액세스를 제어할 수 있음
  • Code On Demand
    • 프로그램 코드를 서버로부터 다운받아 클라이언트에서 실행하는 아키텍처 스타일

6가지 특성이 REST 아키텍처 스타일의 특징



© 2022. by minkuk

Powered by minkuk