SlideShare a Scribd company logo
1 of 36
REST Architecture Overview  2009-07-10 Oracle Principal Consultant Byungwook Cho (byungwook.cho@oracle.com)
ICE Break REST Maldives!!
ICE Break WebService Service Companies Open API Roy Fielding REST
Agenda REST의 기원 Basic of REST Basic REST example Advanced REST example Advanced REST REST Implementation Reference Architecture of REST REST Stub generator 구현시 고려 사항
1. REST의 기원 웹(HTTP)의 공동 창시자 Roy Fielding의 2000년 박사 논문에 소개 됨. 기존의 웹이 HTTP의 장점을 100% 활용하지 못하고 있음 네트워크 아키텍쳐 (Not a protocol) De facto Standard 오픈 진영(Google ,Amazon) 에 의해서 주도됨
2. Basic of REST REST의 구성
2. Basic of REST Examples ,[object Object]
자바스터디 시스템에서 이름이 “bcho”이 사용자 정보를 조회
자바스터디 시스템에서 이름이 “bcho”인 사용자 정보를 변경
자바스터디 시스템에서 이름이 “bcho”인 사용자 정보를 삭제URI : http://www.javastudy.co.kr/users/bchoMethod : POST <user>  <name>조대협</name>  <email>bcho@bea.com</email> </user> Resource Action Message URI : http://www.javastudy.co.kr/users/bchoMethod : GET   URI : http://www.javastudy.co.kr/users/bchoMethod : PUT <user>  <name>조대협</name>  <email>bcho@bea.com</email> </user> URI : http://www.javastudy.co.kr/users/bchoMethod : DELETE  
2. Basic of REST Resource ,[object Object]
Select(GET)에 한하여 Query String을 이용하여 URI를 정의할 수 있다.
Resource의 URI는 Human Readable한 포맷을 사용한다.
Unique한 URI 사용으로 인해서 GET에 대해서 웹캐쉬 사용가능  비약적인 성능 향상http://example.org/products/1234 http://example.org/user/scott http://example.org/account/XA123-345 http://example.org/products?category=food 권장 			http://example.org/orders/2007/11 권장하지 않는 사용법 	http://example.org/ITGKA/XATTY
2. Basic of REST Action ,[object Object]
오래된 네트워크 장비나 서버의 경우 GET/POST만 허용
HTTP 헤더 사용 x-http-method
POST,GET,PUT,DELETE 만으로 표현하기 어려운 행위가 있음
행위를 재 정의 : 이메일을 보낸다  이메일을 생성한다.
제어의 의미나 기타 행위에 대해서는 내부적인 표준 마련  PUT : CONTROL,[object Object]
3. Basic REST example REST를 이용하여 계좌이체를 수행하는 애플케이션  시나리오 ,[object Object]
STEP 2. 사용자 ID로 해당 사용자가 가지고 있는 계좌 목록을 조회한다.
STEP 3. AZA12093계좌에서 ADK31242계좌로 $100를 계좌 이체한다.
STEP 4. 이체된 결과를 확인한다.,[object Object]
3. Basic REST example STEP 3. AZA12093계좌에서 ADK31242계좌로 $100를 계좌 이체한다. 계좌 이체 Transaction 이 생성됨 계좌 이체 Transaction Id
3. Basic REST example STEP 4. 하루가 지난후 계좌이체 결과를 조회 계좌 이체 진행중
4. Advanced REST example 이것이 과연 REST? 가장 기초중의 기초, 그럼 진짜 REST는? 앞의 예제에서 누락된 HTTP의 특성 LINK의 누락 Link는 리소스간의 관계를 정의할 수 있다. Link를 통해서 리소스간의 BPM과 같은 Work-flow를 정의할 수 있다. Content-Type의 누락 Input/Output Message Type을 정의할 수 있다.
4. Advanced REST example STEP 1. 사용자가 인터넷 뱅킹 시스템에 로그인을 한다.  로그인 했다고 가정 STEP 2. 사용자 ID로 해당 사용자가 가지고 있는 계좌 목록을 조회한다 Content-Type으로 메세지의 형태를 정의 다음 상태로의 LINK를 제공하여 상태 흐름을 정의 Self descriptive message 구현
4. Advanced REST example STEP 3. AZA12093계좌에서 ADK31242계좌로 $100를 계좌 이체한다.
4. Advanced REST example STEP 4. 하루가 지난후 계좌이체 결과를 조회 계좌 이체 진행중
5. Advanced REST Advanced REST 기능 ,[object Object]
Content-Type을 이용한 Resource의 메시지 형태 정의
Conditional GET을 이용한 성능 향상
ETAG/Last Modified를 이용한 동시 Update 방지
Stateless ,[object Object]
가독성이 떨어짐

