The road to Cloud-Native Transformation goes through DevOps

The road to Cloud-Native Transformation goes through DevOps

Background

Around 90% of the companies are using public cloud according to a recent survey and more and more companies are migrating to cloud in this difficult economic situation triggered by Covid-19. These companies are hoping to reduce their costs and decrease the time to market. Some of them want to move away from maintaining infrastructure and focus on their core capability. They are also hoping to do more innovative things which may not have been possible with legacy systems and beat their competition. Only time will tell how many of these companies succeed but the approach they take to move to cloud can certainly impact their chances of success. One of the things with cloud migration is that it may not be possible to get full benefit of cloud if you are taking a lift and shift approach and simply move your legacy application to cloud with minimal changes. In fact, in many cases it can actually increase your costs to maintain a legacy application on cloud. You will need to modernize your legacy application to make it cloud ready. Ideally you should refactor your legacy application to make it truly cloud native and leverage the full benefit of cloud.

The Cloud-Native Approach

A cloud-native approach focusses on how applications are built, deployed, and managed rather than where (read cloud) applications are deployed. It is an approach to building and running applications that takes full advantage of principles like:

·      Modular architecture based on stateless APIs and microservices which allows multiple teams to develop and test in parallel and reduces the need for regression testing

·      Agile/DevOps processes to enable continuous integration and continuous delivery to support faster time to market

·      Flexible on-demand infrastructure supported by containers that can scale horizontally on demand, support multiple environments, and offer application portability

Path to Cloud-Native Transformation

No alt text provided for this image

The path to cloud-native transformation can vary by organization. Just deploying a legacy application on containers does not lead to the service quality and delivery frequency required by digital business. Likewise, just adopt-ing a few tools that support Agile or DevOps may not lead to the faster time to market. Success from Cloud-Native transformation is enabled by a combination of practices, technologies, processes and mind-sets.

Taking the case of a typical legacy organization with a monolithic application which is not used to Agile and DevOps way of application development, Cloud Native transformation can be a long and arduous journey. It is best to take a phase-wise approach to cloud native transformation as suggested below in this case. For other organizations who have adopted cloud and DevOps they can customize this path based on where they are in this journey.

1.    Embrace Agile and DevOps processes

Cloud native technologies like containers and APIs bring with them the advantages of automation and scalability. Self-service and on-demand infrastructure provisioning allows developers to access the infrastructure they need when they need it. On the other hand, it also increases the speed and complexity of development which can only be managed by working in an Agile/DevOps environment.

 Agile development allows organizations to release early and release often. DevOps extends Agile further by integrating development, operations, and security teams to improve end-to-end software delivery processes. It allows the code changes to be pushed to production quickly and reliably. As a result, the actual users of the code can provide fast feedback back to developers. This iterative, fast feedback loop is enabled through Agile and DevOps and is really the end goal e.g. quickly putting working software in the hands of users fine-tuned to their needs.

 If you have never used Agile or DevOps it is best to start small and try it out with teams who are enthusiastic in adopting it. With small successes you will slowly gather momentum and easily extend this across the organization. If you are already working in an agile/DevOps environment, you can probably go through a DevOps maturity assessment and create an action plan to bolster your improvement areas. You can use a readymade DevOps maturity assessment framework like DORA or you can use a very popular CALMS model (Collaboration, Automation, Lean, Measurement and Sharing) to design your own assessment.

 2.    Move your monolithic application cloud / optimize for cloud

If you have a complex monolithic legacy application the first logical step may be to slightly modernize it and deploy it on cloud so that you can start reaping the benefits of cloud. This might involve analyzing your legacy infrastructure and software and finding suitable target alternatives in cloud to migrate to. For example, just by moving the monolith to containers speeds deployment. Or moving a traditional database to a cloud database might make it way easier to achieve fault-tolerance or scalability. This might also be an opportunity to move from costly and resource heavy software to open-source or cloud native software which will transform your costs to a pay-as-you-go model. Almost all major public cloud platforms provide useful tools to do quick lift and shift migration. You may also need to analyze your application code for any major cloud incompatibility which would need to be fixed before migration.

3.    Refactor the monolithic application to make it truly cloud native

To truly take advantage of cloud you must refactor your monolithic app to break it down into modular services using APIs and microservices. This could be done in a phase wise manner over a period and there are many benefits to adopting this approach. The separation of concerns is the architectural guiding principle here and since APIs are stateless so multiple APIs being used in an application can developed and tested in parallel. It also minimizes the need for regression testing for the same reasons. An architecture driven by APIs and microservices also makes it quite complex to manage due to sheer number of these components you can end up with. APIs also make it easier to scale up and down to deliver the right amount of infrastructure at all times. Leveraging APIs for a Cloud Native DevOps strategy is a combination of cost optimization, performance, and visibility.

要查看或添加评论,请登录

Satyan Prakash的更多文章

社区洞察

其他会员也浏览了