Logo

dev-resources.site

for different kinds of informations.

Common and Useful Deployment Patterns

Published at
5/29/2024
Categories
architecture
webdev
deploy
patterns
Author
zeedu_dev
Author
9 person written this
zeedu_dev
open
Common and Useful Deployment Patterns

What is a deployment pattern?

A deployment pattern (Not to be confused with a design pattern) is an automatic method of deploying new features of an application to your users. But it doesn’t stop there, it is possible to get extra information from a deploy of an application, but…. but how?

Imagine you want to test a feature of your web application, but you are afraid that it will not be liked by your users, or you want to see if this new feature increases or decreases the conversion rate of your application, which is invaluable, especially in the early stages of iteration of an application.

What can you do in these cases? The best thing to do would be to test it on a representative sample of your audience and, depending on how it responds, discard it or roll it out to the rest of the users.

Common deployment patterns

There are a number of widely used deployment patterns:

  • Monolithic deployment
  • Microservices deployment
  • Containerization
  • Serverless Deployment
  • Continuous Integration (CI) / Continuous Deployment (CD)
  • Canary
  • Features toggles
  • Blue/Green
  • A/B Testing
  • Dark launches

For this post I am going to focus on the last patterns, since they are the ones I have read the least information about on the internet. Consider that deployment patterns can be combined with each other. For example, you can perform A/B tests on your monolithic application to find the best version. Having said that, I will explain the patterns.

Canary deployment

This pattern consists of showing new features to a small group of users. After analyzing and correcting the performance of the new features and, if appropriate, the deploy is extended to all users.

Canary deployment schema

Features toggles deployment

Instead of releasing all changes at the same time, this pattern hides new features behind a switch, which can be turned on or off without modifying the code. This allows changes to be released gradually or only to certain users, making it easy to test and manage. This method has the advantage that if a problem occurs, you can turn the switch off without the need to return the code to a previous state.

Features toggles deployment schema

Blue/Green deployment

In the blue/green deployment we have two similar environments simultaneously. These environments will be known as blue and green. At any time only one of the two environments will be active, while load balancing from one environment to the other. If we find any errors we simply adjust the load balancing to the opposite side.

Blue green deployment schema

A/B testing deployment

A/B testing is the classic A/B testing; a random set of our users will receive version A of the application, while the rest will receive version B. We will then use statistics, specifically the two-sample t-test, to determine which version (A or B) is more effective.

The distribution percentage does not necessarily have to be 50-50.

A/B testing deployment schema

Dark launches deployment

This type of deployment pattern is quite similar to the Canary deployment, however in this case users must be aware that they are receiving a test version and must be aware of the new functionality being tested. With this knowledge the users will be able to provide feedback on the new functionality.

Dark launches deployment schema

Consider that many projects do not reach the necessary size for a deploy pattern to be useful, and that if your application has few users it may even be counterproductive. However, if this is not the case, you can use one or several of them to extract valuable information for your application.

deploy Article's
30 articles in total
Favicon
How to Deploy a Static Website to AWS S3 with Razorops CI/CD
Favicon
Pipeline CD en Jenkins para terraform AWS EKS segunda parte (plugin AWS Credentials)
Favicon
Kamal 2 Quick Start - the missing tutorial
Favicon
Evento de Mobile, Frontend, Backend, Banco de Dados e Deploy Gratuito
Favicon
Deploy a Static Astro Site on Railway
Favicon
Deploy a PHP site to Railway
Favicon
Added advanced debugging features to my machine learning library like pytorch.
Favicon
When Companies Adopt Feature Flags
Favicon
Why should you have a Staging environment?
Favicon
How to Deploy Flutter Apps to the Google Play Store and App Store
Favicon
Deploy MongoDB Replica Set on K8s
Favicon
Deploy Go Application using Docker Compose Replicas and Nginx
Favicon
Despliegue de aplicación de Django con Github Actions para un servidor propio
Favicon
Common and Useful Deployment Patterns
Favicon
From Frustration to Fix: Conquering Vercel Errors Like a Pro
Favicon
Efficient Data Management with Prisma, Fly.io, and LiteFS Configuration
Favicon
Deploying Forem on Render.com PromptZone.com
Favicon
My Docker stack to deploy a Django + Celery web app
Favicon
Firebase Hosting Setup Complete Issue
Favicon
Deploy an Azure Functions app from a monorepo with a GitHub Action for Node.js
Favicon
DevOps, como começar? ...e por que?
Favicon
Kotlin and Azure Functions - Automating the deployment
Favicon
Private Deployment Gantt chart Project management tools
Favicon
Laravel Deployer Free package for laravel and nodejs apps Deployment
Favicon
Don't Couple Your Deployments
Favicon
Six niche tips for shipping Flutter MacOS builds
Favicon
Deploying a Static Site (feat.Vite, gh-pages)
Favicon
Deploy Express App to Render with MySQL
Favicon
Deploying on Netlify via GitHub Actions: A Seamless Guide
Favicon
AWS CodeDeploy Best Practices for Reliable and Efficient Deployments

Featured ones: