How to Prepare Meals at Scale – Building Application Models in Cisco CloudCenter | Part 2/4
Part 1 summarized the basic toolset inside of CloudCenter for multi-cloud application deployment. Now let’s look at the detailed cooking plan and the ingredients which are still needed to get a meal with astonishing taste.
There are people out there who can take just any ingredients and throw them into a pan to create a wonderful dish. I for myself can say – I’m not one of them. I need a plan what and how to cook and then prepare all the necessary ingredients. This is similar in application deployment where a plan to deploy an application is necessary. We see two approaches to derive a plan for modeling an application:
- Top-Down Design
- Bottom-Up Building
Depending on your knowledge of the application, tools and deployment process you can choose one or the other. As there is no right or wrong in application modelling, it is also possible to follow – like me – a mixture of both. I prefer to have quick iterations of trials and small steps while refining the application deployment over time. Just like while cooking, taste it from time to time and adjust by adding spices to gradually improve the end result.
Goal of the design process
Independent of the approach of modelling an application, we need to at one point in time gather the following information to be successful in the end:
- What are the required services, including external ones?
- What are the dependencies, order of start?
- Where are the artifacts located?
- What needs to go on the same VM, what shall be divided?
- How will the application be connected (networking)?
At the end of the design process we will have a topology diagram for the application to be modeled.
This works best when we have a solid understanding of the application and experience in deploying that application – or maybe even existing deployment scripts we can leverage.
We start by breaking up the application into all required parts (e.g. Tiers, function blocks etc). We then define the required services for each part of the application.
Please note, this is a crucial task and existing resources should be considered whenever possible. The evaluation to use an existing service in CloudCenter or build a new one must be done carefully. A Service should be generalized as much as possible, as each service needs to be taken care of in regards of security and updates. Otherwise, one can easily end up with hundreds of very specialized services.
Last but not least it is important to define the image (base operating system) on which the service shall be built. CloudCenter does not build the images in each target cloud for you, but rather map existing or custom built images for each cloud type.
As with services, it is important to limit the number of images to a minimum. Using existing images and modifying them during the deployment process is always a good start.
With all gathered information, we can now start building the application template, scripts, images and everything else we need for the deployment.
We start with a basic OS (VM) without having an application installed on top of it. Where possible, we use an existing image as the base of our work. Once started, we then begin to install all scripts and software required to build the service (e.g ngnix web service). Once we’re done with this, including Testing/Troubleshooting, we transfer the scripts into a repository and can start defining the service in CloudCenter.
When following this path, it is important to think of all required parameters during the installation process. It is very easy to hardcode information in scripts which limit flexibility or expose credentials which should be passed to the scripts at runtime.
Repeat this process with each element of the application one by one. After we’ve completed all the required services, we’ll stitch together the application elements with the visual topology modeler to create the complete application model.
At the end of this intense phase, we now have a clear plan on how we’re going to produce the menu. The required ingredients are prepared, and we know how we want to cook them. It’s time to heat up the pans and start with the actual cooking.
I’d like to thank sous-chefs Ralf Antweiler and Sebastian Straube who helped a lot in the mise en place for this blog series. The whole topic of this blog series was inspired by a talk held by Michael Davis.