REST 아키텍처 스타일


REST = Uniform Interface + Layered System + Code on Demand + Client + Cache + Stateless Sever

1. Client/Server
웹은 HTTP라는 프로토콜을 이용해 클라이언트와 서버가 서로 통신하는 클라이언트/서버의 아키텍처 스타일을 채용하고 있습니다. 즉, 클라이언트가 서버에 요청(Request)을 보내면, 서버는 클라이언트에 대해 응답(Response)을 돌려줍니다. 
클라이언트/서버의 이점은 단일 컴퓨터상에서 모든것을 처리하는것이 아니라, 클라이언트와 서버로 분리해서 처리 할 수 있다는 점입니다. 이렇게 되면 클라이언트를 멀티플랫폼으로 구성할 수 있습니다. 가령, 현재의 웹이 PC뿐 아니라 휴대전화나 게임기를 통해서도 접속할 수 있는것이 그 예입니다.
또한 유저인터페이스는 클라이언트에서 담당하기 때문에 서버는 데이터 스토리지로서의 기능만을 제공하면 됩니다. 나아가 복수의 서버를 조합해 확장함으로써 가용성을 올릴 수 있습니다.

2. Stateless Sever
클라이언트/서버에 최초로 추가할 아키텍처 스타일은 스테이트리스 서버(stateless sever)입니다. 여기서 말하는 스테이트리스란, 클라이언트의 애플리케이션 상태를 서버에서 관리하지 않는다는 것을 의미합니다. 서버가 애플리케이션의 상태를 가지지 않게 되면, 서버 구현을 간략화 할수 있다는 장점이 있습니다. 간략하게 구현된서버는 클라이언트로부터의 요청에 응답한 뒤 바로 서버의 자원을 해제할 수 있습니다.
하지만 현실적으로는 스테이트리스가 아닌 웹 서비스와 웹 API가 많이 있습니다. 특히 HTTP를 스테이트풀하게 만드는 대표적인 것은 Cookie를 사용한 세션 관리입니다. REST의 관점에서 본다면, Cookie를 사용한 세션 관리는 HTTP의 잘못된 확장입니다. 다만, REST의 기준으로 잘못되었다고 해서, Cookie를 사용한 폼 인증을 그만둘 수 없는 것도 현실입니다. Cookie는 스테이트리스 서버의 이점을 버린다는 것을 이해한 후에 최소한으로 이용하도록 합시다.
  
3. Cache
캐시는 리소스의 신선도에 기초해, 한번에 가져온 리소스를 클라이언트 쪽에서 돌려쓰는 방식입니다.
캐시의 장점은 서버와 클라이언트 사이의 통신량을 줄여 네트워크 대역의 이용과 처리시간을 축소하고, 더욱 효율적으로 처리 할 수 있다는 것입니다. 단, 오래된 캐시를 이용해 정보의 신뢰성이 떨어질 가능성도 있습니다.

4. Uniform Interface
유니폼 인터페이스는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다. 
예를들어, HTTP 1.1에서는 GET과 POST등 8개의 메서드만 정의되어 있고, 보통은 이 이상늘어나지 않음. 메서드가 8개로 고정되어 확장할 수 없는 것은 일반적인 프로그래밍 언어의 기준에서 생각할 때 아주 엄격한 제약으로 느껴지지만, 인터페이스의 유연성에 제약을 가함으로써 전체적인 아키텍처가 간결해짐. 또한 인터페이스를 통일함으로써 클라이언트와 서버의 구현의 중립성이 향상됨. 현재의 웹이 다양한 클라이언트와 서버로 구성되어 있는데에는 유니폼 인터페이스가 큰 역할을 담당했습니다. 유니폼 인터페이스는 REST를 가장 특징짓는 아키텍처 스타일입니다.
  