More Related Content

What's hot

2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬Channy Yun
 
Open API 발표자료 - 김연수
Open API 발표자료 - 김연수Open API 발표자료 - 김연수
Open API 발표자료 - 김연수Yeon Soo Kim
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. restTerry Cho
 
Json view 예제 설명
Json view 예제 설명Json view 예제 설명
Json view 예제 설명Hyung Eun Jin
 
Web server
Web serverWeb server
Web serverHerren
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summaryHoChul Shin
 
Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장LJH11
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Manjong Han
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기Ji Heon Kim
 
Naver 오픈api-마이그레이션가이드 20160913-리뷰
Naver 오픈api-마이그레이션가이드 20160913-리뷰Naver 오픈api-마이그레이션가이드 20160913-리뷰
Naver 오픈api-마이그레이션가이드 20160913-리뷰NAVER D2
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 Sungchul Park
 
SOAP REST 이해
SOAP REST 이해SOAP REST 이해
SOAP REST 이해Jake Yoon
 
1. 웹 어플리케이션 아키텍처
1. 웹 어플리케이션 아키텍처1. 웹 어플리케이션 아키텍처
1. 웹 어플리케이션 아키텍처JinKyoungHeo
 
가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계Herren
 
Web and server
Web and serverWeb and server
Web and server민정 김
 

What's hot (20)

REST
RESTREST
REST
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
 
Open API 발표자료 - 김연수
Open API 발표자료 - 김연수Open API 발표자료 - 김연수
Open API 발표자료 - 김연수
 
RESTful Java
RESTful JavaRESTful Java
RESTful Java
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 
RESTful Mashup
RESTful MashupRESTful Mashup
RESTful Mashup
 
Restful API guide
Restful API guideRestful API guide
Restful API guide
 
Json view 예제 설명
Json view 예제 설명Json view 예제 설명
Json view 예제 설명
 
Web server
Web serverWeb server
Web server
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장Chap8 - HTTP 완벽가이드 8장
Chap8 - HTTP 완벽가이드 8장
 
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
Flask, Redis, Retrofit을 이용한 Android 로그인 서비스 구현하기
 
Spring 4.x Web Application 살펴보기
Spring 4.x Web Application  살펴보기Spring 4.x Web Application  살펴보기
Spring 4.x Web Application 살펴보기
 
Naver 오픈api-마이그레이션가이드 20160913-리뷰
Naver 오픈api-마이그레이션가이드 20160913-리뷰Naver 오픈api-마이그레이션가이드 20160913-리뷰
Naver 오픈api-마이그레이션가이드 20160913-리뷰
 
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처 스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
스프링 코어 강의 3부 - 웹 애플리케이션 아키텍처
 
SOAP REST 이해
SOAP REST 이해SOAP REST 이해
SOAP REST 이해
 
1. 웹 어플리케이션 아키텍처
1. 웹 어플리케이션 아키텍처1. 웹 어플리케이션 아키텍처
1. 웹 어플리케이션 아키텍처
 
가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계가용성을 고려한 웹 서비스 인프라 설계
가용성을 고려한 웹 서비스 인프라 설계
 
Web and server
Web and serverWeb and server
Web and server
 
2015 oce garuda
2015 oce garuda2015 oce garuda
2015 oce garuda
 

Viewers also liked

수업환경 구축 - 웹데이터베이스 구축 밀 실습
수업환경 구축 - 웹데이터베이스 구축 밀 실습수업환경 구축 - 웹데이터베이스 구축 밀 실습
수업환경 구축 - 웹데이터베이스 구축 밀 실습Yoonwhan Lee
 
082303 장이현(sencha architecture)
082303 장이현(sencha architecture)082303 장이현(sencha architecture)
082303 장이현(sencha architecture)Yihyun Jang
 
