這是我在公司開會聽人家介紹他們下一個featurerelease時所涉及的討論中讓我思考的一個概念,那就是"提供給所有其他個體服務共用的平台服務不該為任何個體服務提供個別的客製化功能"。

 

 

  先來定義一下兩個基本名詞:

 

  1. 平台服務:就是提供一些共用功能的Service,該Service可以為任何個體的ServiceApp服務,或者是share相同的功能給這些個體的Service。以SSO Service為例,IDP(Identifier Provider)便是所有SP(Service Provider)的平台服務,任何SP都會依賴IDPAccount Authentication,所以IDP是平台服務。
  2. 個體服務:就是個別獨立的Service,但這些Service透過使用平台服務提供的基本功能來運作,同樣以SSO為例,所有透過同一個IDP Service來做Account AuthenticationSP Service都是個體服務。

 

  這邊便帶到某一個議題就是:當所有個體服務中有其中一個個體服務因為Business需求而要求平台服務為其提供相對應功能時,平台服務是否該提供客製化服務? 答案應該是不行的!

  因為平台服務之所以為平台,就是他本身提供一定的共用基礎給所有個體服務,所以其對待個體服務的態度是平等的,一視同仁的!而也只有在這個基礎之下才有機會提供共享服務給所有個體服務。

  今天個體服務倘若因為Business需要而要求平台服務提供客製化需求,那將會破壞平台服務的功能平衡。因為每個個體服務都可能有自己的Business需求,而這些個體服務間的Business又可能是相互衝突於平台服務上,因此若平台服務為某一個體提供客製化服務,勢必無法滿足另一個個體服務的Business需求。

  以IDP-SP為例,假設SP1因為某種Business需求而要求IDPAccount Authentication 時加一條rule A來滿足其特殊的驗證情境,但這時SP2.SP3….因為與SP1一樣共享同一個IDP所提供的Account Authentication 服務,則他們也就被迫要套用rule A規則,但假如SP2本身的Business要求是剛好與rule A衝突,也就是他不允許rule A發生在Account Authentication,那就會與SP1發生衝突,此時IDP將無可適從。

  所以針對在平台服務上做功能改動有一個很重要的考量應該是:"該功能不該是為特定的個體服務提供,他應該是通用性的功能,用於補強原功能之不足處,而非為任一個體服務提供客製的功能,如此才不會顧此失彼,反而失去平台服務的平台功能"。

 

20171227日星期三 4:07 AM

arrow
arrow

    jackterrylau 發表在 痞客邦 留言(0) 人氣()