5. Layered System
유니폼 인터페이스의 이점 가운데 하나로, 시스템 전체를 계층화하기 쉽다는 점을 들 수 있습니다. 예를들면, 웹 서비스에서는 서버와 클라이언트 간의 로드 밸런서를 설치해 부하를 분산시키거나, 프록시를 설치해 액세스를 제어합니다. 클라이언트 측에서 보면, 서버나 프록시 모두 동일한 인터페이스로 접속할 수 있기 때문에 접속할 곳이 서버에서 프록시로 바뀐 것을 신경 쓸 필요가 없습니다. 이것은 서버와 프록시 등 각 컴포넌트 간의 인터페이스를 HTTP로 통일하고 있기에 실현될 수 있었습니다.
또한, 기간계 레거시 시스템 등 HTTP의 인터페이스를 구현하지 않는 시스템에서도 레거시 시스템 앞단에 웹 애플리케이션 서버를 끼워 넣고 HTTP의 인터페이스를 가지게 함으로써, 브라우저 등의 클라이언트와 접속할 수 있게 됩니다. 
이와 같이 시스템을 몇 개의 계층으로 분리하는 아키텍처 스타일을 계층화 시스템이라고 합니다. 

6. Code on Demand
코드 온 디멘드는 프로그램 코드를 서버에서 다운받아 클라이언트에서 실행하는 아키텍처 스타일입니다. 예를 들어, Javascript 나 Flash, Java Applet 등이 여기에 해당합니다. 
코드 온 디멘드의 장점은 클라이언트를 차후에 확장할 수 있다는 것입니다. 클라이언트 프로그램에 미리 준비해 둔 기능뿐만 아니라, 새로운 기능을 계속 추가할 수 있습니다. Javascript와 Flash를 풍부하게 사용한 화려한 웹 서비스는 코드 온 디멘드의 혜택을 입고 있습니다.
물론, 코드 온 디멘드에도 결점은 있습니다. 그것은 네트워크 통신에서의 프로토콜 가시성이 저하된다는 것입니다. HTTP라는 애플리케이션 프로토콜에 따라 통신하고 있는 동안은 통신의 의미와 접근할 리소스가 명백합니다. 그러나 코드 온 디멘드로 프로그램을 다운로드하여 클라이언트에서 실행해 버리면 애플리케이션 프로토콜의 가시성은 저하됩니다.


이분 블로그에 좋은 자료 많습니다.




by 표지 | 2012/03/12 14:09 | 일상 & 전공 | 트랙백 | 덧글(0)
CoAP(Constrained Application Protocol) 표준화 동향


M2M 관련 표준화가 가속화 되어가고 있는 가운데, IETF(Internet Engineering Task Force) 내의 CoRE(Constrained RESTful Environments) 워킹그룹에서 6LoWPAN의 상위 애플리케이션 계층 프로토콜로 2010년부터 표준화 활동을 시작한 CoAP(Constrained Application Protocol)의 표준화 동향을 소개하고자 한다. CoAP가 M2M관련 표준 아키텍처 중 어디 부분에 위치하는 지를 보여주는 그림은 다음과 같다.

첨부파일이 원본입니다.
ITFind에서 찾은 문서입니다.
참고하세요.





by 표지 | 2012/03/12 13:40 | 일상 & 전공 | 트랙백 | 덧글(0)
REST - 위키백과, 우리 모두의 백과사전.


REST

위키백과, 우리 모두의 백과사전.

REST(RepresentationalState Transfer) 월드 와이드 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처 형식이다. 용어는 로이 필딩(Roy Fielding) 2000 박사학위 논문에서 소개되었다. 그는 하이퍼텍스트 전송 프로토콜(HTTP) 주요 저자들 가운데 사람이다. 뒤로 개념은 네트워킹 문화에 널리 퍼졌다.

엄격한 의미로 REST 네트워크 아키텍처 원리의 모음이다. 여기서 네트워크 아키텍처 원리란 리소스를 정의하고 리소스에 대한 주소를 지정하는 방법에 대한 개괄을 말한다. 간단한 의미로는, 도메인 지향 데이터를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 부가적인 전송 레이어 없이, 전송하기 위한 아주 간단한 인터페이스를 말한다. 가지의 의미는 당연히 겹치는 부분과 충돌되는 부분이 있다. 필딩의 REST 아키텍처 형식을 따르면 HTTP 프로토콜을 사용하지 않은 채로 월드 와이드 웹에서 전송하지 않고도 아주 커다란 소프트웨어 시스템을 설계하는것도 가능하다. 또한, 리모트 프로시저 콜을 이용하는 대신에 간단한 XML HTTP 인터페이스(REST 원리에 부합하지는 않지만) 이용해 설계하는 것도 가능하다. 현실 세계에서의 REST 용어에 대한 이러한 가지 의미는 기술 토론에서 종종 혼란을 야기한다.