모더니즘하이테크 212140039-이하나_212140042_이현지_212140044_윤정은[1]
모더니즘하이테크  212140039-이하나_212140042_이현지_212140044_윤정은[1]모더니즘하이테크  212140039-이하나_212140042_이현지_212140044_윤정은[1]
모더니즘하이테크 212140039-이하나_212140042_이현지_212140044_윤정은[1]yje895
 
212140041 김한솔 212140054 김선효
212140041 김한솔 212140054 김선효212140041 김한솔 212140054 김선효
212140041 김한솔 212140054 김선효khsol851
 
Http 헤더
Http 헤더Http 헤더
Http 헤더kidoki
 
HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수Yeon Soo Kim
 
그리스 건축양식
그리스 건축양식그리스 건축양식
그리스 건축양식Dahae Kim
 
201313101 이상희 기말고사
201313101 이상희 기말고사201313101 이상희 기말고사
201313101 이상희 기말고사Sanghee Lee
 
비콘이 뭐냐?
비콘이 뭐냐?비콘이 뭐냐?
비콘이 뭐냐?lee lean
 
212140018이진희 주택설계 ppt
212140018이진희 주택설계 ppt212140018이진희 주택설계 ppt
212140018이진희 주택설계 ppt2jinee
 
Trendy minds ppt-template
Trendy minds ppt-templateTrendy minds ppt-template
Trendy minds ppt-templatetrendy123
 
[멘토링] 건축공학부 소개 PPT
[멘토링] 건축공학부 소개 PPT[멘토링] 건축공학부 소개 PPT
[멘토링] 건축공학부 소개 PPTInhye Lee
 
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTPNAVER D2
 
이민의 포트폴리오
이민의 포트폴리오이민의 포트폴리오
이민의 포트폴리오Min Lee
 
정혜인 포트폴리오
정혜인 포트폴리오정혜인 포트폴리오
정혜인 포트폴리오henni31
 
Mobile UX Design Essential
Mobile UX Design EssentialMobile UX Design Essential
Mobile UX Design EssentialJunsang Dong
 
야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자
야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자
야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자Yunseok Song
 

Viewers also liked (20)

Web http spec
Web http specWeb http spec
Web http spec
 
수업환경 구축 - 웹데이터베이스 구축 밀 실습
수업환경 구축 - 웹데이터베이스 구축 밀 실습수업환경 구축 - 웹데이터베이스 구축 밀 실습
수업환경 구축 - 웹데이터베이스 구축 밀 실습
 
082303 장이현(sencha architecture)
082303 장이현(sencha architecture)082303 장이현(sencha architecture)
082303 장이현(sencha architecture)
 
모더니즘하이테크 212140039-이하나_212140042_이현지_212140044_윤정은[1]
모더니즘하이테크  212140039-이하나_212140042_이현지_212140044_윤정은[1]모더니즘하이테크  212140039-이하나_212140042_이현지_212140044_윤정은[1]
모더니즘하이테크 212140039-이하나_212140042_이현지_212140044_윤정은[1]
 
212140041 김한솔 212140054 김선효
212140041 김한솔 212140054 김선효212140041 김한솔 212140054 김선효
212140041 김한솔 212140054 김선효
 
Http 헤더
Http 헤더Http 헤더
Http 헤더
 
HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수
 
Grecia 2015
Grecia 2015Grecia 2015
Grecia 2015
 
그리스 건축양식
그리스 건축양식그리스 건축양식
그리스 건축양식
 
201313101 이상희 기말고사
201313101 이상희 기말고사201313101 이상희 기말고사
201313101 이상희 기말고사
 
비콘이 뭐냐?
비콘이 뭐냐?비콘이 뭐냐?
비콘이 뭐냐?
 
212140018이진희 주택설계 ppt
212140018이진희 주택설계 ppt212140018이진희 주택설계 ppt
212140018이진희 주택설계 ppt
 
Trendy minds ppt-template
Trendy minds ppt-templateTrendy minds ppt-template
Trendy minds ppt-template
 
[멘토링] 건축공학부 소개 PPT
[멘토링] 건축공학부 소개 PPT[멘토링] 건축공학부 소개 PPT
[멘토링] 건축공학부 소개 PPT
 
Http
HttpHttp
Http
 
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP[D2 CAMPUS]웹 개발자의 스펙 : HTTP
[D2 CAMPUS]웹 개발자의 스펙 : HTTP
 
