분산 아키텍처 완벽 이해 🌐 | 클라이언트-서버 모델 & 서비스 레지스트리
📌 클라이언트(Client)
- 역할: 서비스 요청자, 소비자
- 기능: 원하는 서비스에 대한 요청을 보냅니다.
- 예시: 웹 브라우저, 모바일 앱
📌 서버(Server)
- 역할: 서비스 응답자, 제공자
- 기능: 클라이언트의 요청에 따라 서비스를 제공합니다. 서비스 제공자 정보를 저장합니다.
- 예시: 웹 서버, 데이터베이스 서버
📌 레지스트리(Registry)
- 역할: 서비스 제공자들이 서비스를 등록하고, 사용자가 원하는 서비스를 찾을 수 있도록 도와줍니다.
- 기능:
- 서비스 등록: 서비스 제공자가 자신의 서비스를 레지스트리에 등록합니다.
- 서비스 검색: 사용자가 원하는 서비스를 찾을 수 있도록 도와줍니다. 이를 위해 효율적인 검색 알고리즘이 필요합니다.
- 예시: 서비스 디렉토리, UDDI(Universal Description, Discovery, and Integration)
🔍 구성 요소 및 동작 방식
📝 서비스 등록
- 서비스 제공자는 자신의 서비스를 레지스트리에 등록합니다.
- 등록 시, 서비스 이름과 바인딩 정보(서비스의 기능 및 접근 방법)를 함께 제공합니다.
- 레지스트리는 이 정보를 저장하고 관리합니다.
🔎 서비스 검색
- 사용자는 레지스트리를 통해 원하는 서비스를 검색합니다.
- 레지스트리는 저장된 정보를 바탕으로 사용자에게 적합한 서비스를 찾아줍니다.
- 효율적인 검색을 위해 다양한 알고리즘이 사용될 수 있습니다.
🔄 서비스 요청 및 응답
- 클라이언트는 레지스트리에서 얻은 정보를 바탕으로 서버에 서비스 요청을 보냅니다.
- 서버는 요청을 받아 처리하고, 결과를 클라이언트에게 응답합니다.
🛡️ 프록시(Proxy)
- 역할: 클라이언트와 서버 간의 중계자 역할을 합니다.
- 기능:
- 클라이언트 측에서는 서비스 제공자 정보를 저장합니다.
- 서버 측에서는 서비스 요청자 정보를 저장합니다.
- 장점:
- 보안 강화: 직접적인 통신을 피할 수 있습니다.
- 로드 밸런싱: 요청을 분산시켜 서버 부하를 줄일 수 있습니다.
🔗 객체 직렬화 및 역직렬화
- 객체 직렬화(Serialization): 객체를 네트워크를 통해 전송할 수 있도록 바이트 스트림으로 변환하는 과정입니다.
- 객체 역직렬화(Deserialization): 바이트 스트림을 다시 객체로 복원하는 과정입니다.
- 사용 이유: 네트워크를 통해 데이터를 주고받을 때, 객체를 직렬화하여 전송하고, 수신 측에서 이를 역직렬화하여 원래 객체로 복원해야 합니다.
📈 예제 흐름
- 서비스 제공자가 레지스트리에 '서비스 A'를 등록합니다.
- 사용자가 레지스트리에서 '서비스 A'를 검색하여 정보를 얻습니다.
- 클라이언트가 '서비스 A'의 정보를 바탕으로 서버에 요청을 보냅니다.
- 서버는 요청을 처리하고, 결과를 클라이언트에게 응답합니다.
- 프록시는 클라이언트와 서버 간의 통신을 중계하며, 필요에 따라 객체를 직렬화/역직렬화합니다.
이러한 구조를 통해 분산 시스템은 확장성과 유연성을 높이면서도, 다양한 서비스 요청과 제공을 효율적으로 관리할 수 있습니다.
참고 자료 📚
[1] velog - [마이크로서비스 패턴] 3. 프로세스 간 통신 (https://velog.io/@daehoon12/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%8C%A8%ED%84%B4-3.-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B0%84-%ED%86%B5%EC%8B%A0)
[2] Naver Blog - 웹서비스, XML, UDDI, WSDL, SOAP (https://blog.naver.com/brian1105/70026155869)
[3] velog - [프로그래머스] 데브코스 데이터엔지니어링 TIL Day 68 (https://velog.io/@jujaemin/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%8D%B0%EB%B8%8C%EC%BD%94%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%97%94%EC%A7%80%EB%8B%88%EC%96%B4%EB%A7%81-TIL-Day-68)
[4] 티스토리 - 07/12 68일차 Kafka - usiohc - 티스토리 (https://usiohc.tistory.com/80)