아키텍쳐(Architecture)
일반적으로 소프트웨어 분야에서 아키텍쳐라 하면 컴포넌트와 데이터 그리고 이들 간의 인터페이스 등 S/W를 구성하는 요소들의 적절히 구성하고 배치하여 원하는 목적을 이뤄내는 것을 말합니다. 원하는 목적에는 기능 , 성능 , 확장성 등 다양한 이슈들이 포함될 수 있습니다.
REST 아키텍쳐(Architecture)
REST는 Roy Fielding 에 의해서 처음 사용된 용어로서 웹의 특성을 활용한 서비스 호출 Architecture를 말합니다. 좀 더 자세히 살펴보면 ,
웹상이 모든 것들은 URL로 표현(Representation)됩니다. 이렇게 표현된 URL을 클릭하는 순간 다른 URL로 이동하게 됩니다. 이 과정을 달리 표현하면 해당 URL이 표현하고 있는 상태(State)에서 다른 URL의 상태로 이동(Transfer)하는 것입니다. 이렇게 잘 정의된 URL을 통해 웹 애플릿케이션을 구동시키고 그 결과(상태)를 전달(Transfer)받아 처리하는 것이 바로 REST 방식 입니다.
REST는 실제 표준은 아니지만 HTTP/URL/MIME Type같은 웹 표준을 사용한다. 따라서 실제 표준 기술이기도 합니다. 최근 Sun에서는 JRS311, Java API for RESTful Web services 을 발표하기도 했습니다.
REST에 대해 좀 더 실제 예를 들어 이해해보도록 하겠습니다.
가령, 아래 URL은 직원들의 명단을 조회하는 서비스입니다. 이 서비스를 통해 직원 명단을 받는 클라이언트는 서버측의 구현이 어떻게 되어 있는지 상관할 필요가 없습니다.
클라이언트가 이 서비스를 요청하면 다음과 같은 결과를 받게 됩니다.
<?xml version="1.0"?>
<p:Employee xmlns:p="http://wisefree.com" xmlns:xlink="http://www.w3.org/1999/xlink">
<Employee id="603045" xlink:href="http://wisefree.com/employee/603045"/>
<Employee id="741146" xlink:href="http://wisefree.com/employee/741146"/>
</p:Employee>
또한 클라이언트는 전달받은 직원 명단 중 603545번의 자세한 내용을 받기 위해 다음과 같이 REST 서비스를 호출합니다.
http://wisefree.com/employee/603045
클라이언트는 다음과 같이 보다 자세한 결과를 받게 됩니다.
<?xml version="1.0"?>
<p:Employee xmlns:p="http://wisefree.com" xmlns:xlink="http://www.w3.org/1999/xlink">
<Employee-ID>741146</Employee-ID>
<Name>jisu park</Name>
<Resume xlink:href="http://wisefree.com/employee/741146/resume/"/>
</p:Employee>
이처럼 REST 방식은 "서버 주소 + 서비스 이름 + 자원" 으로 이루어진 URL을 호출하고 이에 대한 자원을 전달받으면서 서비스를 수행하는 구조입니다.
이러한 REST 방식으로 시스템을 디자인할 때는 다음의 사항을 주의해야 합니다.
- 제공하고자 하는 모든 conceptual 리소스(엔티티)들을 서비스로 제공합니다.
- 각 리소스들에 대한 URL을 설계합니다. 이 때, 주의할 점은 URL은 명사로 설계하며 서버 주소 + 서비스 이름 + 자원 방식으로 설계합니다.
http://wisefree.com/employee/getEmployee?id=603045 우울한 설계
http://wisefree.com/employee/603045 , 멋진 설계
- 이 때, URL을 통해 필요한 자원을 계속해서 추적하여 얻어(HTTP GET) 가거나 삽입(HTTP PUT), 삭제(HTTP DELETE)할 수 있게 분류 설계합니다. 결코 한번에 모든 정보를 제공해서는 안됩니다.
http://wisefree.com/employee 전체 직원 명단을 얻어 온다.
http://wisefree.com/employee/603045 특정 직원의 자세한 정보를 얻어 온다.(HTTP GET)
http://wisefree.com/employee/603045 특정 직원의 해당 정보를 갱신 온다.(HTTP PUT)
- HTTP GET을 통해 제공되는 모든 자원은 있는 그 상태의 정보를 제공하는 것이지 자원의 상태를 변경하고 그에 대한 결과를 제공하는 것은 아닙니다.
- 제공되는 결과는 Ajax등 RIA 기술을 사용할 경우 반드시 XML 포맷을 사용한다. 그 외의 경우에는 응용 프로그램의 상태에 따라 적절히 결정합니다.
자! 간략하지만 아주 중요한 사항들입니다. 개발자와 아키텍쳐 분들은 반드시 유의해 주길 바랍니다.
'Architecture' 카테고리의 다른 글
IoT 클라우드 레퍼런스 모델 (0) | 2014.07.16 |
---|---|
Ajax Framewirk Review (0) | 2009.05.02 |
서비스 플랫폼 구축을 위한 솔루션은? (0) | 2008.10.28 |
구글 Gear에 대한 이해를 위한 도움말 (2) | 2007.06.09 |
2007 Web 2.0 korea 발표 후기 (3) | 2007.03.29 |
S/W Development on the Web Platform (0) | 2007.03.25 |