이민의 포트폴리오
이민의 포트폴리오이민의 포트폴리오
이민의 포트폴리오
 
정혜인 포트폴리오
정혜인 포트폴리오정혜인 포트폴리오
정혜인 포트폴리오
 
Mobile UX Design Essential
Mobile UX Design EssentialMobile UX Design Essential
Mobile UX Design Essential
 
야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자
야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자
야매피티 : 피피티로 날밤새지 말고 피피티로 무시받지 말자
 

Similar to REST Ovewview

제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처dgmit2009
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발SangHoon Han
 
Atom publishing protocol
Atom publishing protocolAtom publishing protocol
Atom publishing protocolrooya85
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우NAVER D2
 
Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)광희 조
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술Changhwan Yi
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요dgmit2009
 
Booting Spring Data REST
Booting Spring Data RESTBooting Spring Data REST
Booting Spring Data REST경원 이
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10hungrok
 
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)진태 이
 
SJBoard Project Portfolio
SJBoard Project PortfolioSJBoard Project Portfolio
SJBoard Project PortfolioJuyoungKang7
 
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfHo Jeong Im
 
REST API 디자인 개요
REST API 디자인 개요REST API 디자인 개요
REST API 디자인 개요nexusz99
 

Similar to REST Ovewview (20)

제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
제 4회 DGMIT R&D 컨퍼런스 : REST API - 리소스 지향적 아키텍처
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발ASP.NET Web API를 이용한 오픈 API 개발
ASP.NET Web API를 이용한 오픈 API 개발
 
Atom publishing protocol
Atom publishing protocolAtom publishing protocol
Atom publishing protocol
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)Restful 제대로 알기(Getting to know the RESTful)
Restful 제대로 알기(Getting to know the RESTful)
 
REST Concept
REST ConceptREST Concept
REST Concept
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술WoO 2012-Web 서비스 기술
WoO 2012-Web 서비스 기술
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
DGMIT 제3회 R&D 컨퍼런스 r&d1 team : HTTP 프로토콜 개요
 
Booting Spring Data REST
Booting Spring Data RESTBooting Spring Data REST
Booting Spring Data REST
 
Servlet3
Servlet3Servlet3
Servlet3
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
 
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
Http2(http2.0,g rpc,cookie,session,idempotent, x forwarded-for)
 
SJBoard Project Portfolio
SJBoard Project PortfolioSJBoard Project Portfolio
SJBoard Project Portfolio
 
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
 
REST API 디자인 개요
REST API 디자인 개요REST API 디자인 개요
REST API 디자인 개요
 

More from Terry Cho

Kubernetes #6 advanced scheduling
Kubernetes #6   advanced schedulingKubernetes #6   advanced scheduling
Kubernetes #6 advanced schedulingTerry Cho
 
Kubernetes #4 volume & stateful set
Kubernetes #4   volume & stateful setKubernetes #4   volume & stateful set
Kubernetes #4 volume & stateful setTerry Cho
 
Kubernetes #3 security
Kubernetes #3   securityKubernetes #3   security
Kubernetes #3 securityTerry Cho
 
Kubernetes #2 monitoring
Kubernetes #2   monitoring Kubernetes #2   monitoring
Kubernetes #2 monitoring Terry Cho
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 introTerry Cho
 
머신러닝으로 얼굴 인식 모델 개발 삽질기
머신러닝으로 얼굴 인식 모델 개발 삽질기머신러닝으로 얼굴 인식 모델 개발 삽질기
머신러닝으로 얼굴 인식 모델 개발 삽질기Terry Cho
 
5. 솔루션 카달로그
5. 솔루션 카달로그5. 솔루션 카달로그
5. 솔루션 카달로그Terry Cho
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐Terry Cho
 
서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)Terry Cho
 
1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스Terry Cho
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA Terry Cho
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드Terry Cho
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개Terry Cho
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작Terry Cho
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법Terry Cho
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개Terry Cho
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화Terry Cho
 

More from Terry Cho (20)

Kubernetes #6 advanced scheduling
Kubernetes #6   advanced schedulingKubernetes #6   advanced scheduling
Kubernetes #6 advanced scheduling
 
Kubernetes #4 volume & stateful set
Kubernetes #4   volume & stateful setKubernetes #4   volume & stateful set
Kubernetes #4 volume & stateful set
 
