TOSCA lifecycle as a digraph

About TOSCA

The TOSCA acronym stands for Topology and Orchestration Specification for Cloud Applications. It’s an OASIS standard.

The purpose of the TOSCA project is to represent an application by its topology and formalize it using the TOSCA grammar.

The [TOSCA-Simple-Profile-YAML-v1.0] current specification in YAML introduces the following concepts.

  • TOSCA YAML service template: A YAML document artifact containing a (TOSCA) service template that represents a Cloud application.
  • TOSCA processor: An engine or tool that is capable of parsing and interpreting a TOSCA YAML service template for a particular purpose. For example, the purpose could be validation, translation or visual rendering.
  • TOSCA orchestrator (also called orchestration engine): A TOSCA processor that interprets a TOSCA YAML service template then instantiates and deploys the described application in a Cloud.
  • TOSCA generator: A tool that generates a TOSCA YAML service template. An example of generator is a modeling tool capable of generating or editing a TOSCA YAML service template (often such a tool would also be a TOSCA processor).
  • TOSCA archive (or TOSCA Cloud Service Archive, or “CSAR”): a package artifact that contains a TOSCA YAML service template and other artifacts usable by a TOSCA orchestrator to deploy an application.

My work with TOSCA

I do believe that TOSCA may be a very good leverage to port a “legacy application” (aka born in the datacenter application) into a cloud ready application without rewriting it completely to be cloud compliant. To be clear, It may act on the hosting and execution plan of the application, and not on the application itself.

Playing with (Openstack) Keystone

In the cloud computing, alongside of the hosting monsters such as amazon or google, there is the Openstack Platform.

Openstack is not a single software, it is more a galaxy of components aim to control the infrastructure, such as hardware pools, storage, network. The management can then be done via a Web based interface or via a bunch of RESTful API.

I would like to evaluate its identity service named keystone and use it as a AuthN and AuthZ backend for my simple_iaas example.

Simple IaaS API documentation with swagger

In a previous post I have explained how to develop a very simple API server.

Without the associated documentation, the API will be useless. Let’s see how we can use swagger-ui in this project to generate a beautiful documentation.

Note I’m blogging and experimenting, of course, in the “real” life, it’s a lot better to code the API interface before implementing the middleware.

About Swagger

Swagger is a framework. On top of the swagger project is composed of several tools.

IaaS-like RESTfull API based on microservices

Abstracts

Recently, I’ve been looking at the principles of a middleware layer and especially on how a RESTFULL API could glue different IT services together.

I am reading more and more about the “API economy”

I’ve also seen this excellent video made by Mat Ryer about how to code an API in GO and why go would be the perfect language to code such a portal.

The problem I’m facing is that in the organization I’m working for, the developments are heterogeneous and therefore you can find ruby teams as well as python teams and myself as a go team (That will change in the future anyway) The key point is that I would like my middleware to serve as an entry point to the services provided by the department.

Developping "Google Apps" on my Chromebook

It is a week now that I’m playing with my chromebook. I really enjoy this little internet Terminal.

I “geeked” it a little bit and I installed my favorites dev tools eg:

All of it has been installed thanks to the “brew” package manager and following those instructions.

Simple polling, a cloud native app - part 1

In this series of posts I’ll explain how to setup a simple polling app, the cloud way. This app, written in go, will be hosted on a PAAS, and I’ve chosen the Google App Engine for convenience.

I will not explain in this post how to setup the Development environment as it is described in the App Engine Getting Started guide

A word about the Hosting

Google Apps Engine is a cloud service aim to host applications without worrying about scalability, and technical architecture of the hosting environement. The application is seen as a web service and proxyfied and load balanced in several compute nodes. The storage service is provided via a schemaless NoSQL datastore, featuring:

Ruby / ZeroMQ / GO

Abtract

I really like go as a programming language. It is a good tool to develop web restful API service.

On the other hand, ruby and its framework rails has also been wildly used to achieve the same goal.

Therefore we may be facing a “legacy” ruby developpement that we would like to connect to our brand new go framework. 0MQ may be a perfect choice for intefacing the two languages.