Cloud native refers less to where an application resides and more to how it is built and deployed. A cloud native application consists of discrete, reusable components that are known as microservices that are designed to integrate into any cloud environment.
Read how desktop as a service (DaaS) enables enterprises to achieve the same level of performance and security as deploying the applications on premises.
Register for the guide on hybrid cloud
Microservices (also called microservices architecture) is an architectural approach in which a single application is composed of many smaller, loosely coupled and independently deployable components or services. These services (also called microservices) typically have their own technology stack, inclusive of database and data model. They communicate with each other via a combination of REST APIs, event streaming, and message brokers.
Because microservices can be deployed and redeployed independently, without impacting each other or disrupting the end-user experience. They are a perfect match for automated, iterative delivery methodologies such as continuous integration/continuous deployment (CI/CD) or DevOps.
In addition to being used to create net-new cloud native applications, microservices can be used to modernize traditional monolithic applications.
In an IBM® survey of over IT executives, developer executives and developers, 87% of microservices users agreed that microservices adoption is worth the expense and effort.
Developers often deploy microservices inside containers—lightweight, executable application components that combine application source code (in this case, the microservices code) with all the operating system (OS) libraries and dependencies that are required to run the code in any environment. Smaller, more resource-efficient, and more portable than virtual machines (VMs), containers are the de facto compute units of modern cloud native applications.
Containers amplify the benefits of microservices by enabling a consistent deployment and management experience across a hybrid multicloud environment—public clouds, private cloud, and on-premises infrastructure. But as cloud-native applications multiply, so do containers and the complexity of managing them. Most organizations that use containerized microservices also use a container orchestration platform, such as Kubernetes, to automate container deployment and management at scale.
IBM customers find themselves increasingly tasked with improving existing applications, building new applications, and enhancing user experience. Cloud-native applications meet these demands by improving app performance, flexibility, and extensibility.
Advantages
Disadvantages
Cloud-native applications often have specific functions. Consider how cloud-native applications might be used on a travel website. Each topic covered by the site—flights, hotels, cars, specials—is its own microservice. Each microservice may roll out new features independent of the other microservices. Specials and discounts can also scale out independently. While the travel site is presented to customers as a whole, each microservice remains independent and can be scaled or updated as needed without affecting other services.
IBM Cloud Garage provides IBM customers consulting expertise to build scalable, innovative cloud native apps fast. It offers an innovation hub where businesses of all sizes can design and build apps that solve real-world business needs.
Whether creating a new cloud native application or modernizing an existing application, developers adhere to a consistent set of principles:
Cloud-native applications frequently rely on containers. The appeal of containers is that they are flexible, lightweight, and portable. Early use of containers tended to focus on stateless applications that had no need to save user data from one user session to the next.
However, as more core business functions move to the cloud, the issue of persistent storage must be addressed in a cloud-native environment. This requires developers to consider new ways to approach cloud storage.
Just as cloud native application development takes on a microservices and modular approach, so must cloud native storage. Cloud-native data can reside in any number of places— such as event or system logs, relational databases, and document or object stores.
Data location, retention demands, portability, platform compatibility, and security are only a few of the aspects that developers must consider when planning for cloud native storage.
A cloud-enabled application is an application that was developed for deployment in a traditional data center but was later changed so that it also could run in a cloud environment. However, cloud native applications are built to operate only in the cloud. Developers design cloud-native applications to be scalable, platform agnostic, and composed of microservices.
In the short history of cloud computing, the meaning of "cloud ready" has shifted several times. Initially, the term applied to services or software that is designed to work over the internet. Today, the term is used more often to describe an application that works in a cloud environment or a traditional app that has been reconfigured for a cloud environment. The term "cloud native" has a shorter history and refers to an application developed from the outset to work only in the cloud. And to take advantage of the characteristics of cloud architecture or an existing app that has been refactored and reconfigured with cloud native principles.
A cloud-based service or application is delivered over the internet. It’s a general term that is applied liberally to any number of cloud offerings. Cloud native is a more specific term. Cloud native describes applications that are designed to work in cloud environments. The term denotes applications that rely on microservices, continuous integration, and continuous delivery (CI/CD) and can be used via any cloud platform.
Cloud first describes a business strategy in which organizations commit to using cloud resources first when starting new IT services, refreshing existing services, or replacing legacy technology. Cost savings and operational efficiencies drive this strategy. Cloud-native applications pair well with a cloud-first strategy because they use only cloud resources and are designed to take advantage of the beneficial characteristics of cloud architecture.
IBM Cloud® is a leader in cloud-native app development and a trusted partner to build your enterprise apps quickly on an open, secure, and integrated platform.
Deploy highly available, fully managed Kubernetes clusters for your containerized applications with a single click.
Run container images, batch jobs or source code as a serverless workload - no sizing, deploying, networking, or scaling required.
IBM Consulting® cloud app development services are centered on co-creation and co-execution, which are assisted with reference architectures, tools and accelerators, virtual delivery models and industry solutions.
In a microservices architecture, each application is composed of many smaller, loosely coupled and independently deployable services.
Containers are executable units of software that package application code together with its libraries dependencies, and can be run anywhere, whether it be on desktop, traditional IT, or the cloud.
Kubernetes is an open source container orchestration platform that automates deployment, management and scaling of containerized applications.