An open-source initiative needed a solution to add Azure IaaS support for their existing cross-cloud library to support bioinformatic research.

Genomics Virtual Laboratory provides cloud-based analysis tools that help in genomics research. As a part of this tool suite, they created an open-source Python library called CloudBridge that provides a uniform and extensible API layer for supporting multiple clouds. The library supported only AWS and Open Stack. AIS was approached to provide Microsoft Azure support to the library with limited changes to their existing interfaces.

Challenges: With all the cloud providers having their own proprietary vendor APIs/approach (and not having common standards remains an issue in this modern era of cloud usage), it is becoming more common nowadays to utilize multiple cloud providers to support application deployments, and it is left to developers to author (ex: conditional code) the different infrastructure deployments and testing to support each of the providers.

In order mitigate the mentioned issues, CloudBridge came with a simple consistent interface depicted below.

Solution: Azure Python SDK was used to interface with Azure, and the necessary to and fro mapping to the CloudBridge and Azure models was done in the resource layer. The high-level architecture is depicted in the image below.

The API revolves around three concepts: (1) providers; (2) services; and (3) resources. The providers encapsulate connection properties for a given cloud provider and manages the required connection. Services expose the IaaS provider functionality, offering the ability to create, query and manipulate resources (e.g., images, instance types, key pairs, etc.). Resources represent a remote cloud resource, such as an individual machine instance (Instance) or a security group (Security Group). (Read more here.)

Technologies/Tools

  • Jet brains Pycharm community version
  • Azure Python SDK
  • Python 3.6 and 2.7