Top

RESTful 자바 패턴과 실전 응용 [고성능 RESTful 서비스 제작을 위한 베스트 프랙티스]

  • 원서명RESTful Java Patterns and Best Practices (ISBN 9781783287963)
  • 지은이바크티 메타
  • 옮긴이이일웅
  • ISBN : 9788960776463
  • 20,000원
  • 2014년 12월 19일 펴냄
  • 페이퍼백 | 196쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

페이스북, 트위터 등 유명 SNS 서비스에서 이미 오래 전에 도입되어 일반화된 RESTful 서비스. 이 책은 REST에 관하여 기초 원리부터 실무적인 예제 코드까지 차례로 설명하고, 현장에서 애플리케이션을 설계/개발하는 실무자들에게 큰 도움이 될 만한 베스트 프랙티스를 제시한다. RESTful 서비스에 관심있는 아키텍트, 개발자, 그리고 웹의 기본기를 다지고자 하는 모든 독자에게 추천할 만한 도서다.

이 책에서 다루는 내용

■ JAX-RS 2.0 API를 이용하여 RESTful 웹 서비스를 작성하는 방법

■ RESTful 서비스 관점에서 OAuth와 보안 관련 고급 지식 습득

■ 캐싱 기법, 검증, 사용량 제한, 비동기 처리, 기타 애플리케이션의 응답성 제고를 위한 베스트 프랙티스 학습

■ RESTful 서비스의 페이지네이션, 문서화, 테스팅에 관한 베스트 프랙티스

■ RESTful 서비스를 이용한 애플리케이션 작성 시 알아두어야 할 HATEOAS와 마이크로 아키텍처

■ REST의 미래, 진화하는 표준 명세, 그리고 유명 기업들의 REST 실제 적용 사례 연구

■ 웹훅(WebHook), 웹소켓(WebSocket), SSE 등 실시간 데이터를 클라이언트에게 전달하기 위한 기술 간의 비교 고찰

이 책의 대상 독자

RESTful 서비스를 작성하여 생산성을 향상하기를 바라는 초심 개발자가 기본적인 식견을 쌓기 위해 읽어도 좋고, 복잡하고 어려운 주제를 캐기 좋아하는 숙련된 개발자에게도 큰 도움이 될 것이다.

이 책의 구성

1장. ‘REST: 태생의 기원’에서는 REST의 기본 개념부터 RESTful 서비스를 설계하는 방법과 관련 베스트 프랙티스를 살펴본다. 자바 언어로 RESTful 서비스를 작성하기 위한 JAX-RS 2.0 API에 대해서 다룬다.

2장. ‘리소스 설계’에서는 다양한 요청/응답 패턴과 콘텐츠 협상, 리소스 버저닝, REST 응답 코드 등을 살펴본다.

3장. ‘보안과 추적성’에서는 REST API의 보안과 추적성이라는 쉽지 않은 문제와 관련된 접근 통제, OAuth 인증, 에러 처리, 감사와 검증 패턴 등에 대해 알아본다.

4장. ‘성능을 고려한 설계’에서는 성능과 관련된 설계 원칙을 다룬다. 캐싱 원리와, REST에서 비동기 작업과 실행 시간이 오래 걸리는 작업을 어떻게 처리할 것인지 설명하고, 패치를 이용하여 부분 업데이트를 하는 방법을 살펴본다.

5장. ‘고급 설계 원칙’에서는 사용량 제한, 응답 페이지네이션, 국제화/지역화 같은 고급 주제들을 상세한 예제 코드와 함께 설명한다. 또 확장 가능성, HATEOAS, REST 서비스의 테스팅과 문서화 등에 대해서도 소개한다.

