Understanding and implementing repeatable patterns effectively is what adds value to any operation, whether it’s making a pizza, conducting a symphony, or building applications at scale using a hybrid, multi-cloud modular approach.
Watching a pizza made in a fast-paced delivery shop is a real testament to having sets of ready-made components available to make and deliver at scale. Dough, cheese, tomato sauce, meats, vegetables, and other toppings need to be assembled and shoved in the oven without delay. This makes all the difference in delivering a pizza within the popular time frame of 30 minutes or less. A conductor of a symphony, in a slightly different scenario, has access to modular components that make up the desired sound from brass, string, woodwind, percussion, and even vocal instruments. He or she relies on the readiness of the musicians and their instruments in a modular way.
The ability to duplicate these approaches of modularity plays a huge role in delivering an optimal hybrid and multi-cloud strategy to help developers get the resources they need to deliver digital value to the market with the required components at scale. As complexity increases, the need for modularity also increases. Having these ready-made sets of resources to deliver hundreds of made-to-order items will not be the same as delivering only plain cheese pizzas, a single score of music, or simple sets of VMs to internal users of an organization.
When it comes to delivering a complex set of resources with requirements for configuration, security, and cost controls, a modular approach will have a huge impact on a successful outcome. It’s very inefficient if, after a pizza delivery, you had to add all the special ingredients. Likewise, with an application stack that includes VMs, you wouldn’t want to have to add all the configuration settings, patches from an OS update, or any other item that would be better delivered at the time of provisioning and orchestrating the resources.
Integrating the Process of Modular Design
When it comes to provisioning infrastructure resources in modern enterprises, the complexity compared to making a pizza will only go so far but illustrates the need for modularity. Each set of resources required by developers and DevOps teams will vary depending on the operating systems, the location of the virtual machines, the number and size of the virtual machines, as well as all the ingredients that are more abstract—like connecting the hosts to a network or adding them to a domain.
Consider these key aspects of a good modular approach:
Resource connections are configured integrations with the target environments. Instead of having to log in and provision resources in each separate environment, you can go to one location and have a ready-made connection to the environment that has the required features you want configured ahead of time. Most cloud management platforms, like CloudBolt, have these ready-made connections. Each cloud management provider will have varying depths of coverage with each of the target resources.
Once you’ve connected to a specific cloud resource, another level of modularity is the ability to create specific environments that you know are the most common and have the specific setting for that environment already set up. For example, you could create specific environments that do not have public IP addresses available to configure for some of the users in your environment. This provides a level of security from accidentally making an environment subject to malicious attacks.
It’s very common for enterprise level provisioning to use one of the popular configuration management tools such as Chef, Puppet, Ansible, or Saltstack. Having these tools integrated as modular connections to your resource provisioning will make the process go smoother. These sets of tasks can be grouped and called for whatever application stack is needed for a set of internal users like developers or DevOps engineers.
Managing users in an enterprise environment is no simple task. Within the organization, there is usually an Active Directory service or LDAP system that is used to manage user access to many of the enterprise tools used by most organizations. Connecting to those environments is a good way to re-use existing user permissions. Taking it one step further, when provisioning, these user profiles can be the basis for the modular groups to manage in a cloud provisioning process. Similar to restricting the ability to not expose public IPs in some environments, sets of users could require an approval process to provision resources.
CloudBolt Can Help
CloudBolt provides one place for all of these modularization strategies to be implemented. In addition, CloudBolt provides an extensible plugin in architecture that helps you modularize any provisioning activity you require. Once you identify a set of repeatable steps, you can create a plugin that executes them.