Macro Design to IaaS implementation

Most of the documentation design to understand how works your system and the purpose of the main interconnection of your software and the environment around could be described using a macro design. It describes the functional components and how they interact with each other and with external components.

If you attached to it the main Use Cases, you have a documentation that describes the purpose of each connection between components.

After that you can zoom on each software component to describe its detailed architecture. For example the software component CMS is composed of memcached server, Apache PHP server and MySQL server. You can now describe how external CMS links are connected to its internal components. For all those components you can describe here how to configure them, how to monitor them, how to operate them.

Then we can design the deployment diagram the design on which servers we will deployed each component, adding some technical component like firewall, load balancer, reverse proxy … to allow the system to work properly on the infrastructure chosen and its rules.

And then you have a full documentation of your system. Yes you there is already a few tools that allow you to do that, so what the point?

Data model and API

I don’t speak yet about IaaS (Infrastructure As A Service), but it would be great if your chosen infrastructure offer an API that allow you to create the platform from the deployment diagram? It could also be great if you will be able to generate monitoring configuration using all the information you already have filled on the architecture phase.

Rather generate “paper document” for the architecture you have stored the information in a data model exposed using an API, everything could become possible.

If you have that kind of API, you become able to propose the better interface to fill information and the better one to retrieve it for each jobs.

You can build new tools to enhance your process for example to have a graphical view of the monitoring of your platform using macro design and zoom into software component and deployment diagram.

You can also quickly create knowledge database to share issue, solution and best practice about common software components.

Invest on architecture, receive dividend on development and operability

Starting the creation of the data model that allows storing architecture of a platform is not as easy as we can think it. The task is complex and you have to think it step by step if you don’t want to finish with a spaghetti plate. But if you define the main direction and don’t try to do everything on the same row you can quickly have something useful that you be able to enhance to have something gorgeous.

The key is to define the different step: macro design, detailed design, deployment diagram, IaaS deployment. Then identify the objects that are shared between each step … and you will be able to build your model.