Part II – World-Class Software in 1 Month
At Bolste, we are building a next-generation “business operating system” that transforms how employees gain productivity through orchestrating successful outcomes from daily interactions. Rather than silo information in disparate apps like Skype, Sharepoint, Slack, etc. Bolste cuts through the noise with a unified platform for collaboration and all the essential tools in one place. In August of 2016, after months of validating our platform with early customers, Bolste was ready for release to the public.
Market validation of Bolste was instantaneous. In early August Bolste was awarded the coveted “2016 Hot Vendor Award” by Aragon Research, a world renowned collaboration research firm.
However, like many other startups, we hit a problem: the infrastructure that worked well for prototyping and early development was not a good fit for running a scalable and reliable product.
How do Infrastructure Packages work?
The key insight behind Gruntwork Infrastructure Packages is that you can define infrastructure-as-code. Instead of manually clicking around a website or manually running commands to deploy and configure your infrastructure, all the details of how to provision servers and load balancers, how to build the code, how to run tests, how to backup and restore data, how to do automated deployment, and so on–all of it is defined in code. And the wonderful thing about code is that it can be reused.
Each Gruntwork Infrastructure Package defines a single piece of standalone, reusable infrastructure. As an example, here are some of the Infrastructure Packages we selected:
- Network Security: This package created multiple environments for running our software: one environment for user-facing apps (prod), one for internal testing (stage), and one for administration (mgmt). Each environment is completely isolated from the others, and even within an environment, there are multiple isolated tiers (one for public-facing apps, one for private apps, one for data storage) to further increase security.
- Automated Deployment: This package enabled us to automatically deploy our app to a test, stage, or production environment with a single command. We can now launch hot fixes or new features just minutes after approving them for release and releases are less error-prone as there is no manual intervention.
- Docker Cluster: Our app consists of multiple microservices, each of which is packaged as a Docker container. This package allowed us to launch our microservice containers in a single cluster of virtual machines so that we can use our cloud resources as efficiently (and inexpensively) as possible.
Monitoring & Alerting: This package gives us detailed metrics on how our servers are performing and automatic alerts that message us if anything goes down. We can also track resource utilization over time to know when we need to scale up to handle increased load.
Each Infrastructure Package is documented, tested, configurable, and proven in production. We knew Gruntwork had used these same packages with multiple companies already, including Intel, Infusionsoft, and many other high-growth startups, which gave us confidence that we were receiving mature and stable software.
Because most of the work was done before we engaged Gruntwork, we were able to build a world-class DevOps environment in about a month.
The vast majority of startups have the same basic infrastructure needs: a secure network configuration, automated deployment, configuration management, monitoring and alerting, and so on. Why should each startup reinvent the wheel? Especially if they aren’t experts in wheels?
Our mission at Bolste is to build the best software for business users–not to design the best infrastructure. By using the Gruntwork Infrastructure Packages, we got access to DevOps best practices and world-class infrastructure without having to build it all from scratch. This allowed us to focus on building the Bolste product and for someone else to take care of the grunt work.