Microsoft Open Sources Projects for Microservices, Kubernetes
Microsoft, which now calls itself an open source company, announced two new projects that serve to live up to that moniker, one for microservices and one for Kubernetes applications.
Here's a look at each:
On the microservices side of things, the company unveiled Distributed Application Runtime (Dapr), meant to ease the development on the architecture that the company describes as the standard for cloud-native applications.
"Dapr is an open source, portable, event-driven runtime that makes it easy for developers to build resilient, microservice stateless and stateful applications that run on the cloud and edge," the company said. "Dapr embraces the diversity of all programming languages and developer frameworks and simplifies building applications such as the e-commerce example."
The platform-agnostic project -- it can run on any Kubernetes cluster, or other hosting environments it integrates with -- comprises different building blocks that developers using any programming language can access via HTTP or gRPC APIs.
In this initial alpha release those building blocks were listed as:
- Service Invocation: Resilient service-to-service invocation enables method calls, including retries, on remote services wherever they are running in the supported hosting environment.
- State management: With state management for key/value pairs, long running, highly available, stateful services can be easily written, alongside stateless services in the same application. The state store is pluggable and can include Azure Cosmos or Redis, with others such as AWS DynamoDB on the component roadmap.
- Publish and subscribe messaging between services: Publishing events and subscribing to topics between services enables event-driven architectures to simplify horizontal scalability and make them resilient to failure.
- Event driven resource bindings: Resource bindings and triggers build further on event-driven architectures for scale and resiliency by receiving and sending events to and from any external resources such as databases, queues, file systems, blob stores, webhooks, etc. For example, your code can be triggered by a message on an Azure EventHub service and write data to Azure CosmosDB.
- Virtual actors – A pattern for stateless and stateful objects that make concurrency simple with method and state encapsulation. Dapr provides many capabilities in its virtual actor runtime including concurrency, state, life-cycle management for actor activation/deactivation and timers and reminders to wake up actors.
- Distributed tracing between services: Easily diagnose and observe inter-service calls in production using the W3C Trace Context standard and push events to tracing and monitoring systems.
Developers can learn more at:
"This initial release of the Dapr runtime and SDKs is just the early start, our goal is to bring Dapr to a vendor-neutral foundation to enable open governance and collaboration," Microsoft said on its open source blog. "This is a journey and we need your help and input, whether this is writing new binding components to integrate with resources, suggesting new building blocks or creating an SDK for your favorite language (Cobol anyone?). We want to hear from you."
Standing for the Open Application Model, this project provides an open standard for creating and using applications on the popular Kubernetes container orchestration platform and others.
The idea is to meet the need for a model that represents a complete application on Kubernetes, whose applications are known for being composed of discrete parts such as templates or other pieces.
"OAM is a specification for describing applications so that the application description is separated from the details of how the application is deployed onto and managed by the infrastructure," Microsoft said. "This separation of concerns is helpful for multiple reasons."
With the OAM, an application is represented as several "concepts," such as Components that make up the application, such as a database. " Developers can author code that they package as a component and then author manifests that describe the relationships between that component and other microservices," Microsoft said.
Another concept is Traits, providing descriptive characterizations of the application environment, such as auto-scaling and ingress.
Like Dapr, the project is platform-agnostic, though its first open implementation, called Rudr, is built on Kubernetes. "It is possible to develop implementations for numerous other environments including small-device form factors, like edge deployments and elsewhere, where Kubernetes may not be the right choice," Microsoft said. "Or serverless environments where users don’t want or need the complexity of Kubernetes."
Interested developers can learn more at:
David Ramel is an editor and writer for Converge360.