Enterprise architecture at Infosys works at the intersection of business and technology to deliver tangible business outcomes and value in a timely manner by leveraging architecture and technology innovatively, extensively, and at optimal costs. Stay up-to-date on the latest trends and discussions in architecture, business capabilities, digital, cloud, application programming interfaces (APIs), innovations, and more.

« Purposeful Enterprise -- some thoughts on shaping the enterprise of the future | Main | IT Architecture Principles for Digital Architecture »

Adoption Strategies for Cloud Native and Cloud Hosted Applications

Author: Ramkumar Krishnamurthy Dargha
            AVP, Senior Principal Technology Architect

Cloud technologies have been in forefront for nearly a decade now. Many enterprises have been adopting cloud as one of their key technology strategies. In today's world, no IT strategy discussion happens without cloud technologies in the mix. Should an enterprise go for cloud native application strategy or cloud hosted application strategy? If you are also grappling with such questions, read on.

Cloud Hosted applications and Cloud Native applications. What are these?

Cloud hosted applications are those which are found or made suitable to be 'in the cloud', so that enterprises can take advantages of underlying cloud infrastructure. They have following characteristics:

  • Hosted on Standard platforms: They run on non-proprietary, standard platforms. They run on either standard UNIX or Linux or Windows platforms. These applications will be either remediated or refactored to make them suitable to move or migrate to cloud infrastructure. Some of them may be able to move to cloud infrastructure as-is.

  • Hosted on an on-demand and as-a-service cloud infrastructure: They run on standard cloud infrastructure offered by cloud vendors (public clouds) or on private cloud infrastructure. They leverage cloud infrastructure services and features provided by cloud vendor for security, high availability, reliability and other non-functional requirements.

Cloud Native applications on the other hand, are those which are designed 'for the cloud'. These applications are designed such a way so as to derive the best overall advantage of cloud technologies.

In addition to the characteristics of cloud hosted applications, the cloud native applications display certain unique characteristics. They are:

  • Services based: Cloud native applications are services based. They use service oriented architectures (SOA) and microservice-based architectures. Such architectures make cloud native applications loosely coupled and self-contained. They also make cloud native applications independent (independently deployable) and seamless (ability to move around). These characteristics also enable cloud native application to integrate more easily with other services/applications, which is important in multi cloud, multi-vendor environments. All these characteristics are also key prerequisites for auto scalability needs for cloud applications.
  • Container based: Containers encapsulate specific components of application but provisioned only with the minimal OS resources to do their job. Virtual Machines (VM) encapsulate the guest OS, whereas containers reuse the host OS but encapsulate the application logic, required binaries, libraries and configurations required for the application to run. This makes containers light weight and independently deployable. Docker engine is one of the examples of such container engines.

    In addition, we would need a way to orchestrate multiple components that are encapsulated in each container to form one holistic application. This is where container clusters come into play. Docker swarm and Kubernetes are some of the popular container orchestrator engines which does this job. Microservices need not run on containers. They can even run on traditional virtual servers. But microservices and containers bring in synergies together. While microservices enable loosely coupled application architectures, containers enable such applications to be more seamlessly deployable and moved across multiple cloud infrastructures. Thus microservices together with containerization enables agility and flexibility.
  • API first:  APIs are related to the integration characteristics of Microservices. When we say API first, we mean, before implementing Microservices or applications, think about how and for what purpose a Microservice or application would be used/consumed. Are you duplicating the efforts of other developers who may be developing the same functionality exposed through similar APIs? Do you see a specific need for such a functionality exposed through those APIs? Your implementation of Microservices or application may change, but should not change your APIs. If you really want to change the APIs, give them different versions.

    Though APIs are not new architectural concept, API first strategy is specifically important in cloud native context. The reason is: if you want to make your applications really seamless, loosely coupled, re-usable and self-contained, not only the 'how' part of the design (satisfied by microservices based implementation) but also the 'what' part of the design (The API part) is also crucial. APIs should adhere to established standards (ex: REST, HTTP etc.) for seamless consumption.
  • Security: Security is important in cloud native or otherwise. However cloud native applications give specific focus on security within the application. What does it mean? Cloud native applications do not assume that the application is secure just because the application reside behind a firewall. Cloud native applications take precautions in building security in the application as well. That means employing required application specific authentication, authorization, ACLs, security controls, data security including data at rest and data in transit, adopting latest encryption and more stringent encryption algorithms, multi-factor authentication mechanisms etc.

There are additional design principles which cloud native applications are expected to follow.  For example, stateless as against state-full, design for failure etc. One good reference for these additional design principles is an AWS White paper.

Cloud Hosted applications or Cloud Native applications?

Should enterprises go for cloud native applications or cloud hosted applications. Here are points to consider:

  1.  For Applications which have higher life expectancy, cloud native application strategy is better suited.

  2. Applications which are expected to retire soon or replaced by better alternatives in near term, cloud hosted strategy is more suited.

  3. Applications which are in legacy technologies or platforms (like mainframes), the effort and costs required to make them cloud native may be prohibitive and/or risky. Such candidates may be better suited to reside in existing environment. If there is indeed an attractive business case to re-engineer and to take those applications out of legacy platforms, then adopt cloud native application strategy.

  4. Applications which are expected to undergo more frequent changes, cloud native application strategy suits better.

  5. For applications for which will go through agile development process or DevOps process, cloud native application strategy suits better.

  6. Any new applications that are being freshly developed, cloud native application strategy suits better.

  7. When enterprises are undergoing a large scale applications movement to cloud, to mitigate risks in such large transformations, enterprises may be better off adopting a two phase approach. In phase one, move applications to cloud which are suitable to be hosted on cloud. In this way, enterprises benefit from using cloud infrastructures (on-demand, spend flexibility etc.) in phase one.  Once the applications stabilize on cloud hosted environments, in phase two, adopt a cloud native application strategy.

While cloud native application strategy is attractive in long term, the enterprises would have to leverage a combination of cloud native application strategy and cloud hosting application strategies as per specific needs and circumstances listed above.

Any comments/suggestions let me know.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

Please key in the two words you see in the box to validate your identity as an authentic user and reduce spam.