This blog post is for admins and cloud architects looking to manage, automate and standardize their cloud infrastructure – i.e. building a cloud management platform.
Cloud management platforms (CMP) enable you to <build, deploy, and manage cloud based infrastructure, no matter which cloud provider you use now or in the future. A CMP can scale your existing workflows by standardizing your best practices for security, cost controls, compliance, automation (i.e. app deployments, server configuration), and user management (privileges, access and accountability).
The processes that CMPs create can be duplicated and added to different applications, attached to multiple environments, and layered on top of your cloud providers. In other words, it’s an agnostic approach to infrastructure management in the cloud. It can be scaled vertically through more apps and servers. It can be scaled horizontally through more users and groups accessing those resources.
There’s two solutions to cloud management – you can build it yourself like Buzzfeed did with Rig, or you can use an existing product like Scalr. The benefit behind the DIY approach is simple – you know the problems you have, and you can build a solution that solves them. But what about the problems you don’t know about? Or the ones that you’ll have in the future? What research will you have to do to architect your solution, and how long will it take?
In contrast, the benefit of using a mature product is that through a broad range of customers, they have already built and maintained solutions for every type of problem that enterprises have, not just the ones they know about. Those solutions work across every cloud provider and stay up to date with new services that cloud providers release.
In the end, use whatever works and feel free to refer to this list of features to consider when shopping for a cloud management solution.
Deliver Effective Self-Service
You should be able to take advantage of pre-built application stacks to launch applications and servers quickly. This freedom keeps innovation flowing and empowers teams/users with a higher degree of flexibility.
Developers can define the specific stack (i.e. Ubuntu 14.4x server, RDS instance, Redis), the way it should be managed in different environments (production vs. development), and the automated orchestration that deploys those templates.
Manage the Lifecycle of Infrastructure
This includes monitoring and restarting failed servers, autoscaling, and coordinating different services. Your cloud management should enable the admin to define parameters, and automatically handle when things go wrong – or prevent mistakes from happening in the first place.
Lifting and Shifting: You should be able to build or move your infrastructure from cloud to cloud in order to take advantage of providers offering better latency, pricing, service integrations and more.
Integrate With Existing Tools and Processes
Ideally, you should be able to integrate with any best-of-breed solutions for monitoring, billing, and logging, automation, scaling, and so on. This includes CI/CD tools like Jenkins and server orchestration with Ansible.
You should be able to plug in your existing workflows/best tools without vendor syntax.
Manage Infrastructure At Any Scale
CMPs win when you are able to run and manage thousands of instances across independent environments at once from a single UI/API.
Infrastructure isn’t just stopping and starting servers – This should also include simple economical management and maintenance of your infrastructure.
Deploy Applications Swiftly and Safely
A CMP should be able to automatically test, review, build, and deploy changes to your cloud resources. If you have applications that thrive on short release cycles, this is crucial.
In addition, a CMP should help catch errors and security issues before they hit production. This can relate to user permissions (i.e. who can move servers from staging to production), or through preventative controls (rollback to previous build if there are errors and notify relevant admin).
A CMP should help accelerate service management from weeks to minutes.
Maintain Visibility of All Cloud Infrastructure
A CMP should provide activity monitoring for servers, applications, containers, and cloud services. The complexity of that info depends on what you need, but visibility is important. This would include the number of applications deployed, the number of instances per cloud, and the size and state of each deployment. This information should be easily accessible to relevant users.
A CMP should have some level of cost monitoring/management that shows the costs of your applications, servers, and the clouds those servers are located on. It should also display what users are owners of those resources. It should also be able to integrate with a third-party cost management tool, or have baked in policies and cost controls.
Automatically Manage Cloud Usage Based On Business or Technical Needs
You should be able to enforce automatic policies that trigger appropriate responses, such as failover on high error rates, scaling on high demand, or shutting down of unused resources after predefined time periods.
This ability to set rules that manage cloud usage (aka policies) can also include managing security, cost controls, compliance, application deployment, access controls, and so on.
Offer User Management and Role Based Access Control
A CMP should enable Central IT to control what is exposed to end users. Based on their role in their team and their application, a user has certain degrees of power. Some examples:
A junior developer may have the freedom to spin up test servers, but is unable to push code to production.
A senior developer can see all the SSH keys that his team uses for their applications, but not the sensitive details of another group.
DevOps teams can see and control much more in a business unit, while a financial admin may just need to see billing data.
Similar to IAM policies in individual clouds, policies for user management should have the same level of complexity, with the added benefit of working across clouds.
With a CMP, by centralizing access to cloud resources, it is safer and more efficient to manage the entire user experience.
Keep those in mind when you’re looking for a way to manage your hybrid cloud environments, or just a better solution to managing cloud infrastructure at scale. Email me at firstname.lastname@example.org if you have any questions.