6장. ‘최신 표준과 REST의 미래’에서는 실시간 API인 웹훅(WebHook), 웹소켓(WebSocket), PuSH, SSE에 대해 살펴보고 여러 가지 측면에서 비교/대조해본다. 그리고 웹훅이나 웹소켓 같은 신기술이 애플리케이션에서 실제로 응용되는 사례를 알아보고, 마이크로 서비스(micro service)에서 REST 기술이 어떤 역할을 담당하는지 간략히 설명한다.

부록에서는 깃허브(GitHub), 트위터(Twitter), 페이스북(Facebook) 서비스에 적용된 다양한 유형의 REST API에 대해 알아보고, ‘2장, 리소스 설계’부터 ‘5장, 고급 설계 원칙’에 걸쳐 학습한 내용과 연관되는 부분들을 최종 점검해본다.

저자/역자 소개

저자 서문

소셜 네트워킹, 클라우드 컴퓨팅과 모바일 세상이 한데 어우러져, 인터넷을 통해 REST 방식 으로 서로 다른 네트워크 장치 간에 통신을 가능하게 해주는 새로운 기술들이 봇물처럼 쏟아지고 있다. REST는 무상태성, 확장의 용이함, 가시성, 신뢰성의 특징과 다국어 플랫폼으로서의 장점을 고루 갖춘 기술이다.

이 책은 여러분이 실무 현장에서 핸드북으로 참조하면서 RESTful 서비스의 진정한 위력을 십분 발휘할 수 있도록 명쾌하고 실용적인 정보를 제공하는 동시에, 여러분이 개발하려는 애플리케이션에 적용해볼 수 있는 기초 안내 서적이 되어줄 것이다. 페이스북, 트위터, 깃허브, 페이팔 등 유명 플랫폼의 API를 서로 비교해보면서 RESTful 서비스의 흥미진진한 능력을 소개하고, 여섯 개 장에 걸쳐 풍부한 예제 코드와 각종 팁을 설명하면서 여러분을 무한한 가능성의 세계로 안내한다.

이 책을 모두 읽을 때 쯤이면, 독자 여러분은 이 책에서 배운 베스트 프랙티스를 기본으로 성공적인 RESTful 서비스를 설계하고 구현할 수 있을 것이다!

저자 소개

바크티 메타 (Bhakti Mehta)

2013년 발간된 『Developing RESTful Services with JAX-RS 2.0, WebSockets, and JSON(JAX-RS 2.0, 웹소켓, JSON으로 RESTful 서비스 개발하기)』(팩트 출판사)의 저자다. 13년 이상 자바 EE 및 관련 기술 기반의 소프트웨어 개발자, 설계자, 아키텍트 업무를 수행했다. 오픈 소스 소프트웨어 개발에 열정적인 그녀는 글래스피시(GlassFish) 오픈 소스 애플리케이션 서버의 초기 프로젝트 멤버 중 한 명이다. 컴퓨터 공학 학사/석사 학위를 취득했으며, 주요 연구 분야는 서버 사이드 기술, 웹 서비스, 클라우드 애플리케이션의 회복력, 확장성, 안정성, 성능을 위한 아키텍처다. 현재 블루 진 네트워크(Blue Jeans Network) 사의 수석 소프트웨어 엔지니어이고, ISV 파트너와 개발자 커뮤니티에서 사용 가능한 RESTful 서비스의 개발 업무를 맡고 있으며, RESTful 서비스의 백엔드 인프라와 성능, 확장성, 안정성 문제를 담당하고 있다. 각종 컨퍼런스의 상시 연설자로 활동하면서, https://home.java.net과 Dzone 같은 포털 사이트에 많은 기사, 블로그, 기술 팁 등을 기고해왔다. 개인적으로 킥복싱, 여행, 독서를 즐겨 한다. 트윗 주소는 @bhakti_mehta다.

옮긴이의 말

다른 IT 분야도 마찬가지겠지만, 웹 개발자는 알고 있어야 할 것들이 매우 많습니다. 그러나 역시 가장 중요한 것은 기본이고, 기본기만 탄탄하다면 어떤 새로운 기술이 등장하더라도 이를 소화해내는 데 무리가 없을 것입니다.

