Releasing a new feature to production is crucial to successful market-impact. Unlike a monolith application, where you need to optimize deployment for that particular case, microservice deployment practices are different. Here you need to scale to multiple services, where each of them has its own dependencies and where each service can be written in a different language.
Choosing the right tools and infrastructure will make deployment easier. Reliable microservice releases can be achieved by applying continuous delivery/ continuous deployment principles. A deployment pipeline is the main piece of continuous delivery.
Sometimes it is crucial to deploy and test new feature to production in order to verify if it is stable, or just to test it prior to making it available to customers. There are two techniques how this can be achieved:
- dark launches: this is the practice of deploying a service to production significantly prior to making it available to end users. Doing this allows you to perform exploratory testing, check the behavior of the service, test it against production traffic…
- feature flags: whit this approach, you can enable new/experimental features to subset of users. Unlike dark launches, this approach can be used at any point of microservice lifecycle. By controlling which features can be seen by the user, feature flags can assist in minimizing potential breakage(s) in the system. Just by enabling/disabling a feature you can do a rapid recovery.
Both of these techniques will allow you to deploy a new feature(s) without impacting customers and provide a flexible mechanism to rollback.