필딩의 REST 원리를 따르는 시스템은 종종 RESTful이란 용어로 지칭된다. 열정적인 REST 옹호자들은 스스로를 RESTafrians 이라고 부른다.

원리

REST 지지자들은 웹이 가지 핵심 설계 원칙의 직접적인 결과로서 확장성과 성장성을 갖게 되었다고 주장한다.

§  응용 프로그램의 상태와 기능들은 리소스들로 나뉜다.

§  모든 리소스는 하이퍼미디어 링크를 사용하는 공통 문법을 이용하여 유일한 방식으로 주소를 지정한다.

§  모든 리소스들은 클라이언트와 리소스 사이의 상태 전송을 위한 유일한 인터페이스를 공유한다. 다음과 같이 이루어져 있다.

§  정의된(well-defined) 명령어들의 제약 집합.

§  콘텐츠 종류와, 코드 디멘드 부분적으로 지원하는 제약 집합

§  REST 아키텍처에 적용된 6가지 제한 조건 (개별 컴포넌트의 구현은 자유롭게 디자인할 있다)

§  클라이언트/서버 구조 - 유니폼한 인터페이스로서 분리되어야 한다

§  무상태(Stateless) - 요청 클라이언트의 컨텍스트가 서버에 저장되어서는 안된다

§  캐시 처리 가능(Cacheable) - WWW에서와 같이 클라이언트는 응답을 캐싱할 있어야 한다.

§  관리되는 캐싱은 클라이언트-서버 interaction 부분적으로 또는 완전하게 제거하여 scalability performance 향상시킨다.

§  계층화(Layered System) - 클라이언트는 보통 대상 서버에 직접 붙었는지, 또는 중간의 intermediary 서버와 붙었는지를 없다. Intermediary 서버는 로드 밸런싱을 가능하게 하거나 공유 캐시를 제공함으로써 시스템 scalability 향상시키는 유용하다.

§  Code on demand (optional) - 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 있는 로직을 전송하여 기능을 확장시킬 있다.

§  Uniform Interface - 아키텍처를 단순화시키고 decouple시켜서 클라이언트, 서버 파트가 독립적으로 개선될 있도록 해준다.

§  REST 인터페이스의 원칙에 대한 가이드

§  리소스의 구별

§  개별적인 리소스는 요청에서 구별된다 - 기반의 REST 시스템에서의 URI 사용을 예로 있다. 리소스 자체는 클라이언트로 리턴되는 representation으로부터 개념적으로 분리되어 있다. 예를 들어, 서버는 데이터베이스를 전송하지 않는다, 단지 아마 어떤 데이터베이스 레코드를 나타내는 HTML, XML이나 JSON 등이 요청에서 구체적으로 요구되거나 서버의 구현에 따라서 예를 들어, 프랑스 어로, UTF-8 인코딩되어 보내질 것이다.

§  이들 representation 통한 리소스의 조작

§  클라이언트가 어떤 메타데이터가 첨부된 상태로 어떤 리소스의 representation 가지고 있을 , 만약 승인이 있다면, 서버에 있는 리소스를 변경 또는 삭제할 있는 충분한 정보를 가지고 있는 것이다.

§  자기-서술적 메시지

§  메시지는 자신을 어떻게 처리해야 하는지에 대한 충분한 정보를 포함해야 한다 - 예를 들어 어떤 파서를 불러야 하는지. 예는 MIME type 같은 인터넷 미디어 타입의 사용을 있다. 미디어 타입만 가지고도, 클라이언트는 어떻게 내용을 처리해야할 있어야 한다. 메시지를 이해하기 위해 내용까지 살펴봐야 한다면, 메시지는 자기-서술적이 아니다. 예를 들어, 단순히 "application/xml"이라는 미디어 타입은, 코드 다운로드가 사용되지 않으면, 내용을 가지고 무엇을 해야할지에 대해 충분히 알려주지 못한다.

