After my final year in degree, I directly jump to the industry and doing cloud native development. It has 2 years now. During the 3rd month on doing cloud native development, I was taking certificate for Microsoft Azure Developer and AWS Developer. At that time, I was thinking, what if I build something on Azure natively and wanted to migrate to AWS? or vice versa. What if there is a customer that don't want to use their current cloud provider, and wanted to migrate to AWS. This must be hard.
There are 1 term that we can relate to this which is Vendor lock-in. Vendor lock-in refers to a situation where a an application becomes dependent on a particular cloud provider and finds it difficult or costly to switch to a different provider.
But throughout the process, now I understand on how to minimise this issue. I understand that we are concerns about vendor lock-in in cloud-native development. However, I would like to provide some additional context on this issue.
First, it is true that cloud-native development often involves using the native capabilities of a specific cloud provider. This is because these capabilities are designed to work seamlessly with the cloud provider's infrastructure and services, which can result in better performance, scalability, and security. However, this does not necessarily mean that you are locked into that provider forever.
There are several strategies that can be used to minimize the risk of vendor lock-in.
Use cloud-agnostic technologies and frameworks that can run on multiple cloud platforms. For example, many cloud-native applications use Kubernetes as a container orchestration platform, which can be deployed on any cloud provider or even on-premises. You can also use serverless framework, where we use compute as a service to deploy our code. To move between cloud, we just need to cater the code a bit according to the cloud provider. This is much better than you completely refactoring the whole code.
Design applications using a modular architecture that separates the application logic from the underlying infrastructure. When designing and developing cloud-native applications, consider portability as a key requirement. This can make it easier to switch cloud providers.
Additionally, most cloud providers offer tools and services to help you migrate your applications to their platform or to another platform if you decide to switch providers. While there may be some costs and effort involved in this process, it is typically much less than starting from scratch. These migration tools and services that are provided by the cloud providers can ease the process. Example are AWS Migration Hub, AWS Application Migration Service, Azure migrate and many more.
In summary, while vendor lock-in is a valid concern in cloud-native development, it is not an insurmountable obstacle. It is possible to minimize the risk of lock-in and maintain the flexibility to choose the best platform for your needs.
But hey, on the other side if you stick to one vendor, you can reduced the complexity of your application. Sticking with a single cloud provider can simplify IT operations by reducing the number of systems and providers that need to be managed. It depends on what you want to achieve in your organization, how you handle the complexity, and which path you want to choose.
Problems will always there. What we can do about it? Try to minimize it as little as possible.
Stay hungry, stay foolish, and keep learning!
Psstt pstt :p
Do consider to love this article ❤️ and follow me! Why not right? It's FREE~
I would really appreciate it 👨🏻💻