티스토리 뷰

반응형

**웹 개발자를 위한 웹을 지탱하는 기술 - 야모모토 요헤이 저 - 에서 발췌


[ 기초 ]

- 아키텍처 스타일 : (매크로) 아키텍처 패턴, 복수의 아키텍처의 공통된 성질, 양식, 규정 혹은 독특한 방식을 가리키는 말. ex) MVC, 파이프 앤 필터터??, 이벤트 시스템

- 디자인 패턴 : 마이크로 아키텍처 패턴, 아키텍처 스타일보다 입도(Granularity)가 작은 클래스 등의 설계 양식

** 구현에서 추상도를 한단계 올린 것이 아키텍처이고, 아키텍처에서 추상도를 한단계 더 올린 것이 아키텍처 스타일이다.


 추상화 레벨

 웹에서의 예 

 아키텍처 스타일 

 REST

 아키텍처 

 브라우저, 서버, 프록시, HTTP, URI, HTML

 구현 

 Apache, Firefox, chrome 


REST 는 웹의 아키텍처 스타일이이다.

REST 는 복수의 아키텍처 스타일을 조합하여 구축한 복합 아키텍처 스타일이다.


[REST 아키텍처 스타일의 구성]

1. 클라이언트 서버

- 클라이언트가 서버에 요청 (Request)을 보내면, 서버는 클라이언트에 대해 응답(Response)을 돌려준다.


2. 스테이트리스 서버

- 서버가 클라이언트의 애플리케이션 상태를 관리하지 않는 것.

- 서버의 구현이 간단해진다.

- 현실적으로 스테이트리스가 아닌 웹 서비스와 웹 API가 많이 있다.

ex) Cookie를 사용한 세션관리 : REST 관점에서 본다면, Cookie를 사용한 세션 관리는 HTTP의 잘못된 확장이다. 그러나 현실적으로 cookie를 사용한 폼인증을 그만둘 수 없다. 따라서, Cookie는 스테이트리스 서버의 이점을 버린다는 것을 이해한 후에 최소한으로 이용한다.


3. 캐시

- 리소스의 신선도에 기초해, 한번 가져온 리소스를 클라이언트 쪽에서 돌려쓰는 방식.


4. 유니폼 인터페이스 ***

- URI로 지정한 리소스에 대한 조작을 통일하고 한정적인 인터페이슬 수행하는 아키텍처 스타일.

ex) HTTP 1.1 의 메소드 : HTTP 1.1 에서는 GET, POST 등 8개의 메소드만 정의하고 있다. 프로그래밍 언어의 기준에서 엄격한 제한으로 느껴지지만, 인터페이스의 유연성에 제약을 가함으로써 전체적인 아키텍처가 간결해진다. 또한 인터페이스를 통일함으로써 클라이언트와 서버 구현의 중립성이 향상된다.


5. 계층화 시스템

- 유니폼 인터페이스를 통해 시스템 전체가 계층화하기 쉬워짐.

ex 1) 웹서비스는 로드 밸런서를 설치해 부하를 분산시키거나, 프록시를 설치해 액세스를 제어할 수 있다. 클라이언트 측면에서 서버나 프록시 모두 동일한 인터페이스로 접속할 수 있기 때문에 접속할 곳이 서버이든 프록시이든 신경쓸 필요가 없다. 왜냐하면, 각 컴포넌트 간에 인터페이스를 HTTP로 통일하고 있기 때문이다.

ex 2) 기간계 레거시 시스템 등 HTTP의 인터페이스를 구현하지 않는 시스템에서도 앞단에 웹 앱 서버를 끼워넣고 HTTP의 인터페이스를 가지게 함으로써, 브라우저 등의 클라이언트와 접속할 수 있게 된다.


6. 코드 온 디맨드

- 프로그램 코드를 서버에서 다운받아 클라이언트에서 실행하는 아키텍처 스타일. Javascript, Flash, Java applet

- 장점 : 클라이언트를 차후에 확장할 수 있다.

- 단점 : 코드 온 디맨드로 프로그램을 다운로드하여 클라이언트에서 실행해버리면 애플리케이션 프로토콜의 가시성은 저하된다. ( 자바스크립트에서 다른 자바스크립트를 다운받아 실행해버리면 추적이 어렵다.)



*** REST는 아키텍처 스타일이므로 실제 시스템 설계 시에는 위 스타일 중 몇가지를 제외하더라도 상관이 없다. 이상을 염두에 두면서 실제로 동작하고 가치를 제공할 수 있는 시스템을 만드는 것이 중요하다.


반응형

'Web & Networks' 카테고리의 다른 글

SPA와 SPA 라우팅 원리  (10) 2017.05.05
[웹을 지탱하는 기술] URI 설계  (0) 2015.08.17
[웹을 지탱하는 기술] URI 스펙  (0) 2015.08.17
HTTP Protocol / Cookie 정리  (0) 2014.06.28
댓글
댓글쓰기 폼