§  애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어

§  만약에 클라이언트가 관련된 리소스에 접근하기를 원한다면, 리턴되는 representation에서 구별될 있어야 한다. 충분한 컨텍스트 속에서의 URI 제공해주는 하이퍼텍스트 링크의 예를 있겠다.

§  REST 주요한 목표

§  컴포넌트의 상호 연동 상의 확장성(scalability of component interactions)

§  인터페이스의 범용성(Genrality of interfaces)

§  컴포넌트의 독립적인 배포(Independent deployment of components)

§  지연을 감소시키고, 보안을 강화하고, 레거시 시스템을 인캡슐레이션 시키는 중간 컴포넌트(Intermediary components to reducelatency, enforce security and encapsulate legacy systems)

 

[출처-위키백과]





by 표지 | 2012/03/07 09:48 | 일상 & 전공 | 트랙백 | 덧글(0)
QR 코드 명함



이런것도 해보는군....으하하하
http://www.scany.net/kr/generator/




by 표지 | 2010/09/08 14:20 | 트랙백 | 덧글(0)
유시민에게 총명을 말하다.


미생지신(尾生之信)

미생(尾生)이 애인과 다리 아래에서 만나기로 약속했을 때, 중요한 것은 '다리 아래'라는 장소가 아니라 '만남' 그 자체였다.

확신하건대, 영리하고 총명하기로 정평이 난 유시민이라면 다리로 가는 길목의 물이 차올라 오르지 않은 곳에서 기다렸을 것이다.

유시민에 대하여 먼저 그 호칭을 어떻게 붙여야 할지 고민이 된다. 유 전 장관? 유 전 의원? 아니면 그냥 유시민 씨? 여러 가지로 생각해보았지만, 그러나 오늘은 긴급조치 9호의 박정희 시대부터 오늘에 이르기까지 같은 시기에 유사한 경험을 거쳐 온 동년배로서 그냥 유시민이라고 부르고 싶다.

그가 여러 측면에서 지니고 있는 탁월한 재능을 부인하고 싶지는 않다. 또한 민주화 진영에서 보면 그는 대단히 소중한 자산이다. 하지만 장기적인 역사적 시각에서 보자면, 유시민이 지니고 있는 현재의 정치적 자산 역시 지난 시기 이 땅의 민주주의를 위해 투쟁해왔던 모든 이들의 희생과 헌신의 성과라는 점을 잊어서는 안 된다. 겸허한 자세, 반성할 줄 아는 용기, 자기가 지금 조금 손해를 보더라도 공적(公的) 가치를 위하여 희생하고 헌신하는 모습을 통하여 정말 큰 그릇으로 성장하기를 바란다.

자신을 능히 절제할 줄 아는 것을 강(强)하다고 한다. 그래서 자신을 이길 줄 아는 사람이 가장 강한 것이다.

反求諸己

얼마 전 국회 평직원으로 30년 가깝게 근무한 사람으로부터 서글픈 얘기를 들었다. 옛날과 달리 지금 국회의원 중 젊은 사람들이 2/3 정도 되고 또 그들 대부분 민주화를 외치던 사람들이라 국회가 정말 변할 것으로 생각했는데, 젊은 사람들도 기존의 나이든 국회의원과 똑같아졌다는 것이었다.

2010년 벽두, 여야를 막론하고 작금의 정치판은 분열과 혼돈 그 자체이다. 이는 민의(民意)의 대표체로서의 본래의 의미에서 벗어나 개인적 출세 및 집단적 권력욕의 수단으로 전락한 채 역으로 대중들에게 고통과 좌절을 안겨주고 있는 기존 정치의 붕괴 과정이다. 이 나라의 정치 시스템은 민중의 의지를 전혀 반영하고 있지 못하기 때문에 근본적으로 불안정할 수밖에 없다.

최근 박진영이 정치권의 구애를 '거절'한 사실에서 드러나듯 정치에 대한 대중적 실망감이 극대화되고 있어 이제껏 이 땅의 모든 출세한 사람들에게 절대적인 흡인력을 지니고 있던 국회의원이라는 '주가'는 급속도로 떨어지고 있는 중이고 조만간 폭락 조짐도 보인다.

