Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 62 Next »

This is a potential draft of a project proposal.  It is not final or to be used until the TSC approves it.

Project Name:

  • Proposed name for the project: Microservices Bus
  • Proposed name for the repository: msb.onap.org

Project Description:

Microservices Bus provide key infrastructure functionalities to support Microservice Architecture including service registration/discovery, service gateway, service load balancer. It's a pluggable architecture so it can plugin service provider options like AAF to provide Authentication & Authorization for APIs. Microservices Platform also provides a service portal and service requests logging, tracing and monitoring mechanism, etc.

Source codes are from OPEN-O and have already been used to support Microservice Architecture of OPEN-O for the vEPC and VoLTE use cases in its two successful releases.


Note:

Both MSB and OOM use the term "service", but for different meanings. What "service" means in the context of MSB is a service endpoint (IP:Port) providing a business logic for the use of consumers. Service can vary from L4 to L7, for example, TCP, UDP, HTTP/S(REST), HTTP/S(UI), etc.

OOM aims to provide lifecycle management for ONAP components, so the "service" managed by OOM are at process level, in contrast, the "service" managed by MSB are in smaller granularity, at the endpoint level. It's common that a component(process) may have multiple endpoints(services).

Scope:

  • Service registration
    • Registration via Restful API
    • Registration via portal
    • Registration via proxy
    • Note: Registration info is used for service request routing, the info including service name, service exposed url, version, service instance endpoint(IP:Port), service protocol, service ttl, service load balancing method, etc.
  • Service discovery - Server side discovery
    • service request routing
    • service request load balancing
  • Service discovery - Client side discovery
    • client side discovery SDK
  • Service discovery - DNS
    • Discovery and load balancing by DNS server
    • Service consumer directly talk to service provider
  • Service Health Check
    • Note: The goal of service health check of MSB is to maintain the correct health status of service in the service registry so the service consumer will not get a failed service provider instance, MSB doesn't try to kill and restart the service instance, which is the scope of OOM(ONAP Operations Manager)
  • Service API gateway
    • Client request routing
    • Client request load balancing
    • Transformation, such as https to http
    • Provide authentication & authorization for service request with plugin of auth service provider like AAF
      Note: MSB itself doesn't provide auth service, which is provided by a auth service provider microservice such as AAF(Authentication and Authorization Framework)
    • Service request logging
    • Service Request Rate-limiting
    • Service monitoring
    • Request result cache
    • Solve cross-domain issue for web application
    • Other functionalities with the pluggable architecture capability ...
  • Service API Portal
    • Provide a Service API Portal to expose all the ONAP Swagger format API descriptions
    • Don’t need to maintain an independent API Portal and API description documents – save money and time
    • Keep the consistency of the API document with the source code
    • Support multiple versions of APIs
    • Always get the latest API documents of the current development branch which is generated by CI/CD automatically
    • Provide self-service onboarding for developers

Architecture Alignment:

  • How does this project fit into the rest of the ONAP Architecture?


    • Please Include architecture diagram if possible
    • What other ONAP projects does this project depend on?
      • Integration
  • How does this align with external standards/specifications?
    • APIs/Interfaces - OpenAPI/Swagger
    • Information/data models - Swagger JSON or YAML models
  • Are there dependencies with other open source projects?
    • APIs/Interfaces - OpenResty, Consul, Redis
    • Integration Testing
    • etc.

MSB Use Cases:

  1. Service registration per service provider instances
    • Registration
      Service instances are registered to the registry by proxy or themselves. The visible scope should be indicated as a parameter when register. If a service is only internal visible, the service information is only pulled by the internal gateway (aka router & load balancer) and used by other components inside the system, the interal services can't be accessed by external systems or front end(web client). If a service is visible to external system, the service information is pulled by the external gateway and can be accessed by external systems and front end (web client) with auth.
               
        
    • Discovery & Service Consuming
      • For internal service consumers(Components inside ONAP system, such as A&AI, SO, Controller, etc.)
        • Client side discovery and load balancing
        • Server side discovery and load balancing
      • For external service clients(OSS, BSS, Web client, etc.), access the service via external gateway


  2. Service registration per service
    The service may have its own load balancer built inside, for example, Kubernetes can create a load balancer for a service. In such case, only need to register the service LB node to MSB, and the service request from the consumer is routed to the service LB node.
    • Registration

    • Discovery  & Service Consuming

      Note: Only show the client side discovery in this diagram for simplicity, it's also possible to use server side discovery by the internal gateway.


  3. Centralized Authentication&Authorization via MSB plugin
    MSB is a pluggable architecture, so it can provide centralized authentication & authorization for service request with plugin of auth service provider like AAF.




Resources:

  • Names and affiliations of any other contributors

    NameGerrit IDCompanyEmailTime Zone
    Jochen Kappel
    IBMjochen.kappel@de.ibm.com
  • Project Roles (include RACI chart, if applicable)

Other Information:


  • link to API documentation  
    Microservice Bus API Documentation
  • Vendor Neutral
    All proprietary trademarks, logos, product names, etc. have been removed.
  • Meets Board policy (including IPR)
    Yes

Use the above information to create a key project facts section on your project page

Key Project Facts

Project Name:

  • JIRA project name: Microservices Bus
  • JIRA project prefix: MSB

Repo name:
Lifecycle State: Incubation
Primary Contact: RamKoya, HuabingZhao, Al Hua, Sanjay Agraharam, Brijesh Khandelwal
Project Lead: Huabing Zhao zhao.huabing@zte.com.cn
mailing list tag [msb] 
Committers:

please refer to the above table

*Link to TSC approval: 
Link to approval of additional submitters:

  • No labels