Cloud Programming Models and Runtimes     


 Paul C. Castro photoDavid Grove photo photoPriya Nagpurkar photoOlivier Tardieu photoMandana Vaziri photo

Cloud Programming Models and Runtimes - overview

Developing, deploying, and operating applications on the Cloud represents a significant and increasing fraction of the overall software development effort of most organizations.

Cloud platforms provide developers with a multitude of building blocks: compute engines to execute containerized microservices and serverless functions; access to multiple data stores; pub/sub and
messaging services; and a diverse set of other platform-managed services. However, productively assembling these building blocks into an overall solution that achieves the desired application-level
(global) characteristics of availability, reliability, scalability, transactionality, etc. remains an extremely challenging task that requires a high degree of technical expertise and cross-stack knowledge. Furthermore, there is a lack of repeatable methodologies, best practices, and associated middleware for assembling a complex enterprise application using cloud-native building blocks.

We believe that the emergence of Kubernetes as a common base platform for the cloud provides a foundation on which a significantly simpler and more powerful cloud programming environment can be developed.  Over the last several years, our Research team has explored this hypothesis by initiating a collection of related projects that collectively seek to accelerate the advent of a truly productive cloud
programming for the enterprise. Our projects are briefly summarized below; additional information on each is available from the project-specific pages, the open source projects, and our blogs.

KUI: the CLI with a GUI Twist

Kui combines the power of familiar CLIs with visualizations in high-impact areas. Kui enables you to manipulate complex JSON and YAML data models, integrate disparate tooling, and provides quick access to aggregate views of operational data.

Kubernetes Operators

Kubernetes provides a resource model and a lifecycle model for resources running in the Kubernetes cluster, such as pods (co-located sets of containers), services and storage resources. Operators allow the Kubernetes platform to be extended to enable these same capabilities to be utilized to also manage resources external to the cluster. Our team created the IBM Cloud Operator that enables Kuberetes to manage a diverse set of IBM public cloud services. We also created the Composable operator, which facilitates single-step deployment of complex applications.

SolSA: Solution Service Architecture

The SolSA library for Node.js makes it possible to specify the architecture of Kubernetes applications as programs. SolSA enables developers to configure Kubernetes-managed resources by writing JavaScript or TypeScript code instead of YAML. SolSA integrates with IDEs to provide online validation, code completion, and documentation of the various resources and configuration parameters.

Related Blogs