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.
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
- Please Include architecture diagram if possible
- 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:
- 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
- Client side discovery and load balancing
- For external service clients(OSS, BSS, Web client, etc.), access the service via external gateway
- For internal service consumers(Components inside ONAP system, such as A&AI, SO, Controller, etc.)
- Registration
- 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.
- Registration
- 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:
- Primary Contact RamKoya, HuabingZhao, Al Hua, Sanjay Agraharam, Brijesh Khandelwal
- Names, gerritIDs, and company affiliations of the committer
Name Gerrit ID Company Email Time Zone Ram Koya AT&T rk541m@att.com Dallas, USA. CST/CDT John Murray AT&T Bedminster, USA EST/EDT Dominic Lunanuova AT&T dgl@research.att.com MiddleTown, USA EST/EDT
Zhaoxing Meng ZTE Beijing, China. UTC +8 Huabing Zhao HuabingZhao ZTE Beijing, China. UTC +8 Yonggang Wang ZTE Beijing, China. UTC +8 Tang Hua ZTE tang.hua52@zte.com.cn Beijing, China. UTC +8 Brijesh Khandelwal Tech Mahindra kbrijesh@TechMahindra.com CDT, USA. Hailong He ZTE he.hailong5@zte.com.cn Beijing, China. UTC +8 Jian Ming ZTE jian.ming@zte.com.cn Beijing, China. UTC +8 Leibo Huang ZTE huang.leibo20@zte.com.cn Beijing, China. UTC +8 Hu Rui ZTE hu.rui2@zte.com.cn Beijing, China. UTC +8 Jinquan Ni ZTE ni.jinquan@zte.com.cn Beijing, China. UTC +8
Names and affiliations of any other contributors
Name Gerrit ID Company Email Time Zone Jochen Kappel IBM jochen.kappel@de.ibm.com - Project Roles (include RACI chart, if applicable)
Other Information:
- link to seed code
https://gerrit.open-o.org/r/gitweb?p=common-services-microservice-bus.git;a=tree;h=refs/heads/master;hb=refs/heads/master
git clone https://gerrit.open-o.org/r/common-services-microservice-bus
- 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:
*Link to TSC approval:
Link to approval of additional submitters: