The growth of cloud computing is multi-folds. The capability to launch the application almost anywhere in the world, the time to take the solution to the market, the richness of the services provided by the cloud vendors, and mostly the bare minimum requirement of just a laptop with internet connectivity for developers to develop the applications has lead to high rocketing rate in cloud adoption.
Among the many benefits, what would be the one single main advantage of cloud adoption?
In my view, be it a well-established enterprise or startup thriving to acquire more user base, the infrastructure and the SLA provided by cloud vendors are the same as what Google, Amazon, or Microsoft application runs on. It is not easy for a non-tech business to run their app in the same infrastructure as Google runs. Similarly, for the startups to run their application in world-class infrastructure like amazon, google, or microsoft they will need to spend a huge time and money on infrastructure which they do not have much.
The strategies in cloud application development can be broadly classified into 2 different genres.
A) Enterprises heavily invested in on-prem data centers trying to migrate to the cloud to leverage the benefits and not worry about the infrastructure management
B) Startups who do not want to spend more on infrastructure, rather focus on the core domain and solve the problem they intend to solve
Let us see in detail the 2 major cloud application development strategies – Cloud application development depends on the current state of the enterprise
1. On-prem to cloud application development strategy –
The majority of the IT solutions would be running from on-prem data centers already. So for many enterprises, going cloud-native directly may be a major challenge. So they would adopt phase by phase or service by service migration strategy. For example, an enterprise that utilizes lots of storage space may determine just to move the storage solutions to AWS S3 or Google cloud storage.
A) Monolith to microservices
As enterprises evolve over a period of time and when they decide to migrate to cloud solutions, that is a good starting point to address many of the tech debt and backlogs. Identifying the different microservices in an existing monolith and migrating one after the other to the cloud would eliminate many ACLs (Anti Corruption Layer) surrounding a big ball of mud.
Where is it used? Legacy systems running at on-prem data centers for years and moving towards cloud
B) IaaS vs PaaS vs FaaS
Once when the microservices are identified then the type of cloud services can be determined. Depending on the time and effort that can be utilized by the enterprises for the cloud migration, the type of the service will be determined. The easiest being IaaS and PaaS where lift and shift are easy when compared to the FaaS model.
Where is it used? Migrating on-prem containerized microservices to the cloud
C) Business consolidations
There will be plenty of services developed within the enterprise IT department by various teams on different occasions. At times, the services that are utilized very low may be given equal importance to the services that are consumed more. As the services are analyzed to migrate to the cloud, it allows consolidating some services by adding more services together or decommission the services that do not add value to the business.
Where is it used? An example may include unifying the customer records across different LoB’s within the enterprise and moving to cloud
2. Cloud-native application development strategy –
Cloud-native application development strategies are mostly adopted by startups as they are starting greenfield. The cloud is so matured that the cloud-native development has a variety of development methodologies in place to pick from.
A) Serverless cloud –
The needed computing and storage services will be provided on the needed basis. The services related to every functionality will be offered by the cloud vendors. The developers can develop the applications on top of the services.
Where is it used? 1) Customer-facing applications, 2) Internal enterprise applications
B) No code cloud platforms –
Cloud-based no-code app development has just begun with the introduction of google AppSheet, AWS honeycode, etc. Here the developers need not worry about writing any code, rather focussing on assembling the app using prototypes for quicker use.
Where is it used? 1) Internal enterprise applications
C) Cloud enterprise productivity suites –
With very minimal scripting or coding efforts, applications can be developed leveraging a variety of productivity tools like sheets, words, sites, forms, and integration with any other external APIs. These are generally considered as low code or lightweight application development models.
Where is it used? 1) Internal enterprise applications
D) Application development platforms –
They are used in addition or as an extension to the existing application. The application development platforms help to build the extensions in a specific area like digital workflow management, customer relationship management, mobile application development, etc.
Where is it used? 1) Internal enterprise applications, 2) Customer facing solutions
E) Cloud COTS –
These are not just COTS that will be running in our cloud environment, rather the COTS solution can sometimes run from the COTS cloud as well. They focus on running an entire business use case by integrating with various systems in a workflow.
Where is it used? 1) Customer-facing applications, 2) Quick internal solution PoC’s and prototypes
Please share your thoughts on the development strategies discussed and highlight what you do differently in your cloud adoption journey.