Tuesday, July 30, 2019

Key Architectural Considerations to Evaluate when moving applications to cloud - Part 1

  Ø  Elasticity is one of the major benefits of moving to the cloud. What it essentially means is that the servers can be scaled in or out as needed. While the cloud offers both horizontal and vertical scaling of applications, it’s the horizontal scaling feature that reaps major benefits. If elasticity is the not a key concern, then the application readiness for cloud needs to be evaluated as it could be a better fit to be managed on premise or on a hosted solution.


  Ø  Most of the legacy application mainly scales vertically where the application is dependent on core infrastructure and are tightly coupled with inhouse hardware (low latency + high intensity, or high bandwidth) and specific software and technology stack. Moving such applications to the cloud can create lot of complexities and can require lot of rearchitecting. Also, moving such applications makes them look like a hosting solution instead of a loosely coupled cloud solution.

  Ø   Modern cloud services rely mainly on databases which follow BASE properties, (Basically available, soft state, eventual consistent transactions), and CAP theorem (Consistency, Availability and Partition Tolerant) i.e. if the transactions fail the data will become eventual consistent. Legacy applications are typically monolithic, and the underlying data is mainly designed for ACID transactions, (Atomicity, consistency, isolation, and durability), i.e. transactions are not complete until the data is committed. Applications can get complex to function in the cloud and make use of core cloud features if they are not capable of meeting the goal of eventual consistency and Partition tolerant.



  Ø  When moving application to the cloud another property that needs to be evaluated is the aspect of application state. Cloud is suited well for an application that is stateless, i.e. when the client is unaware of the state of the server. Stateless applications are also easier to size and cache on the cloud. If the legacy application is stateful, i.e. the application has lot of dependency on infrastructure. It will get complex moving them to cloud considering the different requirements around sizing, capacity planning, caching etc.

  Ø  If applications require lot of security and compliance, the organizations also share responsibility with the cloud vendor for lot of IT management if they are moved to the cloud. Organization not only need to maintain adequate governance but also are responsible for meeting the required compliance and audit standards. While most of the major cloud vendors do provide increase IT security including Intrusion Prevention Systems, Web application firewalls, Runtime application self-protection, converged application performance and security monitoring, botnet and DDoS mitigation mechanisms to meet the regulatory standards. Moving such applications to cloud can be more of a hassle in terms of management, quality adherence, maintenance etc than keeping them inhouse.

  Ø  Connectivity and Interoperability is another key consideration when deciding to move applications to the cloud. Every major cloud provider does have the ability to either connect directly or via a virtual private network. But this requires organization to cover up all the critical loopholes for such connections in the targeted and dependent applications. This can be a very tedious task and can lead to several challenges if the organization is not ready. 


No comments:

Post a Comment

Building Microservices by decreasing Entropy and increasing Negentropy - Series Part 5

Microservice’s journey is all about gradually overhaul, every time you make a change you need to keep the system in a better state or the ...