What is a staging environment?
Within any software development process, “production” is essentially the final environment in a sequence of places any code will be deployed. Before code is pushed to production, it must be extensively tested, and therefore be ready for public availability. This extensive testing is easier said than done. Developers write tests to ensure their features can […]
The basics of secret management
The need for secret management exists in just about every application that is developed, which is to say, every application needs to be able to run locally and in production at a minimum. In most cases, an application will also need a staging server and ways to dynamically spin up test environments to try out […]
What is a production environment?
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. […]
What the heck is event-driven architecture?
Applications have quickly become complex webs of interconnected microservices. Failures in the API calls between microservices grow more common and far more dastardly – wreaking havoc throughout applications in unforeseen ways. Accidents and errors can happen even with the most brilliant engineers and most controlled environments in the world. Unfortunately, this means that outright elimination […]
A developer’s guide to GitOps
One of a modern DevOps team’s driving objectives is to help developers deploy features as quickly and safely as possible. This means creating tools and processes that do everything from provisioning private developer environments to deploying and securing production workloads. This effort is a constant balance between enabling developers to move quickly and ensuring that […]
Why distributed apps need dependency management
Distributed cloud applications (aka microservices) have introduced an enormous amount of complexity into the design and operation of cloud software. What used to manifest itself as complexity hidden within a single process or runtime now finds itself spread across tens or hundreds of loosely coupled services. While all of these services can use different languages […]
Cycling credentials without cycling containers
In my prior posts, we’ve talked about how to instrument credential cycling and why it’s important to enable application portability. In this post, we’ll take the notion of credential cycling even further and show how secrets can be injected into volumes mounted to your applications. Injecting secrets into mounted volumes is a great way to securely provide credentials […]
How dynamic credentialing makes apps portable
In my last post we talked about how to leverage secret managers to safely store and cycle application credentials in production. In this post we’re going to take the concept of credential cycling a step further to streamline the ability for an app or service to be deployed to parallel environments through dynamic credentialing. Allowing apps to be […]
The feature Docker forgot
It’s been seven years since Docker was first announced at PyCon, and containers have since inspired sweeping changes in the roles and responsibilities of DevOps engineers around the world. The performance optimizations of a shared OS with the help of an open-source engine gave many developers their first taste of production-ready virtualization; making virtualization approachable […]
The importance of software portability
The evolution of software might be a story of innovation in delivery channels – the mainframe to the personal computer, hardware-specific applications to cross-architecture compilation, desktop to mobile, on-premise to cloud. These new delivery methods represented a unique opportunity for developers to reach more users with the same application. The benefits are obvious: write once, make available […]