이 책은 그런 점에서 웹 개발자로서 반드시 알아야 할 HTTP의 기본에서 출발해 비교적 최근에 등장한 기술에 이르기까지 알찬 내용들이 빼곡히 담겨 있습니다. 분량상 모든 주제를 세세히 다루지는 않지만, 독자 여러분들이 이 책을 읽고 난 다음에 학습해야 할 방향을 잡는 데 제격이고, 현장 경험이 풍부한 고급 개발자들도 한 번쯤 되새겨 볼 만한 내용이 많습니다.

RESTful, 즉 ‘REST답게 웹을 개발하자’는 말이 사실 웹이 작동하는 토대인 HTTP 프로토콜의 기본에 충실하자는 것이고, 새로운 기술을 추가하거나 덧붙이는 행위가 아닌, 오히려 웹이 탄생할 당시의 의도를 되살려보자는 의미라고 생각합니다.

REST라는 말을 처음 쓴 로이 필딩(Roy Fielding) 박사가 1999년 발표된 HTTP 1.1 프로토콜에 관한 명세서, RFC 2616의 주요 필자 중 한 사람임을 상기하면 그리 놀랄 만한 일도 아닙니다. 여러분이 아직까지 HTTP 명세에 GET, POST 말고도 다른 메소드가 있다는 말을 들어본 적도, 사용해본 적도 없는 개발자라면 이 책은 웹에 관한 전혀 새로운 지평을 열어줄 것이라 확신합니다.

옮긴이 소개

이일웅

10년 넘게 국내 대기업/공공기관 SI 프로젝트에 참여한 웹 개발자이자, RESTful 웹 서비스, OAuth 등으로 타 시스템과 데이터를 연동한 경험이 풍부한 자바 엔지니어다. 두 딸아이에게 좋은 아빠가 되기 위해 언제나 노력하고 있으며 시간이 나면 피아노곡을 연주한다.

개인 홈페이지는 http://www.bullion.pe.kr이다.

목차

