Hi All,

The purpose of this feature is to enable the flexibility to manage own
endpoint configuration per API Manager deployment environment.

*Problem*

Typical API manager deployment contains multiple deployment environments
such as Development, QA, Pre-Production and Production. Hence some
deployments have unique API back-ends dedicated per each deployment
environment with unique endpoint configurations such as suspended error
codes, suspended duration and etc. So that APIs in Development environment
have back-end endpoint configuration unique to its environment which is
differ from the QA environment. So it's required to have a way to manage
endpoints per environment.

*Existing Alternatives*

Currently we are achieving this through parameterize API endpoints. As
discussed in[1], endpoint address is defined in parametirze way like
http://{uri.var.host}/service1/backend.
During run time, the parametrize values will be replaced by the system
inputs provide during the server start up which is unique per environment.
For example parameterize endpoint address
http://{uri.var.host}/service1/backend
will be resolve to http://dev.apim.org/service1/backend in Development
environment and will resolve to  http://qa.apim.org/service1/backend in QA
environment. But endpoint can have advanced configurations suce as endpoint
time outs, suspended duration, suspended error codes and etc unique to each
environment. This alternative doesn't allow to keep a unique endpoint
configuration per environment.

*Proposed Solution*

The proposed solution contains a separate UI to define the API endpoints.
Users may defined API endpoints unique to the environment. When creating a
API, users either go with current way of defining a endpoint or select a
existing API Endpoint from the defined endpoints in the system. If user
select defined endpoint as API backend, then that endpoint name take as a
reference. When API is deploying to the gateway, endpoint configuration for
specified name will be fetched from the registry or database and API
artifact will generate with the configurations of specified endpoint.

APIs will be moved from one environment to other through the API Import and
Export APIs available in the API Manager. When API is exporting , API
Endpoint configuration will also included in exported archive.

During API import, it will be initially go through all available endpoints
in the API imported environment to find whether specified API Endpoint name
is available in the system. If so import API will use existing API Endpoint
configuration to generate the API synapse artifact. With this it will pick
the endpoint definition unique to the environment. If user specify import
API with update action then it will use API endpoint configuration comes
with the exported API archive to update the API endpoint available in API
imported environment and generate the synapse artifact.  If specified API
Endpoint configuration is not existed in the environment, then API Import
and Export tool will be use API endpoint configuration comes with Exported
API archive to generate the API synapse artifact.

Please share your thoughts and suggestions on the proposed approach.

[1] -
http://wso2.com/library/articles/2016/03/article-architecting-a-multi-environment-api-manager-deployment-with-wso2-api-manager/

Thanks,
Harsha





-- 
Harsha Kumara
Software Engineer, WSO2 Inc.
Mobile: +94775505618
Blog:harshcreationz.blogspot.com
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to