When it comes to our expectations of Internet performance we want it all and we want it now. Yup, we’ve pretty much gotten used to instant gratification. This means that we expect services to be available 24/7, downtime to be nonexistent and configuration errors caused by updates to be fixed before anyone has a chance to make them public in social media court.
A great deal of these ever-rising expectations can be attributed to our growing dependence on the cloud. And while cloud services open up many new avenues, they also put new demands on Infrastructure Devs, making their jobs more critical and more stressful.
To clarify, if what you’re working with is a growing number of consistently built “cattle” servers that are built automatically with little human involvement, the stress is minimum, but if you’re working with “pets”, servers that are individually built by humans, the stress and potential for mistakes grows exponentially.
Having infrastructure in the cloud enables companies to scale by adding new servers and new storage on demand. This means companies can grow faster and more efficiently, but it also means they will have a large number of servers that need consistent installations. And if anything goes wrong, chances are it will be very public. Any downtime will cause vocal, unhappy customers and will have a direct impact on a company’s bottom line.
Having been in this rocky boat ourselves just recently, we wanted to put together a list of tools that can help infrastructure developers manage rollouts and configuration issues and minimize problems related to failed deployments and config errors.
Without further ado, here are nine great open source, free or freemium tools that help infrastructure devs deploy changes and monitor the production status of their cloud environments.
Chef provides an automation platform to support configuring servers. Its rich ecosystem of tools makes it a de-facto standard for the infrastructure-as-code development workflow. Using Chef, infrastructure developers write the "recipe" for a system configuration. The recipe provides a script for installing the necessary resources, ensuring that the correct versions are used and all dependencies are addressed. A dashboard view identifies failed deployments and helps monitor compliance with standards.
Like Chef, Puppet is an automation platform. The desired system configuration is written in a declarative language. The Puppet server then uses these manifest files to apply necessary changes to servers. Open source Puppet is free software distributed under an Apache license. Puppet Enterprise offers additional enterprise-level features, like role-based access controls, automated provisioning for container and cloud-based environments, multiple reports and views into infrastructure status and an infrastructure code management process.
Ruxit provides comprehensive monitoring of Web, application, network and user experience metrics, giving an overall view of system health in a single dashboard. Ruxit uses artificial intelligence to learn the normal performance baseline, and then generates alerts when problems arise.
Stackify supports application performance monitoring (APM), plus error and log file management (ELM) in both on-premise and cloud environments. Errors and log messages are correlated to assist with investigations and resolution. Dashboards let you view statistics, like top errors and error rates, and users can receive alerts when certain events occur. Monitoring features keep track of application-level metrics, not just system status.
New Relic gathers information about your application performance, and then applies analytics to help you gain a deeper understanding of both performance and customer experience. The application performance monitoring tool lets you track the end-to-end execution of a transaction and generates alerts when problems occur. The mobile and browser products provide tailored insight into the end-user experience on those platforms. Synthetics let you simulate users to catch performance problems before they affect real users.
When every error is on public display, it’s crucial to be able to prevent outages instead of having to respond to them in the moment. UpGuard allows you to proactively identify systems at risk through testing every system and scoring it for vulnerability. Along with assigning this CSTAR score, UpGuard offers visibility into system configurations and rapid identification of servers with anomalous configurations. Users can write infrastructure tests without writing code, making it easy to continuously test and affirm configuration status.
Vagrant, started in 2010 by Mitchell Hashimoto, can be used to build complete dev environments. With a focus on automation, it lowers setup time and increases productivity. You can install it on Mac, Windows or Linux in minutes. To configure, all you need to do is create a single file and describe the type of machine and software you want and how you want to access it. Then, with a single “vagrant up” command, you can have Vagrant put together complete, identical development environments for everyone on your team.
Like Vagrant, Terraform is also from HashiCorp. It can be used to build, change and version infrastructure, but do so while integrating commonly used service providers such as AWS, as well as custom services built in-house. Terraform can successfully manage anything from compute instances, storage and networking to DNS entries, SaaS features and more.
The cloud gave us new powers and new responsibilities, but luckily there are many tools that can ease the job of Infrastructure devs. And while Gliffy is not the same kind of tool as the ones above, it too can help. In times of crisis it pays to be organized and having a well-documented infrastructure accessible to your whole team, whether it’s done with a UML, network diagram or simple flowchart, can potentially pinpoint and solve the problem faster. And when the world is watching, every second counts.
We hope the list above helps. Did we miss a tool you can't live without? Tweet at us!