마이크로 서비스 아키텍처를 사용하는 응용 프로그램을 작성 중입니다. 각 마이크로 서비스는 자체 마이크로 소프트 서비스와 직접적인 관련이 없습니다. 각 마이크로 서비스에서 우리는 서비스의 상태 변화를 알리기 위해 CQRS와 이벤트 소싱을 사용하고 있습니다. 관심이 있고 데이터를 업데이트 할 수있는 경우 다른 서비스에 해당 이벤트에 대한 정보가 제공됩니다.마이크로 서비스 아키텍처에서 보안 서비스가 단일 실패 지점입니까?
지금까지 시스템이 잘 작동합니다. 하나의 마이크로 서비스가 중단되면 다른 서비스는 계속 작동합니다. 중단 된 서비스가 다시 시작된 후에는 부재 중 발생한 모든 이벤트를 수신하고 해당 이벤트에 따라 자체 상태를 업데이트합니다.
이제 서비스를 보호해야하며 IdentityServer를 사용하고 있습니다. 토큰을 얻기 위해 다른 마이크로 서비스에서 호출 할 보안 서비스가 하나 더 있습니다. 마이크로 서비스가 다른 마이크로 서비스와 직접 대화해야하는 것은 이번이 처음입니다.
이 방법의 문제점은 보안 서버가 다운되면 전체 시스템이 다운된다는 것입니다.
나는 다음과 같은 솔루션에 대해 생각하고 :
모든 microservice가 자신의 데이터베이스에 사용자 데이터를 유지해야한다. 사용자가 마이크로 서비스에 액세스하면 사용자는 보안 서비스에 대한 원격 호출없이 서비스 내에서 인증됩니다. 나는 여전히 사용자 관리만을위한 보안 서비스를 제공해야한다. 사용자를 변경하면 이벤트가 다시 발생하고 다른 마이크로 서비스는 사용자 데이터를 업데이트 할 수 있습니다. 물론 https가있는 모든 것. 보안을 위해 중복 코드를 줄이기 위해, 너겟 패키지를 사용할 수 있습니다.
이 방법이 합리적인 방법이라고 생각하십니까? 당신의 조언
에 대한감사
귀하의 요지를 봅니다. 이는 성능상의 이유로 알고있는 것이 좋습니다. 그러나 전체 시스템이 하나의 서비스에 의존한다는 초기 문제는 여전히 해결되지 않았습니다. 자네가 말하기를이 건축물을 사용하는 이비는 이런 위험에 처해 있어야합니까? netflix조차? – kaz
분명히 @Illiakaill 나는 그것을 이겼지 만 그가 옳았다 (upvoted! :)), 당신은 여전히 당신이 원하는만큼 많은 노드에 ID 공급자를 배포 할 수 있고 다른 어떤 경우처럼 적절한 고 가용성을 만들 수 있습니다. 따라서 "하나의 특정"보안 서비스에 대해 말하면, 그것은 논리적 인 수준이므로 HA의 여러 물리적 컴퓨터가 될 수 있습니다. –
나는이 서비스가 동일한 보안 서비스의 인스턴스이기 때문에 데이터베이스를 공유해서는 안되나? 그게 여전히 실패의 단일 지점이 아닌가요? – kaz