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
