REST

2023-01-03
MSA 환경에서 일하는 Front-end 개발자들을 만나면 나는 종종 이런 말을 듣는다. 주문서 화면을 만들 때 4~5개를 호출해서 조합해야 했어요. - 개발자 A 기부 상세 화면을 만드는데 같은 기부 번호로 여러 API를 호출해서 조합하고 있어요 - 개발자 B 벡엑드 개발자분이 API를 너무 잘 개 만들어 놔서 하나의 화면을 만들때 여러 번 호출하는게 너무 불편합니다. 에러 처리하기도 그렇고요. 한 번의 호출로 만들어 달라고 요청했는데 거부 당했습니다. - 개발자 C 무엇이 문제인가?...
2018-09-06
이 글은 읽기 전에 이전 글까지 모두 읽을 필요는 없습니다. 다만 맥락을 이해하기 위해서 1편 은 미리 읽는 편이 좋습니다. REST 기반의 간단한 분산 트랜잭션 구현 -1편 TCC 개관 REST 기반의 간단한 분산 트랜잭션 구현 - 2편 TCC Cancel, Timeout REST 기반의 간단한 분산 트랜잭션 구현 - 3편 TCC Confirm(Eventual Consistency) REST 기반의 간단한 분산 트랜잭션 구현 - 4편 REST Retry 지난 글까지는 REST 기반의 분산 트랜잭션 구현 방법 중 하나인 TCC Try-Confirm/Cancel 를 다루었다. 분산 환경에서는 네트워크 오류나 일시적인 서비스 중지 등으로 인해 일시적으로 REST 요청이 실패할 수 있다. 이러한 문제는 REST 요청을 재시도...
2018-08-06
REST 기반의 간단한 분산 트랜잭션 구현 -1편 TCC 개관 REST 기반의 간단한 분산 트랜잭션 구현 - 2편 TCC Cancel, Timeout REST 기반의 간단한 분산 트랜잭션 구현 - 3편 TCC Confirm(Eventual Consistency) REST 기반의 간단한 분산 트랜잭션 구현 - 4편 REST Retry 지난 글 에서는 TCC Try-Confirm/Cancel 에서 'Confirm 하기 전에 실패하는 경우' 일관성을 유지하기 위한 방법으로 Timeout과 Cancel을 이야기했다. 그리고  휴리스틱 예외를 언급하면서 결과적 일관성 모델을 간단하게 소개하였다. 이번 글은 결과적 일관성 모델을 사용하여 'TCC Confirm 중에 실패하는 경우' 일관성을 유지하는 방법에 대해 다룬다....
2018-07-06
REST 기반의 간단한 분산 트랜잭션 구현 -1편 TCC 개관 REST 기반의 간단한 분산 트랜잭션 구현 - 2편 TCC Cancel, Timeout REST 기반의 간단한 분산 트랜잭션 구현 - 3편 TCC Confirm(Eventual Consistency) REST 기반의 간단한 분산 트랜잭션 구현 - 4편 REST Retry 지난 글 에서는 분산된 REST 시스템들 간의 트랜잭션을 HTTP와 REST 원칙으로 접근하여 해결하는 방법으로 TCC Try-Confirm/Cancel 를 소개하였고 온라인 쇼핑몰에서 일어날 수 있는 '주문' 시나리오를 예시로 설명하였다. TCC는...
2018-05-15
REST 기반의 간단한 분산 트랜잭션 구현 -1편 TCC 개관 REST 기반의 간단한 분산 트랜잭션 구현 - 2편 TCC Cancel, Timeout REST 기반의 간단한 분산 트랜잭션 구현 - 3편 TCC Confirm(Eventual Consistency) REST 기반의 간단한 분산 트랜잭션 구현 - 4편 REST Retry 안영회 님은 마이크로 서비스 공부하게 책 하나 추천해주세요 글에서 마이크로 서비스 간 일관성을 유지하는 방법 중 하나로 TCC Try-Confirm/Cancel 를 언급했다. How to become eventually consistent. 오호… 지옥(?)에 오신 것을 환영한다. 내 모듈에 처리된 내용이 다른 모듈과 일관성을 유지하려면 어떻게 해야 하나? 알려진 방법으로...
2017-12-18
REST(Representational state transfer) 를 개발 하다 보면 하나의 기저(Base) URL(예. http://www.example.gov/api/v1/magazines.json )을 사용하면서 호출 하는 클라이언트에 따라 조회 조건(URL Query)이나 응답(Response)이 완전히 달라져야 하는 경우가 있다. 이를 Spring Framework에서 구현하는 방법을 소개 한다. HTTP Header 사용 필자가 가장 먼저 고려 했던 방법은 HTTP Header를 사용하는 것이었다. 먼저 클라이언트에 따라 다르게 처리 하기 위해 새로운 미디어 타입을 정의 했다. application/vnd.example.clientA+json...
2017-09-11
안내: 이 글은 운영을 중단한 개인 블로그 에 2015년 6월 9일 올렸던 글 입니다. 다음에 기고할 글과 연관이 있어 옮겨 둡니다. 어떤 경로나 동기로 찾았는지 지금은 기억나지 않지만, StackOverflow의 REST 관련 질문 이 눈에 들어왔다. 인터페이스 계층과 비즈니스 계층 사이에 인터페이스로 API를 두는 것이 바람직한 아키텍처 설계인지 그리고 API 구축에 REST를 채용하는 것이 적절하냐( is it a good architectural design to have an API (web service) as the interface between the interface layer and business layer...
더보기