목차
  • 1장 REST: 태생의 기원
    • REST 개요
      • REST와 무상태성
    • 리차드슨 성숙도 모델
      • 레벨 0: 원격 프로시저 호출
      • 레벨 1: REST 리소스
      • 레벨 2: 추가 HTTP 메소드
      • 레벨 3: HATEOAS
    • 안전과 멱등성
      • 안전한 메소드
      • 멱등한 메소드
    • RESTful 서비스의 설계 원칙
      • 리소스 URI 결정
      • 리소스 메소드 결정
        • HTTP 메소드와 REST
        • PUT과 POST의 차이
    • 리소스 표현형 결정
      • API 구현
        • 자바 RESTful 서비스 API(JAX-RS)
      • RESTful 서비스 배포
      • RESTful 서비스 테스팅
        • JAX-RS 2.0 클라이언트 API
        • RESTful 리소스 접근
    • 리소스 설계에 관한 베스트 프랙티스
    • 참고 자료
    • 정리

  • 2장 리소스 설계
    • REST 리소스 패턴
    • 콘텐츠 협상
      • HTTP 헤더를 이용한 콘텐츠 협상
      • URL 패턴을 이용한 콘텐츠 협상
    • 엔티티 제공자와 여러 가지 표현형
      • StreamingOutput
      • ChunkedOutput
      • 저지와 JSON
        • POJO 기반의 JSON 바인딩
        • JAXB 기반의 JSON 바인딩
        • 저수준의 JSON 파싱과 처리 지원
    • API 버저닝
      • URI에 버전 지정
      • 요청 쿼리 파라미터에 버전 지정
      • Accept 헤더에 버전 지정
    • 응답 코드와 REST 패턴
    • 참고 자료
    • 정리

  • 3장 보안과 추적성
    • REST API 로깅
      • REST API 로깅에 관한 베스트 프랙티스
        • 여러 서비스에 걸쳐 상세하고 일관된 패턴의 로그를 수집
        • 민감한 데이터를 숨김
        • 최초 호출자를 로깅
        • 기본적으로 페이로드는 로깅 안 함
        • 요청 관련 메타정보 로깅
        • 로깅 시스템을 모니터링 시스템과 연계
    • RESTful 서비스 검증
      • 검증 예외 처리 및 응답 코드
    • RESTful 서비스의 예외 처리
    • 인증과 인가
      • 인증의 의미
        • SAML
      • 인가의 의미
        • OAuth
      • OAuth 1.0과 2.0의 차이
        • 권한 승인
      • 리프레시 토큰과 액세스 토큰
        • 저지와 OAuth 2.0
      • OAuth에 관한 REST API 베스트 프랙티스
        • 액세스 토큰 수명 제한
        • 인가 서버에서 리프레시 토큰을 제공
        • SSL과 암호화 적용
      • 오픈아이디 접속
    • REST 아키텍처 컴포넌트
    • 참고 자료
    • 정리

  • 4장 성능을 고려한 설계
    • 캐싱의 원리
      • 캐싱 상세
      • 캐싱 헤더의 종류
        • 강한 캐싱 헤더
        • 약한 캐싱 헤더
        • Expires와 Cache-Control - max-age
      • Cache-Control 헤더와 지시어
        • Last-Modified와 ETag
      • Cache-Control 헤더와 REST API
      • ETags
        • ETags 헤더의 작동 원리
        • ETags 헤더와 REST API
        • ETags의 종류
      • 페이스북 REST API와 ETags
        • RESTEasy와 캐싱
    • REST에서 비동기 작업 및 실행 시간이 긴 작업
      • 비동기 요청/응답 프로세스
    • 비동기 리소스에 관한 베스트 프랙티스
      • 202 Accepted 메시지 전송
      • 큐에 대기 중인 객체의 만료 시각 설정
      • 메시지 큐를 이용한 비동기 처리
    • HTTP 패치와 부분 업데이트
    • JSON 패치
    • 참고 자료
    • 정리

  • 5장 고급 설계 원칙
    • 사용량 제한 패턴
      • 프로젝트 레이아웃
      • 상세 코드 보기
      • 사용량 한도를 초과하지 않기 위한 베스트 프랙티스
        • 캐싱
        • 반복적인 호출을 피하라
        • 요청을 로깅하라
        • 폴링을 피하라
        • 스트리밍 API 지원
    • 응답 페이지네이션
      • 페이지네이션 유형
        • 오프셋 페이지네이션
        • 기간 페이지네이션
        • 커서 페이지네이션
      • 프로젝트 레이아웃
    • 국제화와 지역화
    • Miscellaneous topics(미번역)
      • HATEOAS
      • 페이팔 REST API와 HATEOAS
      • REST와 확장성
      • REST API 관련 기타 사항
      • RESTful 서비스 테스팅
        • RESTful 서비스 문서화
    • 참고 자료
    • 정리

  • 6장 최신 표준과 REST의 미래
    • 실시간 API
    • 폴링
      • 푸시 모델: PubSubHubbub
      • 스트리밍 모델
        • SSE
        • SSE와 자바스크립트
        • SSE와 Jersey
    • 웹훅
      • 웹소켓
    • 기타 실시간 지원 API
      • XMPP 109
      • BOSH over XMPP
    • 웹훅, 웹소켓, SSE 비교
    • REST와 마이크로 서비스
      • 단순성
      • 문제들을 분리
      • 확장와 축소
      • 능력을 명확하게 분리
      • 프로그래밍 언어 독립
    • 참고 자료
    • 정리

  • 부록
  • _깃허브 REST API 개요
  • _페이스북 그래프 API 개요
  • _트위터 REST API 개요

  • 옮긴이 기고문
  • _넷빈즈 설치와 사용법

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.41 : 표]