3장 보안과 추적성 REST API 로깅 javax.servlet.Filter를 활용하고, log4j를 이용한 REST API 로깅 예제. 대규모 분산 환경에서 로그 데이터는 개발자가 디버깅을 시작할 수 있는 거의 유일한 단서이다. 따라서, 로깅은 서버 문제를 추척하고 오류가 발생하기 직전까지의 과정을 재연하는데 상당한 도움이 된다. 이를위해 로그는 아래와 같은 정보를 포함하여야 한다. 현재 날짜/시간 로깅 레벨 스레드명 간단한 로거명 상세한 메시지 최초 호출자(initiator) 또한, 요청 관련 메타 정보(요청 실행 소요 시간, 요청 상태, 요청 객체의 크기 등 상세한 정보)를 로깅하면 성능 이슈나 응답 지연 문제를 조사하는데 도움이 된다. 아래와 같은 민감한 데이터는 마스킹 또는 숨김처리를 해야한다. 고객 정보(신용카드 정보) 암호: 패스워드 은닉기(obfuscator) 개인 식별 정보(Personally Identifiable Information): 성명, 이메일, 신용카드 번호 -> 치환, 셔플링, 암호화 기법으로 마스킹 처리한다. 더 자세한 정보는 Data Masking 참고. 기본적으로 민감한 정보를 다루는 리소스의 페이로드는 로깅을 하지 않는다. 로깅 시스템을 모니터링 시스템과 연계하면 백그라운드로 SLA 지표 등 통계 관련 자료를 수집할 수 있다. 페이스 북은 스크립(Scribe) 이라는 자체 솔루션을 개발했고, 구글은 대퍼(Dapper) 라는 수천 개의 요청으로부터 데이터를 샘플링하여 추적 가능할 정도의 충분한 데이터로 가공하여 저장한다. 대부분의 경우 충분한 양의 샘플링만으로도 상세한 내용을 추적하는데 큰 도움이 된다는 것이 밝혀졌다. RESTful 서비스 검증 JAX-RS는 리소스 클래스를 검증하기 위한 Bean Validation 기능을 갖고 있다. 아래의 두 단계를 거쳐 검증한다. 리소스 메소드 파라미터에 어노테이션을 붙여 제약...