Some authors say that an application that follows the micro-services architecture are automatically cloud-native. This is true? To what extent?
Also, some articles about cloud native architecture development say that cloud-native architectures "must" include containers and orchestrators (usually Kubernetes).
If this is true, why? I see these technologies more as part of the deployment process rather than the actual platform of the production environment, the cloud in this case. But most likely I am wrong in this.
Thanks for your question. I can tell you that when we had started to write the book, this was one of the main questions that we were trying to address...in fact we discussed this with many industry leaders who were working in cloud technologies for multiple years and interestingly though everyone articulated the meaning of being 'cloud-native' differently, but they all had some common principles. Based on all that research and our experience in this domain, we have tried to simplify this by defining a Cloud Native Maturity Model (CNMM), which revolves around three axes:
a) Cloud Native Service Adoption
b) Application centric design patterns c) Degree of Automation
So based on the above, any workload/application that's deployed in cloud can qualify to be cloud-native, however the degree to which it's cloud native will depend on how well you are using best practices around those axes. So now coming to your question, enabling an application to follow the microservices principles definitely helps, however that's not the only aspect to truly qualify it to be fully cloud-native. Likewise, using containers helps you in the process, but now with services like AWS Lambda which help you make applications totally serverless is an even more sophisticated option to make your service to be cloud native. In the book, we also talk about 12-factor application design principles which are very important in the context of being cloud-native. So net-net, there's no one technology or cloud service which if used makes you cloud-native, and rather its a combination of multiple aspects (CNMM axes, as mentioned above), which makes your workload to be much more optimal and cloud-native.
Hope this helps and makes you even more excited to read the book :-)
There are some articles explaining about different levels of Cloud-Native.
However, a maturity model approach sound very interesting since this would provide an ahead-of-time architecture modeling and would promote a transition phase for projects.