난세에 영웅이 나오는 법이다. 정치인 유시민에 대한 현재의 '지지'는 노무현 전 대통령과 그의 '이미지'에 의해 만들어진 것이며, 그것이 사상누각으로 될지 아니면 문전옥답이 될 것인지는 지금부터 드러날 스스로의 힘과 '실천'에 달려 있다. 국민참여당의 실권자나 친노 세력의 적통 계승자라는 지위에 스스로 만족한다면 구태여 그 어려운 자기반성이나 자기 혁신을 할 필요가 없다. 하지만 만약 지금 고심참담, 어지러이 흩어져 있는 민주개혁 세력과 대중들을 한데 끌어안아 보듬고 이 시대의 '패자(覇者)'로서의 포부를 지니고 있다면, 근본적인 자기반성과 성찰이 그 선결 과제로서 필수적 요소가 된다. 그럴 때만이 비로소 그러한 포부가 이뤄질 수 있는 풍부한 계기를 만들어낼 수 있기 때문이다.

국민참여당의 창당이 "분열(分裂)이 아니냐?"는 질문에 "분열이 아니라 '분립(分立)'이다."라고 답변했던 것이나 참여정부의 성격을 '사회자유주의'라고 칭하는 방식의 자기 방어 논리만으로는 지금의 모습 이상으로 더 크게 발전할 수 없다. 유시민이 "옳은 말을 싸가지 없게 하는 사람"이라는 누군가의 말에 고개를 끄덕였던 사람이 대단히 많다는 사실을 인정해야만 한다.

반구제기(反求諸己), 어떤 일이 잘못 되었을 때 자신에게서 원인을 찾아야 할 터이다. 군자는 허물을 자신에게서 구하고, 소인은 허물을 남에게서 구한다. 남과 상황을 핑계대지 않고 먼저 자신에게 물어야 한다.

참여정부의 적자를 자임하면서 현재 차기 대권주자 후보군에서 지지율 2위에 랭크되어 있는 유시민은 참여정부 당시의 이라크 파병, 한나라당과의 대연정 시도, 양극화의 심화, 아파트원가 공개, FTA 문제를 비롯하여 보건복지부 장관 시절의 의료민영화 논란 등의 문제에 대하여 솔직한 고백이 필요하다.

사실 민주 세력의 도덕성은 이 땅의 대중들이 기대고 싶어 했던 가장 큰 덕목이었다. "한나라당은 차떼기로 부정을 했는데 우리는 겨우 얼마밖에 안 된다"라거나, "MB의 반민주 반민중 정책에 비하면 우리의 정책이 얼마나 좋았는가!"는 등 항상 수구 세력과 비교하고 그로부터 자신의 상대적 우위와 정당성을 주장하려는 자체가 이미 자기 존립의 근거를 근저로부터 붕괴시키는 것이다. 부정부패의 문제에서 비록 그 '양'과 '상황'에 있어서는 꽤나 억울한 면이 존재할지라도, 대중들의 간절한 기대를 무너뜨렸다는 것 그 자체로서 '질적으로' 이미 수구 세력의 부정부패보다 훨씬 큰 부정부패라는 사실을 인식해야만 한다.

유시민과 서울역 회군

포털사이트 Daum의 아고라를 보면, 본인이 직접 한 주장은 아니지만 유시민을 80년 서울역 학생시위 당시 '투쟁파'의 지도자로 기술하고 있다. 그러면서 유시민의 '포효하는' 사진이 '투항파'의 상징으로서의 심재철 사진과 함께 크게 실려 있다. 이와 같은 글이 한두 개가 아니라 상당히 많아 온라인에서는 "80년 당시 유시민이 투쟁파의 지도자였다"는 주장이 '역사적 진실'로서 널리 퍼져 있다.

이는 명백한 역사 왜곡이다. 유시민은 당시 심재철과 함께 온건파로서 서울역 회군을 주장했던 학생회 소속이었다. 당시 강경파이자 투쟁파는 이해찬이나 김부겸을 비롯한 '복학생파'였다. 유시민을 투쟁파의 지도자로 묘사하는 것은 역사의 왜곡일 뿐 아니라 당시 서울역 시위에 참여하였고 투쟁을 실천했던 수많은 동지들과 선배들을 모독하는 결과를 낳을 수 있다. 본인이 적당한 시기에 직접 해명을 해야 한다고 본다.

