분산 아키텍처 완벽 이해 🌐 | 클라이언트-서버 모델 & 서비스 레지스트리

김상욱·2024년 7월 14일
0
post-thumbnail

분산 아키텍처 완벽 이해 🌐 | 클라이언트-서버 모델 & 서비스 레지스트리


📌 클라이언트(Client)

  • 역할: 서비스 요청자, 소비자
  • 기능: 원하는 서비스에 대한 요청을 보냅니다.
  • 예시: 웹 브라우저, 모바일 앱

📌 서버(Server)

  • 역할: 서비스 응답자, 제공자
  • 기능: 클라이언트의 요청에 따라 서비스를 제공합니다. 서비스 제공자 정보를 저장합니다.
  • 예시: 웹 서버, 데이터베이스 서버

📌 레지스트리(Registry)

  • 역할: 서비스 제공자들이 서비스를 등록하고, 사용자가 원하는 서비스를 찾을 수 있도록 도와줍니다.
  • 기능:
    • 서비스 등록: 서비스 제공자가 자신의 서비스를 레지스트리에 등록합니다.
    • 서비스 검색: 사용자가 원하는 서비스를 찾을 수 있도록 도와줍니다. 이를 위해 효율적인 검색 알고리즘이 필요합니다.
  • 예시: 서비스 디렉토리, UDDI(Universal Description, Discovery, and Integration)

🔍 구성 요소 및 동작 방식

📝 서비스 등록

  • 서비스 제공자는 자신의 서비스를 레지스트리에 등록합니다.
  • 등록 시, 서비스 이름과 바인딩 정보(서비스의 기능 및 접근 방법)를 함께 제공합니다.
  • 레지스트리는 이 정보를 저장하고 관리합니다.

🔎 서비스 검색

  • 사용자는 레지스트리를 통해 원하는 서비스를 검색합니다.
  • 레지스트리는 저장된 정보를 바탕으로 사용자에게 적합한 서비스를 찾아줍니다.
  • 효율적인 검색을 위해 다양한 알고리즘이 사용될 수 있습니다.

🔄 서비스 요청 및 응답

  • 클라이언트는 레지스트리에서 얻은 정보를 바탕으로 서버에 서비스 요청을 보냅니다.
  • 서버는 요청을 받아 처리하고, 결과를 클라이언트에게 응답합니다.

🛡️ 프록시(Proxy)

  • 역할: 클라이언트와 서버 간의 중계자 역할을 합니다.
  • 기능:
    • 클라이언트 측에서는 서비스 제공자 정보를 저장합니다.
    • 서버 측에서는 서비스 요청자 정보를 저장합니다.
  • 장점:
    • 보안 강화: 직접적인 통신을 피할 수 있습니다.
    • 로드 밸런싱: 요청을 분산시켜 서버 부하를 줄일 수 있습니다.

🔗 객체 직렬화 및 역직렬화

  • 객체 직렬화(Serialization): 객체를 네트워크를 통해 전송할 수 있도록 바이트 스트림으로 변환하는 과정입니다.
  • 객체 역직렬화(Deserialization): 바이트 스트림을 다시 객체로 복원하는 과정입니다.
  • 사용 이유: 네트워크를 통해 데이터를 주고받을 때, 객체를 직렬화하여 전송하고, 수신 측에서 이를 역직렬화하여 원래 객체로 복원해야 합니다.

📈 예제 흐름

  1. 서비스 제공자가 레지스트리에 '서비스 A'를 등록합니다.
  2. 사용자가 레지스트리에서 '서비스 A'를 검색하여 정보를 얻습니다.
  3. 클라이언트가 '서비스 A'의 정보를 바탕으로 서버에 요청을 보냅니다.
  4. 서버는 요청을 처리하고, 결과를 클라이언트에게 응답합니다.
  5. 프록시는 클라이언트와 서버 간의 통신을 중계하며, 필요에 따라 객체를 직렬화/역직렬화합니다.

이러한 구조를 통해 분산 시스템은 확장성과 유연성을 높이면서도, 다양한 서비스 요청과 제공을 효율적으로 관리할 수 있습니다.


참고 자료 📚

[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)

0개의 댓글