Designing and moving applications to cloud

When working with customers we often come across the discussion on how one should plan on moving their line of business applications. Firstly, an enterprise needs to find the list of applications they are currently using which would then go to cloud. There are four types of applications,

  1. Applications which can be moved easily: now most of the cases this is lift and shift, so customer can move the Virtual Machines to the cloud and start using the application as is without much effort. This type of applications are generally of the kind which has less budget for migration or does not have enough time left to do so.
  2. Applications which need code change to be able to move to cloud: this is a typical application modernization where the customer not only moves their application to the cloud but leverages the power of cloud. This requires basic design change for obvious reason. Earlier when this application was designed cloud was never a requirement. So, those missing parts can be helpful in long run. Platform as a Service(PaaS) based applications can go through this model. This effort demands more budget and time. So, the applications which has less user base and low impact can be chosen for the drive. By doing this, enterprise will gain the knowledge and expertise to do plan the further migration or modernization projects. First of this kind within an organization can be considered as lighthouse application in modernization.
  3. Applications which does not have much lifetime left: By moving many applications to the cloud enterprise gets little extra space in the on-premises datacenter. Thus, applications which are in verge of deathbed and does not have any future roadmap can live happily in the datacenter for the time being. No one sees any value of altering them.
  4. Greenfield application: completely new for the organization

After IT decides the applications to work on and put them in right bucket we need a team. One team may not be helpful as this requires various kinds of expertise. Right from domain expertise to cloud knowledge. People who have developed and supported the legacy applications may have the right domain expertise but they may lack the knowledge on cloud. So, we need an advisory board who can help team decide the right approach. This purely comes from the experience and the changing landscape of cloud does require constant touch on what is happening around to leverage the latest and greatest technologies.

When IT moves from on-premises to cloud they have the fear of "responsibility complex". This means they always think that since the cloud vendor is now managing the base infrastructure they have the less importance to the organization. There is potential fear of budget cut by the organization. It is a mind shift which needs to happen in the industry as well as in IT operations. Till the time an IT is ready to adopt the cloud no Enterprise Architect can help move an application. There will always be a road blocker for the team who is planning to move their workloads to cloud. This is a constant battle and an enterprise needs to win this battle in a good note. One can't wait too long to adopt a cloud. One of the industry analysis says that since the year 2000 approximately 50% of the fortune 500 companies have disappeared from the market. Most common reason to all was the ability to adopt the new way of operating business. This includes modernizing their IT infrastructure. With more and more workloads are moving to the cloud, conventional IT blockers are not just making things slow but they are also putting businesses into a risk to getting extinct.

Cloud does not take the major responsibility from IT department of an enterprise. However, IT now play an important role. With so many unknown fa├žade in the cloud. Cloud is becoming black box of the IT and can now act as gatekeeper in terms of management and monitoring, cyber security, compliance etc. Every businesses in its domain follows certain mandatory compliance policies and no team than IT can help protect the interest. With the help of industry cloud experts and enterprise architect now IT can build the guideline to be followed by the application development team within an organization. This leads to a common platform and pattern an organization should follow. Once this is defined and needs a constant refinement as the cloud industry is rapidly changing, application architect now plan based around the guideline. Hence reducing the conflict and making things like approval, signoff etc. faster.

With Web Application flexibility in terms of how is operates at the end user experience perspective, many leader thinks it as technology agnostic. But a typical Web Application needs to target one and only one operating system and framework. Since this runs on end user browsers this may look technology agnostic but it is completely opposite. Similar dilemma is for cloud as well. With so many vendors and open source technologies now cloud seems like a runtime; teams are building applications for. Just like the initial application development where a debate may happen whether to build the application for .NET or Node.js, same may lead to Azure vs AWS or anything of that sort of discussion. When a true modern application which really needs to leverage the power of cloud works on native SDK and platform capability cannot be designed also for another cloud platform. The whole idea is not to build a product and be able to sell. It is more of enabling the business need of an organization. Hence spending too much time to thinking all possible solutions which ideally may work on all possible cloud platforms will only lead to delay the execution. This cloud agnostic thing potentially would also force business to adopt the solution. This is bang opposite of an internal IT can help produce the application which business requires.

Remember one thing while moving an application or building it for business, an application is for business but the business is not for the application. So never ask to adopt the business to adopt the application rather an application should adopt the business. This changes the whole discussion.

Never underestimate the cyber security as this may lead to higher business loss.