We now have Starter Projects for Django, Flask, Nest, and Nuxt! Check them out on GitHub

All Posts

What is a production environment?

David Thor - 2022-03-21

A lot of work goes into designing and developing cloud applications and services – from the applications or services themselves to the infrastructure that supports them. Despite the rigor involved in the software development lifecycle (SDLC), the final step is always the same: production. However, developers often conflate production-ready code with the production environment itself. A production environment is traditionally seen as where new software, features, or other updates are made available to users. This is where the end-user experiences the application.

In reality, there’s a lot that goes into the creation of production-ready code, and just as much goes into actually running it. In addition to the work crafting and testing the features, SREs, production engineers, and DevOps engineers are working tirelessly to build and rebuild the cloud infrastructure that will support the product and serve it to customers. It’s the combination of the work of developers to write the application code and the work of SREs to serve it that creates the production environment – the true completion stage of the SDLC.

Teams almost never have enough SREs and DevOps engineers to go around, and this leaves them needing to take measures to balance the needs of the business with the resources they have available. They have to balance cloud spend and security risks while simultaneously enabling rapid feature deployment and satisfying the needs of customers, and at each stage of your business, the results of this trade-off are materially different. In this post, I want to walk you through those trade-offs, and how to make the right decisions for your production environment and organization.

Production environments at different stages

Your production environment may be the main show, but not every show needs the same equipment or has the same audience size. Open mic night at the local pub only needs a microphone and happy hour pricing so that your friends will show up whereas a Broadway production needs a large auditorium, administrative staff to handle security and ticketing, costumes, choreography, and much more! Both are live, production-grade performances, but you wouldn’t book a Broadway theater for your first show – not only would it be WAY too expensive, but it would be enormously time-consuming to plan and coordinate with all the different parties involved, you likely wouldn’t get back value commensurate to the expenditure of resources.

These trade-offs are identical to those made by startups when launching their product compared to enterprise companies. Enterprises have dozens of products and sometimes millions of customers, and startups are still looking for product-market-fit and their first few customers. With any luck, your startup will eventually be an enterprise business, but for now, it’s not worth your time to book the Richard Rodgers Theatre.

Production environments for startups

Production environment for startups

To be clear, there’s always the option to simply run your code on a single VM instance you get from your favorite cloud provider (e.g. an AWS EC2 instance or a DigitalOcean droplet). That will almost always be your easiest option as an indie dev. However, if you have ANY ambition of your project being used by an increasing number of users, there are a few things you should consider for even your earliest production environments to save you some pains you’ll face almost immediately:

Growth-stage production environments

Growth-stage production environments

If your early efforts at building your product and acquiring customers were successful, you’ve likely found yourself with a much larger team and some new problems to solve! Now, you have too many developers to safely give out production environment credentials to everyone. You might also have burst usage of your product that demands more clever scaling. And if nothing else, your developers likely need to explore more complex architectural patterns. Here are a few things that are important to growth-stage companies for their production environments:

Enterprise production environments

Enterprise production environments

Finally, you’ve hit the big time and have a thriving company with happy customers all over the world! Your business has never been bigger, but big business means big problems. Regulation demands you deploy to multiple vendors, maintain strict controls and logs, and your users all over the world have lofty expectations for application performance.

Build an environment that will scale

Building and maintaining the infrastructure for a production-grade cloud environment isn’t easy. Most companies constantly re-evaluate their choices of tools and providers to ensure they’re balancing costs with security and ease of use. At the enterprise level, entire software teams are devoted to helping developers create, deploy, and manage new applications in the cloud – often referred to as “platform engineering”. These teams act as supportive engineers to enable product and engineering teams to rapidly create, deploy, and secure cloud applications.

If you’d like to learn more about Architect.io, dependency management, and modern software deployment, please enjoy these resources from our blog:

And as always, please follow us on Twitter and LinkedIn for the latest content and updates!