서비스 디스커버리


01 Jul 2019 » kubernetes

수정중

이전에 모놀리틱 아키텍처에서는 모든 서비스가 자기 관할에 있기 때문에 문제없이 호출하여 수행하였으나
마이크로서비스 아키텍처에서는 서비스가 각 개별로 동작되고 필요한 서비스들을 호출하여야 한다.
그러나 어떤 서비스가 존재하는지 어떻게 불러야 하는지를 모른다.
이에 필요한 것이 서비스 디스커버리 로 서비스가 어디있는지 찾는 부분이다.

서비스 디스커버리에는 두가지 방법이 있다.

  • client side service discovery
  • server side service discovery

위의 서비스 디스커버리 방법에 대해서 비유를 해 보도록 한다.
우리가 치킨을 주문한다고 치면, 두가지 방법으로 치킨을 주문할 수가 있다.

  • 직접 동네에 있는 치킨집의 전화번호를 찾아서 주문한다.

    Alt text

    이 방법은 내가 두번의 작업이 필요하다. 첫번째는 치킨집의 전화번호를 찾는 작업이고 두번째는 실제로 전화를 하는 작업이다. 주문을 받아 줄 동네치킨집이 어디있는지, 전화번호가 무엇인지 먼저 치킨집들의 리스트가 있는 책을 뒤져보고, 그 후, 해당 치킨집에 주문을 한다.

    서비서 디스커버리도 이와 동일하게 전화번호부에 해당하는 Service Registry 가 있고, 이 service registry에 각각의 서비스들의 regist 하게 되고, 클라이언트는 이 servic registry를 보고 해당 서비스의 위치를 파악 한 후 다시 그 서비스를 호출하게 된다.

    클라이언트가 서비스를 찾고, 호출하는 두번의 작업이 필요하다. 이것이 client side service discovery 이다.

  • 프랜차이저인 치킨의 대표전화번호를 찾아서 주문한다.

    Alt text

    이 방법은 한번의 작업으로 치킨의 주문이 가능하다. 이미 알고 있는 대표전화번호로 전화를 걸어 치킨을 주문하면 콜센테에서 주문을 받아 동네치킨집에 주문을 대신 해 준다. 콜센터에서 제일 가까운 치킨집이 어디인지 찾아서 주문을 해주는 방식이다.

    서비스 디스커버리도 이와 동일하게 요청을 받아주는 서비스가 있고,