G-Reg and ESB integration scenarios for Governance
WSO2 Enterprise Service Bus (ESB) employs WSO2 Governance Registry for storing configuration elements and resources such as WSDLs, policies, service metadata, etc. By default, WSO2 ESB shipped with embedded Registry, which is entirely based on the WSO2 Governance Registry (G-Reg). Further based on the requirements, you can connect to a remotely running WSO2 Governance Registry using a remote JDBC connection which is known as a ‘JDBC registry mount’.
Other than the Registry/Repository aspect of WSO2 G-Reg, its primary use cases are Design time governance and Runtime governance with seamless lifecycle management. It is known as Governance aspect of WSO2 G-Reg. So with this governance aspect of WSO2 G-Reg, more flexibility is provided for integration with WSO2 ESB.
When integrating WSO2 ESB with WSO2 G-Reg in governance aspect, there are three options available. They are:
1). Share Registry space with both ESB and G-Reg
2). Use G-Reg to push artifacts into ESB node
3). ESB pulls artifacts from the G-Reg when needed
Let’s go through the advantages and disadvantages of each option. Here we are considering a scenario where metadata corresponds to ESB artifacts such as endpoints are stored in the G-Reg as asset types. Each asset type has their own lifecycle (Ex: ESB Endpoint RXT have it’s own Lifecycle). Then with the G-Reg lifecycle transition, synapse configurations (Ex: endpoints) will be created. Those will be the runtime configurations of ESB.
Share Registry space with both ESB and G-Reg
Embedded Registry of every WSO2 product consist of three partitions. They are local, config and governance.
Local Partition : Used to store configuration and runtime data that is local to the server.
Configuration Partition : Used to store product-specific configurations. This partition can be shared across multiple instances of the same product.
Governance Partition : Used to store configuration and data that are shared across the whole platform. This partition typically includes services, service descriptions, endpoints and data sources
How to integration should work:
When sharing registry spaces with Both ESB and G-Reg products, we are sharing governance partition only. Here governance space will be shared using JDBC. When G-Reg lifecycle transition happens on the ESB endpoint RXT, it will create the ESB synapse endpoint configuration and copy into relevant registry location using Copy Executor. Then ESB can retrieve that endpoint synapse configuration from the shared registry when required.
Advantages:
- Easy to configure
- Reduced amount of custom code implementation
Disadvantages:
- If servers are deployed across data centers, JDBC connections will be created in between data centers(may be through WAN or Public networks).
- With the number of environments, there will be many database mounts.
- ESB registry space will be exposed via G-Reg.
Use G-Reg to push artifacts into ESB node
How to integration should work:
In this pattern, G-Reg will create synapse endpoints and push into relevant ESB setup(Ex: Dev/QA/Prod, etc) by using Remote Registry operation. After G-Reg pushing appropriate synapse configuration into ESB, APIs or Services will be able to consume.
Advantages:
- Provide more flexibility from the G-Reg side to manage ESB assets
- Can plug multiple ESB environments on the go
- Can restrict ESB API/Service invocation until G-Reg lifecycle operation is completed
ESB pull artifact from the G-Reg
How to integration should work:
In this pattern, when lifecycle transition happens, G-Reg will create synapse level endpoints in the relevant registry location.
When API or Service invocation happens, ESB will first lookup the endpoint in their own registry. If it is not available, it will pull the endpoint from G-Reg using Remote Registry operations. Here ESB side endpoint lookup should be implemented as a custom implementation.
Advantages:
- User might be able to deploy ESB API/Service before G-Reg lifecycle transition happens.
Disadvantages:
- First API/Service call get delayed, until Remote API call is completed
- First API/Service call get failed, if G-Reg lifecycle transition is not completed.
- Less control compared to option 1 and 2
Reference: | G-Reg and ESB integration scenarios for Governance from our JCG partner Chandana Napagoda at the Chandana Napagoda blog blog. |