Kubernetes #3 security
Kubernetes #3   securityKubernetes #3   security
Kubernetes #3 security
 
Kubernetes #2 monitoring
Kubernetes #2   monitoring Kubernetes #2   monitoring
Kubernetes #2 monitoring
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
머신러닝으로 얼굴 인식 모델 개발 삽질기
머신러닝으로 얼굴 인식 모델 개발 삽질기머신러닝으로 얼굴 인식 모델 개발 삽질기
머신러닝으로 얼굴 인식 모델 개발 삽질기
 
5. 솔루션 카달로그
5. 솔루션 카달로그5. 솔루션 카달로그
5. 솔루션 카달로그
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐3. 마이크로 서비스 아키텍쳐
3. 마이크로 서비스 아키텍쳐
 
서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)서비스 지향 아키텍쳐 (SOA)
서비스 지향 아키텍쳐 (SOA)
 
1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스1. 아키텍쳐 설계 프로세스
1. 아키텍쳐 설계 프로세스
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA
 
모바일 개발 트랜드
모바일 개발 트랜드모바일 개발 트랜드
모바일 개발 트랜드
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
 
R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작R 프로그래밍-향상된 데이타 조작
R 프로그래밍-향상된 데이타 조작
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
 

REST Ovewview

  • 1. REST Architecture Overview 2009-07-10 Oracle Principal Consultant Byungwook Cho (byungwook.cho@oracle.com)
  • 2. ICE Break REST Maldives!!
  • 3. ICE Break WebService Service Companies Open API Roy Fielding REST
  • 4. Agenda REST의 기원 Basic of REST Basic REST example Advanced REST example Advanced REST REST Implementation Reference Architecture of REST REST Stub generator 구현시 고려 사항
  • 5. 1. REST의 기원 웹(HTTP)의 공동 창시자 Roy Fielding의 2000년 박사 논문에 소개 됨. 기존의 웹이 HTTP의 장점을 100% 활용하지 못하고 있음 네트워크 아키텍쳐 (Not a protocol) De facto Standard 오픈 진영(Google ,Amazon) 에 의해서 주도됨
  • 6. 2. Basic of REST REST의 구성
  • 7.
  • 8. 자바스터디 시스템에서 이름이 “bcho”이 사용자 정보를 조회
  • 9. 자바스터디 시스템에서 이름이 “bcho”인 사용자 정보를 변경
  • 10. 자바스터디 시스템에서 이름이 “bcho”인 사용자 정보를 삭제URI : http://www.javastudy.co.kr/users/bchoMethod : POST <user>  <name>조대협</name>  <email>bcho@bea.com</email> </user> Resource Action Message URI : http://www.javastudy.co.kr/users/bchoMethod : GET   URI : http://www.javastudy.co.kr/users/bchoMethod : PUT <user>  <name>조대협</name>  <email>bcho@bea.com</email> </user> URI : http://www.javastudy.co.kr/users/bchoMethod : DELETE  
  • 11.
  • 12. Select(GET)에 한하여 Query String을 이용하여 URI를 정의할 수 있다.
  • 13. Resource의 URI는 Human Readable한 포맷을 사용한다.
  • 14. Unique한 URI 사용으로 인해서 GET에 대해서 웹캐쉬 사용가능  비약적인 성능 향상http://example.org/products/1234 http://example.org/user/scott http://example.org/account/XA123-345 http://example.org/products?category=food 권장 http://example.org/orders/2007/11 권장하지 않는 사용법 http://example.org/ITGKA/XATTY
  • 15.
  • 16. 오래된 네트워크 장비나 서버의 경우 GET/POST만 허용
  • 17. HTTP 헤더 사용 x-http-method
  • 18. POST,GET,PUT,DELETE 만으로 표현하기 어려운 행위가 있음
  • 19. 행위를 재 정의 : 이메일을 보낸다  이메일을 생성한다.
  • 20.
  • 21.
  • 22. STEP 2. 사용자 ID로 해당 사용자가 가지고 있는 계좌 목록을 조회한다.
  • 23. STEP 3. AZA12093계좌에서 ADK31242계좌로 $100를 계좌 이체한다.
  • 24.
  • 25. 3. Basic REST example STEP 3. AZA12093계좌에서 ADK31242계좌로 $100를 계좌 이체한다. 계좌 이체 Transaction 이 생성됨 계좌 이체 Transaction Id
  • 26. 3. Basic REST example STEP 4. 하루가 지난후 계좌이체 결과를 조회 계좌 이체 진행중
  • 27. 4. Advanced REST example 이것이 과연 REST? 가장 기초중의 기초, 그럼 진짜 REST는? 앞의 예제에서 누락된 HTTP의 특성 LINK의 누락 Link는 리소스간의 관계를 정의할 수 있다. Link를 통해서 리소스간의 BPM과 같은 Work-flow를 정의할 수 있다. Content-Type의 누락 Input/Output Message Type을 정의할 수 있다.
  • 28. 4. Advanced REST example STEP 1. 사용자가 인터넷 뱅킹 시스템에 로그인을 한다.  로그인 했다고 가정 STEP 2. 사용자 ID로 해당 사용자가 가지고 있는 계좌 목록을 조회한다 Content-Type으로 메세지의 형태를 정의 다음 상태로의 LINK를 제공하여 상태 흐름을 정의 Self descriptive message 구현
  • 29. 4. Advanced REST example STEP 3. AZA12093계좌에서 ADK31242계좌로 $100를 계좌 이체한다.
  • 30. 4. Advanced REST example STEP 4. 하루가 지난후 계좌이체 결과를 조회 계좌 이체 진행중
  • 31.
  • 32. Content-Type을 이용한 Resource의 메시지 형태 정의
  • 34. ETAG/Last Modified를 이용한 동시 Update 방지
  • 35.
  • 37.
  • 38. 관계가 XML Element로 표현되기 때문에 XML 스키마의 복잡도가 증가함
  • 39.
  • 40. 하나의 Resource에 대해서 여러 데이터 포맷지원이 가능한 (Multiple representation)
  • 42.
  • 43. 5. Advanced REST Conditional GET Web Proxy를 이용하여, 캐슁된 내용이 변경이 되지 않았으면 캐쉬 내용을 재활용하는 기술 서버 성능과 자원사용의 효율성이 비약적으로 높아짐 Resource에 대한 URI가 유일하기 때문에 가능함 Last-Modified 헤더나 ETAG 헤더를 이용하여 구현 가능 ※ Resource마다 Last-Modified 값을 관리해야 함 Conditional GET with Last-Modified Header Client REST GET /partners/UK 200 OK Last-Modified: Sun, 21 Jan 2007 09:35:19 GMT [response] Some time later GET /partners/UK If-Modified-Since: Sun, 21 Jan 2007 09:35:19 GMT 304 Not Modified No content
  • 44. 5. Advanced REST Conditional GET with ETag Client REST GET /partners/UK 200 OK ETag:”some UID” [response] Some time later GET /partners/UK If-None-Match:”some UID” 304 Not Modified No content
  • 45. 5. Advanced REST ETAG/Last Modified를 이용한 동시 Update 방지 Etag나 Last-Modified 헤더 이용 동시에 두 사용자가 하나의 Resource에 업데이트를 하여 데이터가 달라지는 문제를 방지 REST Client1 Client2 GET /party/42 200 OK ETag:”some UID” [response] GET /party/42 200 OK ETag:”some UID” [response] POST /party/42 ETag:”some UID” Update가 끝난후 Etag가 변경됨 POST /party/42 ETag:”some UID” 예전 Etag값으로 Update를 요청했기 때문에 412 에러를 내보냄 412 Precondition not satisfied
  • 46. 6. REST implementation Jersey JSR-311 JAX-RS Reference Implementation (https://jersey.dev.java.net/) 장점 구현이 매우 쉬움 (Annotation 사용) Multiple contents representation (XML,JSON) 지원 단점 Advanced REST의 모든 특징을 수용하기에는 부족함 특징 WAR 형태로 배포됨 JAXB를 이용한 XML2JAVA Binding 사용 (VO를 그대로 사용할 수 있음)
  • 47. 6. REST implementation URI HTTP Method Content-Type URI Content-Type: Input Message Type Content-Type : Output Message Type Read Parameter from Query String http://example.org/resource?search=XX Read Parameter from URI http://example.org/resource/{container}
  • 48.
  • 50.
  • 51. REST/XML, REST JSON등 다양항 프로토콜지원
  • 56. Mash up, Function Adding 등의 REST 서비스 기능 변경
  • 57. SLA Management & Monitoring
  • 58. Throttling, Alert, Status 모니터링 기능 제공REST/JSON REST/XML WS XML RPC Protocol Conversion Enterprise Service Bus Handling Cross cutting concern Mediation Logic SLA mgmt & Monitoring PLUG IN PLUG IN REST REST REST Components Business Logic Business Logic
  • 59. 7. Reference Architecture of REST REST with ESB Architecture Consumer http://www.rest.com/social http://www.rest.com/social/users/profile http://openapi.rest.com/social/users/profile http://openapi.rest.com/social /OpenAPI/REST/v1.0 http://www.rest.com/OpenAPI/REST/v1.0/social/users/profile REST Component Enterprise Service Bus Order Resource Security Provider Access Layer Business Resource Local Proxy External Edge Proxy REST Component Common Proxy Party Resource Business Resource Local Proxy Internal Edge Proxy Business Resource Local Proxy REST Component Content Resource /InterAPI/REST/v1.0 http://openapi.rest.com/InterAPI/REST/v1.0/social/users/profile
  • 60. 7. Reference Architecture of REST ESB Architecture for REST Resource Application CCC-Logging Generic Proxy Monitoring Edge Proxy Auditing Mediation Orchestration Logic Common Proxy Transformation Compensation Security Framework OAM SLA Alert Local Proxy Throttling CCC-Exception Handling Ignore Reporting Business Resource Auto retry Human Error handling Components
  • 61. 7. Reference Architecture of REST Mash up in ESB Enterprise Service Bus REST Expose Layer Open API Business Service Local Proxy Service Access Layer REST Business Service Common Proxy Edge Proxy Local Proxy Service Open API Business Service Local Proxy Service REST Mashup Local Proxy Open API
  • 62. 8. REST Stub generator REST의 또다른 문제점 클라이언트 STUB이 없음 (WS는 자동 STUB이 있음) REST 서비스에 대한 메뉴얼을 만들어서 웹에 배포해야함 해결안 REST 소스코드를 자동 분석하여 CLIENT STUB과 메뉴얼을 자동생성 JAX-RS Source Code Parser(Qdox) Client Stub Code Velocity(Code Template) XML (Meta Info) REST API Manual(HTML) XSLT (Style Sheet) Generator Tool Kit
  • 63. 8. REST Stub generator REST Stub generator implementation sample REST API Manual(HTML) JAX-RS Source Code Client Stub Code
  • 64. 8. REST Stub generator Mapping Rule 1..N 1..1 Resource name Method Overview Endpoint URI Endpoint URI Http method Response type Description Description Method Summary ||Method||EndpointURI||Http Method||Summary|| Input Parameter Use Common Standard Header || headerparam || type || required || description || Path parameter || name || type || description || Query parameter || name || type || required || description || Message payload ||element name || type || multiplicity|| description|| From JAXB code XML Scheme Output Parameter Use Common Standard Header || headerparam || type || required || description || Message payload ||element name || type || multiplicity|| description|| From JAXB code XML Scheme Http response code || Http response code || description || Sample Input Http-method : Endpoint-uri : Http header & values Message Payload Output Http-response code Http header & values Message Payload public void method(@HttpHeader (“x-REST-requestid”)String requestid We will use header with “HeaderConfigVo”will not support @HttpHeader annotation in this phase JAX-RS source code Meta Information
  • 65. 9.구현시 고려사항 REST 아키텍쳐로 접근 프로젝트에서 개발자들이 RPC 형태에 익숙해져 있음 Operation이나Method와 같은 행위 중심으로 설계에서 Resource 중심의 설계 DB설계 고려 Resource 가 DB로 어떻게 Mapping 될것인가에 대한 사전 고려 필요 Primary Key와 ResourceID (URI)간의 연관 관계 고려 Alternative Key (AK) 고려 캐쉬는 양날의 검 웹의 특징을 잘 살리고 성능을 극대화 시킴 Last Modified 시간을 유지해야 함 전문 설계 REST는 표준이 없기 때문에, 내부 표준 전문 구현이 중요 헤더에 어떤 데이타를 넣을것인지 HTTP Response Code를 어떻게 사용할것인지 정의 필요
  • 66. Thank you For more information please visit my blog. http://bcho.tistory.com