This article aims to introduce TOSCA (Topology and Orchestration Specification for Cloud Applications) in the simplest of terms, so that users understand what it is, why it’s important to Cloudify, and some of its basic concepts.
Learn all the basics now in these TOSCA training videos!
This article serves as an introduction to the concept of Topology and Orchestration Specification for Cloud Applications, known as TOSCA. We will give an overview of TOSCA in approachable terms, so that those who are new to the technology can understand what it is through some of its basic concepts, and will be able to understand why it is important to the Cloudify solution offering.
You can also learn more of the basics through our TOSCA training videos.
What is TOSCA in a nutshell?
So, what is TOSCA?
TOSCA is a specification which seeks to standardize how software applications are described, and all that is required to run them in the cloud.
Essentially, TOSCA provides a means to describe not only applications, but also application dependencies and supporting infrastructure located in the cloud.
What are the basic concepts of TOSCA?
TOSCA has two basic building blocks on which the concept relies: nodes, and relationships.
Nodes can be infrastructure components (such as a subnet, network, server, or cluster of servers), or software components (such as services or runtime environments).
A relationship defines how nodes are connected to one another.
TOSCA also contains the concept of types.
For example, a “compute” node representing a resource with a CPU. This type can be used in “service templates” or, as referred to in Cloudify’s dashboard, a “blueprints”.
Within the blueprint is a node type used in a “node template”. In Cloudify, a server may look like this:
This node template is named “some_virtual_host” with a node type “cloudify.nodes.Compute”.
Programmable implementations can be applied to both nodes and relationships, enabling an orchestrator such as Cloudify to read their definition within the blueprint and initiate specific actions.
Whether node types or relationship types, the base can be determined by the user in order to create new types. We demonstrate a hypothetical derivation of the “Computer” type, into a “BladeServer” type.
How is Cloudify Related to TOSCA?
In a market of cloud orchestration products and tools, Cloudify’s aim is to be the best at implementing the TOSCA standard.
Cloudify’s DSL is based on TOSCA’s YAML Simple Profile. This is a way of writing TOSCA blueprints in YAML. TOSCA was originally written in XML, but moved to the easier to use YAML profile as XML tends to contain superfluous punctuation.
One part of Cloudify’s core is the Cloudify DSL Parser, which aims to read and validate TOSCA blueprints, and to provide a means of mapping operations to Cloudify’s plugins.
TOSCA blueprints specify version definitions adhered to in the blueprint. We are currently using a specific Cloudify DSL version that looks for name-spacing specific to the Cloudify solution.
This article contains Cloudify code snippets, rather than TOSCA ones, to give you some real-world examples.
Could just as easily be:
There is much more to be said about the alignment between TOSCA and the Cloudify DSL, and many more features of Cloudify. This article won’t go in depth of these aspects, and instead aims to give an overview and help beginners to gain some understanding of the technology.
We’ve covered TOSCA basics here, to help you familiarize yourself. TOSCA is easily adoptable, and hopefully this article has demystified some of the elementary concepts so that you are feeling comfortable at moving forward with adoption.
For further reading, I suggest the TOSCA Simple Profile doc.
In upcoming blog posts, we expand upon the concepts of TOSCA and Cloudify’s solution, and provide more advanced examples.