# 강의 영상
이전 강의 (2023.02.23 - [IT] - [강의 정리] Distributed System 1.2: Computing networking)에서 웹을 클라이언트와 서버로 하고, 내부에서 네트워크 통신이 어떻게 일어나는지를 예시로 분산 시스템을 살펴 봤습니다.
이번 장에서는 또 다른 예시로 하나의 온라이 쇼핑몰을 예시로 들어보겠습니다.
우리는 온라인 쇼핑몰에서 무언가를 결제할 때 신용카드를 통해 결제하곤 합니다. 이때 이 온라인 상점에 들어있는 결제 시스템은 고객이 준 신용카드 정보를 이용해서 실제 카드 서비스 회사에 이 카드정보가 유효한지, 등을 점검하게 됩니다.
예를 들어 코드로 표현 하자면
위 코드를 보면 중간에 paymentService 를 호출해서 결과를 얻고 있는 거로 보입니다. 하지만 생각해보면, 결제 서비스는 다른 회사에서 실행하는 다른 원격 노드에서 실행되고 있습니다. 이처럼 원격에서 실행되고 있는 프로그램에 함수 형태로 요청 할수 있는 방식을 RPC, Remote Payment Service 라고 합니다.
이 RPC 를 사용하면 코드 상에서는 로컬에서 함수를 호출한것 처럼 보이지만, 실제로는 저기 네트워크로 연결되어 있는 실제 서버인 것입니다. 이러한 방식을 "Location transparency" (위치 투명성) 이라고 부릅니다. 즉, 시스템은 리소스가 어디에 위치해 있는지 숨긴다는 의미입니다.
하지만 네트워크로 연결되어 있기 때문에 여러 문제들이 존재합니다.
1. What if the service crashing during the function call?
2. What if a message is lost?
3. What if a message is delayed?
4. Is something goes wrong, is it safe to retry?
이렇듯 네트워크 단절 고려, 재시도 여부 등등 네트워크 문제들이 있을 수 있습니다.
하지만 그럼에도 RPC 통신을 사용해서 구현 해오고 있는데, RPC 통신을 사용하는 예시는 아래와 같습니다.
이번 장에서는 앞 장에서와 마찬가지로 분산 환경에서 고려해야할 점을 특정 상황, 이번에는 온라인 상점 을 예시로, 을 통해 살펴보았습니다.
다음 장 부터는 실제 분산 시스템에 대해서 천천히 살펴보도록 하겠습니다.
'아키텍쳐' 카테고리의 다른 글
[강의 정리] Distributed System 2.2: The Byzantine Generals Problem (0) | 2023.02.27 |
---|---|
[강의 정리] Distributed System 2.1: The two generals problem (0) | 2023.02.23 |
[강의 정리] Distributed System 1.2: Computing networking (0) | 2023.02.23 |
[강의 정리] Distributed System 1.1: Introduction (0) | 2023.02.21 |
Nginx 는 어떻게 구성되어 있고, 어떻게 동작하는가? (2) | 2022.11.13 |
댓글