An examination of service life cycles
Let’s take a moment and think about service life cycles.
For any application made up of multiple interacting microservices, you must consider that each microservice may have multiple versions, with new versions being introduced in the future. You may have different versions representing the following:
- Fixes to bugs or security vulnerabilities
- Enhancements for new features
- Differences in functionality for different circumstances
- Localization or regional customizations
- Processing architecture differences (requiring different compilations)
- Experiments for different optimizations
- Changes in design directions
Any of these differences can be codified in different ways, including the following to name a few:
- Mangling the package names with version numbers
- Tagging the package with property-specific differences
- Repo forks
- Parameterizing the logic through environment variables or configuration...