We take infrastructure development off your plate so you can focus on your product. We do that by replacing operations with automation. That automation also replaces us. Once your infrastructure is running itself, we step back to a support role.
We work with you to identify work we will take on, then we complete it independently. We deliver code in pull requests your engineers can review so they stay in the loop on implementation. We send you regular reports so you stay in the loop on progress.
Check out the sections below for more details. If it sounds like we can help, get in touch!
- What We Help With
- Schedule a Call with Us
- Self-Service Articles
What We Help With
Discovery and Recommendations
If your infrastructure is not meeting your needs but you are not yet sure what is needed to change that, we will make recommendations. To make good recommendations, we need a lot of technical details. Over many projects, we have developed an 8 step process and a 250+ item checklist that help us find the right details and find them quickly. We will:
- Review your existing automation using our checklist.
- Review your running infrastructure using our checklist.
- Interview key engineers who have worked on the infrastructure.
- Interview key developers of the application being deployed.
- Re-review your automation using our new context.
- Re-review your infrastructure using our new context.
- Write a report.
- Review our report with you.
Independent review and examination before interviews ensures we have relevant questions to ask and gives us context to understand the answers we get. Using what we learned in our cold review and in the interviews, we do a final review and write our report. These steps take approximately 1 week to complete, depending on your application.
We will be focused on your infrastructure, but sometimes we find that applications are harder to deploy than they have to be. We will also look for ways to make your application simpler to host.
We automate operations with pipelines that deploy infrastructure and then release versions of your application to that infrastructure. Things like:
- Connecting your git workflow to builds released by Azure Pipelines.
- Implementing immutable images in AWS Elastic Container Registry (ECR).
- Orchestrating heavily interdependent components with AWS Step Functions.
Core Infrastructure Development
CI/CD pipelines have to orchestrate a city of infrastructure. That city needs a regular flow of pull requests to maintain good hygiene, add new features, and make architectural improvements. We can help keep those pull requests flowing. Things like:
- Writing new terraform modules to deploy new application components.
- Extracting repetitive terraform into reusable modules.
- Adding automated tests to terraform modules.
- Migrating raw EC2 instances to containers in AWS Elastic Container Service (ECS) or AWS Elastic Kubernetes Service (EKS).
- Updating documentation.
Like any component, both the infrastructure that runs your code and the pipelines that deploy everything can become vulnerable to exploits. Their implementations need a security focus. We can collaborate with your team and teams working with you (like auditors) to help implement the level of security you target. Things like:
- Increasing the frequency of patch installations.
- Limiting who has access to do deployments.
*permissions from AWS IAM policies.
0.0.0.0rules from firewalls.
- Limiting SSL/TLS versions and ciphers accepted by infrastructure resources.
We also look for opportunities to increase security while delivering our other work. We will recommend improvements as we find them.
Once your infrastructure is running itself, we step back to a support role. We can help with things like:
- Keeping dependencies up to date.
- Iterating on new security vulnerabilities.
- Periodically checking for changes needed to keep pace with the industry.
Infrastructure is the deepest layer of a product. It is built by engineers to deliver features used by other engineers to deliver products to end users. Often, almost everyone involved has a technical background.
Because of that, tickets for work at this layer are usually deeply technical. Where front-end development tickets describe things like, “Add support for monthly recurring orders”, infrastructure tickets describe things like, “Switch to immutable ECR images for the Kubernetes DB cleanup CronJob”. They often require a lot of technical background to groom. We can help with:
- Adding details to tickets so they are readable to non-engineers.
- Identifying and closing outdated and duplicate tickets.
- Adding missing tickets.
- Prioritizing tickets.
- Organizing epics.
Schedule a Call with Us
If what we do sounds like what you need, fill out this form and we will set up a 30 minute call where you can tell us more about your infrastructure and your goals for its future.
If we think we can help after that call, we will send you a short questionnaire covering details like the number of cloud accounts and code repositories you have. These help us gauge the scale of the project. We will combine your answers with our notes from the call, then get back to you.
Prefer to do it yourself? You may find what you need in one of our articles. We write about things like:
- Patterns for defining maps and objects in Terraform.
- Making Terraform more reliable with tables of Terratests.
- Patterns for conditions and loops in Azure Pipelines.
- Making Azure Pipelines fail fast so they do not publish broken artifacts.
- Patterns to get properties from arrays of PowerShell objects.
- Passing parameters from CI pipelines to Docker image builds.
- Simplifying pagination of AWS API responses with boto3’s Collections.