비록 작은 일이지만 작은 일일수록 엄격한 자기 잣대가 필요하다. 그리고 바로 이러한 점이야말로 보수 세력과 차별화된 덕목이다.

지나간 과거의 '유지' 혹은 '유산'에 기대 자기 자리만 지키면서 토끼를 기다리는 수주대토(守株待兎)의 길이 아니라 더 큰 인물로 괄목상대(刮目相對)하는 내일을 보고 싶다.

'총명'이란 무엇인가?

마지막으로 첨언할 게 있다.

"총명하다"는 것은 그저 단순히 영리하다거나 머리가 좋다는 말이 아니다.
"밖으로 남이 하는 비판적인 말을 잘 들을 수 있는 것을 귀가 밝다고 하여" '총(聰)'이라 하고, "안으로 자기 자신을 잘 성찰할 수 있는 것을 눈이 밝다고 하여" '명(明)'이라 한다.

부디 남의 비판도 잘 받아들이고 자신을 잘 성찰하여 진정으로 총명한 유시민이기를 바란다.

/* 기사출처:
http://www.pressian.com/article/article.asp?article_num=40100126111805&section=01 
유시민에게 총명을 말하다.
[기고]
기사입력 2010-01-26 오전 11:23:21
소준섭 국제관계학 박사
*/





by 표지 | 2010/01/27 11:02 | 트랙백 | 덧글(3)
제2회 사진전에 출품한 사진 정리


지난 12월 12일 금천구청에서 제2회 사진전을 햇었다.

이제 정리하여 올린다.

[예송리 해변/보길도 예송리/이런 사진을 꼭 찍어보고 싶었습니다. 예송리에서 하루밤을 지내고, 다음날 글씐바위로 이동중에 예송리 전경을 찍은 사진입니다. 탁~틔인것이 시원라기도하고, 하늘은 하얀 구름을 먹음고 있고, 바다는 전복의 먹이인 미역을 기르고,]


[해에게서 소년에게/추암에서 일출을 기다리다가/일출전 바다속 바위...최남선이 생각나서... ]

[시간/부석사 석등 뒤로 보이는 일몰을 담았습니다./해가 지고 나면 운판, 북, 목어를 두두려서 세상 만물에게 휴식 시간이 왔음을 알리듯...우리들도 여행을 마치면 다음 여행을 기약하며 제자리로 돌아가듯이 말입니다.]


[귀항/외포리...바다로 고기잡이를 나갔던 배들이 항구로 돌아오는 사진입니다./일몰 후 모두 제자리로 돌아올 시간...여행자들도 모두 돌아갈 곳이 있기에 안정적으로 여행을 하는 것같다.]

이상 사진 네개를 걸었다.
내년에는 좀더 느낌이 있는 사진을 찍어보자~~~^^




by 표지 | 2010/01/15 00:14 | 산행 & 여행일지 | 트랙백 | 덧글(2)
◀ 이전 페이지 다음 페이지 ▶


Spend Your Time Wise~!!!
by 표지
카테고리
일상 & 전공
렌즈와카메라 & 사진기술
산행 & 여행일지
산행 & 여행정보
야생초 & 사진
방명록 & 링크알림
미분류
포토로그
최근 등록된 덧글
반갑습니다~~ ..
by 표지 at 03/04
꺄. 안녕하세요 ..
by 김희선 at 02/19
우와! 섶다리를 보..
by 박선민 at 04/09
우왕... 사진을 잘..
by 봉PD at 11/25
전예람!ㅋㅋㅋ 나야..
by 박혜빈 at 07/17
오 멋져요~
by 신상욱 at 03/20
철산동이면......
by 빨간차차 at 03/04
그럼요~~~잘 ..
by 표지 at 03/03
잘지내세요?^^ ..
by 빨간차차 at 02/28
안녕하세요. 반갑..
by 표지 at 02/24
최근 등록된 트랙백
밀양
by 골룸 에세이 (goll..
rss

skin by teatime