2 4 1 Cloud native applications

Cognitive Class
22 Mar 202006:39

Summary

TLDRCloud native applications are designed to operate exclusively in the cloud, utilizing microservices for scalability and flexibility. Packaged in containers, they enable frequent updates without disrupting user experience. Unlike monolithic apps, they separate user interfaces, business logic, and data layers, allowing independent feature rollouts and scaling. Key principles include adopting microservices architecture, relying on containers, and using Agile methods for iterative updates. Use cases span everything cloud-based, emphasizing standardized logging, events, and distributed tracing for efficient management.

Takeaways

  • 🌟 **Cloud Native Definition**: Cloud native applications are designed to operate in the cloud, either natively or refactored to follow cloud native principles.
  • 🛠️ **Microservices Architecture**: These applications are composed of microservices that can operate and scale independently.
  • 📦 **Containerization**: Microservices are often packaged in containers, which include the code, libraries, and dependencies needed to run the application.
  • 🔄 **Iterative Improvement**: Cloud native apps allow for frequent updates and iterations without affecting the end-user experience.
  • 🚫 **Distinct from Monolithic**: Unlike monolithic applications, cloud native apps do not tightly couple UI, business logic, and data layers.
  • 🌐 **Use Case Example**: A travel website can use cloud native principles where each service like flights, hotels, and cars is a separate microservice.
  • 🛑 **Independent Scalability**: Each microservice can scale independently, such as specials and discounts on a travel site.
  • 🔧 **Development Principles**: Developers follow a set of principles including microservices architecture, container use, and Agile methods for cloud native apps.
  • 🌉 **Cloud Infrastructure**: Cloud native apps are designed for hybrid and multicloud environments, utilizing cloud infrastructure.
  • 📈 **Benefits**: Cloud native apps enable innovation, business agility, and leverage a commoditized solution stack.
  • 🔬 **Standardization**: For cloud native apps, standardization of logging, events, and distributed tracing is crucial for development efficiency and system reliability.

Q & A

  • What is a cloud native application?

    -A cloud native application is either an application developed to work exclusively in the cloud or an existing application refactored to adhere to cloud native principles. It consists of microservices that work together but can be independently scaled and updated.

  • How do microservices in a cloud native application function?

    -Microservices in a cloud native application operate independently, allowing for individual scaling and iteration without affecting other services or disrupting the end-user experience.

  • What is the significance of containers in cloud native applications?

    -Containers are the packaging units for cloud native applications, including the application code, libraries, and dependencies, enabling the application to run consistently across different environments.

  • How does a cloud native application differ from a traditional monolithic application?

    -Cloud native applications are built as a collection of microservices, unlike monolithic applications which are a single piece of software tightly coupling the user interface, business logic, and data layer.

  • Can you provide an example of a cloud native application?

    -A travel website where each service like flights, hotels, and cars is a separate microservice that can independently roll out new features and scale is an example of a cloud native application.

  • What are the key development principles for creating cloud native applications?

    -Developers should follow microservices architecture, rely on containers for flexibility, scalability, and portability, and adopt Agile methods for quick iterative updates based on user feedback.

  • Who is Andrea Crawford and what is her role in the context of this script?

    -Andrea Crawford is with IBM Cloud and she discusses cloud native applications, comparing the traditional monolithic apps with the newer microservices-based cloud native approach.

  • What is the role of the scheduling and orchestration layer in cloud native applications?

    -The scheduling and orchestration layer, often involving control planes like Kubernetes, manages how microservices are deployed, managed, and scaled in a cloud native environment.

  • What benefits can cloud native applications leverage?

    -Cloud native applications can enable innovation, business agility, and take advantage of the commoditization of the solution stack, allowing for lower gravity core services and freeing up innovation.

  • What are the use cases for building a cloud native application?

    -Any application that lives in the cloud should be designed with a cloud native approach, including standardization of logging, events, and the use of services like load balancing, service discovery, and routing.

  • What is the importance of standardizing logging and events in cloud native applications?

    -Standardizing logging and events simplifies the development process by providing a common language for development squads, allowing for easier integration and management of microservices.

  • What does the term 'commoditization' mean in the context of cloud native applications?

    -Commoditization in cloud native applications refers to the process of transforming unique services into standardized, easily replaceable components, which can be leveraged across different applications and services.

Outlines

00:00

🌤️ Cloud Native Applications Overview

Cloud native applications are designed to operate exclusively in the cloud environment, either natively or by refactoring existing applications with cloud-native principles. They are composed of microservices that can operate and scale independently, often packaged in containers for flexibility and portability. This approach allows for frequent updates without affecting the end-user experience. Unlike monolithic applications, cloud native apps are not tightly coupled and can be updated or scaled independently. The example of a travel website is used to illustrate how different microservices like flights, hotels, and cars can be developed and scaled independently. The video also discusses the development principles for cloud native applications, such as following microservices architecture, relying on containers, and adopting Agile methods for iterative updates. The speaker, Andrea Crawford from IBM Cloud, introduces the key concepts, benefits, and use cases of cloud native applications.

05:04

🔄 Benefits and Use Cases of Cloud Native Apps

The second paragraph emphasizes that any application living in the cloud should be designed with a cloud-native approach. This includes standardizing logging and events across microservices and cloud-native apps to avoid inconsistencies and to enable easier management. The paragraph also highlights the importance of distributed tracing in the complex microservices environment. It mentions the need for core system services like load balancing, service discovery, and routing, which are becoming commoditized with tools like Istio and Knative. The benefits of cloud native apps are summarized as being about enterprise and engineering at scale. The video concludes by suggesting that the next topic will be about DevOps.

Mindmap

Keywords

💡Cloud Native Application

A 'Cloud Native Application' is one that is either developed specifically for cloud environments or refactored to operate optimally within them. It embodies principles like microservices architecture, containerization, and continuous delivery. In the video, the concept is central as it describes applications that are designed to be scalable, resilient, and flexible, leveraging the full potential of the cloud. An example given is a travel website where each service like flights, hotels, and cars is a separate microservice.

💡Microservices

Microservices refer to a software architecture style where an application is composed of small, independent services that communicate over a network. Each service is loosely coupled and can be developed, deployed, and scaled independently. The video emphasizes microservices as the building blocks of cloud native applications, allowing for continuous improvement and scaling without affecting the entire application, as illustrated by the travel website example.

💡Containers

Containers are a form of operating system virtualization where each container is an executable unit of software that includes the code and all its dependencies. They are a key component of cloud native applications because they enable portability and consistency across different computing environments. The script mentions that microservices are often packaged in containers to ensure they can be run anywhere.

💡Agile Methods

Agile methods are iterative and incremental software development approaches that emphasize flexibility, collaboration, and customer feedback. The video connects Agile methods with the development of cloud native applications, highlighting how they enable rapid, iterative updates based on user feedback, which is crucial for maintaining a competitive edge in cloud environments.

💡Orchestration

Orchestration in the context of cloud native applications refers to the automation of deployment, scaling, and operations of application containers through system processes. The video mentions automation and orchestration as essential for managing microservices independently, ensuring that updates and scaling can be done without disrupting the end-user experience.

💡Monolithic Applications

Monolithic applications are traditional, single-tiered applications where all components are tightly coupled within a single unit. The video contrasts monolithic applications with cloud native applications, explaining that the latter is more flexible and scalable because it avoids the rigid structure of the former.

💡Cloud Infrastructure

Cloud infrastructure encompasses the various types of cloud services, including private, public, and enterprise clouds. The video discusses how cloud native applications are designed to operate within this infrastructure, highlighting the importance of cloud native applications being able to function in hybrid and multicloud environments.

💡Scheduling

Scheduling in cloud native contexts refers to the process of managing the allocation of resources to tasks or workloads. The video mentions scheduling as part of the orchestration layer, which is crucial for controlling the deployment and operation of containers and microservices within the cloud environment.

💡DevOps

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops) to shorten the development lifecycle and provide continuous delivery of value to end users. The video briefly mentions that the next topic will be DevOps, implying its relevance in the context of cloud native applications for streamlining development and deployment processes.

💡Hybrid Cloud

A hybrid cloud is a computing environment that combines on-premises, private cloud, and third-party public cloud services. The video mentions hybrid cloud as a situation where cloud native applications can be applied, indicating the flexibility of these applications to operate across different types of cloud environments.

💡Distributed Tracing

Distributed tracing is a method used to profile and monitor applications, especially those built using a microservices architecture. It helps in debugging and understanding the flow of requests as they travel through various services. The video script refers to the need for distributed tracing in the context of managing the complex interactions within microservices.

Highlights

A cloud native application is developed specifically for cloud environments or refactored to adopt cloud-native principles.

Cloud native applications consist of microservices that are independently scalable and iterated through automation and orchestration.

Microservices in cloud-native applications are often packaged in containers, allowing flexibility and portability across environments.

Unlike monolithic applications, cloud-native apps enable iterative improvements without disrupting the end-user experience.

An example of a cloud-native application is a travel website where different services like flights, hotels, and cars are separate microservices.

Microservices allow independent updates and scaling, as seen in the travel website where specials and discounts can scale separately from other services.

Cloud-native development follows principles like microservices architecture, containerization, and agile methodologies for rapid iteration.

Cloud-native apps can exist in hybrid or multicloud environments, leveraging private, public, or enterprise cloud infrastructure.

The orchestration and scheduling layer of cloud-native apps is managed by control planes, such as Kubernetes.

Cloud-native apps integrate with existing services, either in the cloud or on-premises, through the application and data services layer.

Cloud-native application runtimes are akin to conventional middleware but designed specifically for the cloud.

Cloud-native architecture promotes innovation and business agility by refactoring core services lower in the stack, freeing up resources for new development.

Standardization in logging, events, and distributed tracing is crucial for cloud-native apps to ensure consistent and scalable operations.

Commoditized services like load balancing, service discovery, and routing are integral to managing the complex infrastructure of microservices.

Enterprise-level engineering at scale is a key benefit of cloud-native applications, offering robust infrastructure for large-scale operations.

Transcripts

play00:07

Simply put, a cloud native application is an application developed from the outset to

play00:13

work only in the cloud environment, or an existing app that has been refactored and

play00:18

reconfigured with cloud native principles.

play00:21

A cloud native application consists of microservices working together as a whole to comprise an

play00:27

application, yet each can be independently scaled and iterated through automation and

play00:33

orchestration processes.

play00:35

These microservices are often packaged in containers, which are executable units of

play00:40

software in which the application code is packaged along with its libraries and dependencies

play00:46

so that it can be run anywhere.

play00:49

This independence enables frequent, iterative improvement of cloud native applications,

play00:55

without disrupting the experience of end-users.

play00:58

Cloud native applications are unlike traditional, or monolithic applications, that are built

play01:04

out of one huge piece of software; applications that tightly couple the user interface, business-logic

play01:10

layer, and data-layer.

play01:12

Let’s take the example of how a cloud native application might be used on a travel website.

play01:19

Each topic covered by the site—flights, hotels, cars, specials—is its own microservice.

play01:27

Each microservice may roll out new features independent of the other microservices.

play01:33

Specials and discounts can also scale out independently.

play01:37

While the travel site is presented to customers as a whole, each microservice remains independent

play01:43

and can be scaled or updated as needed without affecting other services.

play01:49

Whether creating a new cloud native application or modernizing an existing application, developers

play01:55

adhere to a consistent set of development principles:

play01:59

Follow the microservices architectural approach by breaking applications down to single-function

play02:05

microservices.

play02:06

Rely on containers for maximum flexibility, scalability, and portability.

play02:12

Adopt Agile methods that speed the creation and improvement process through quick iterative

play02:18

updates based on user feedback.

play02:21

In this video, we’ll take a closer look at the key concepts of cloud native, its benefits,

play02:27

and use cases.

play02:28

Hi.

play02:29

I'm Andrea Crawford and I'm with IBM Cloud.

play02:32

Today we're going to talk about cloud native apps.

play02:35

In the heritage world, we have our lumpy, monolithic apps.

play02:41

And in the new world, we have our microservices living on the cloud.

play02:49

If we take a look at this diagram here, we see we have cloud infrastructure.

play02:57

This is your private, your public, and your enterprise infrastructure.

play03:02

Cloud native apps apply to hybrid and multicloud situations.

play03:11

We also have our scheduling and orchestration layer.

play03:14

This layer is all about control planes, like our kubernetes.

play03:22

We also have our application and data services layer.

play03:26

This layer is all about backing services, and being able to integrate our application

play03:31

code with existing services that may be available on other clouds, or even on-premise.

play03:40

We have our application runtimes, these are what we're traditionally, or conventionally,

play03:45

known as middleware.

play03:49

And over here, well, that's where we have our

play03:51

cloud native apps.

play03:53

This is the sweet spot right up here.

play03:56

So our application code is actually designed, built, and delivered very differently for

play04:04

cloud native, than it would be for conventional, monolithic, lumpy apps over here.

play04:11

Let's talk a little bit about why cloud native apps

play04:14

can actually leverage benefits like: enabling innovation,

play04:22

business agility, and most importantly - from a commoditization of this solution stack over

play04:34

here.

play04:36

As time has progressed and technologies have matured and emerged, a lot of the services

play04:43

are actually being refactored lower down in this stack.

play04:48

This means that core services are starting to have a lower center of gravity, freeing

play04:53

up innovation at this level over here.

play04:57

So, what are our use cases for when to build a cloud native app?

play05:03

Everything!

play05:06

Everything that lives in the cloud should have a cloud native app design and approach.

play05:14

This means our application code needs to be instrumented with things like: standardized

play05:20

logging, standardized events, and being able to match those logging and events to a

play05:26

standard catalog, that multiple microservices and cloud native apps can use.

play05:32

The last thing we want to do is have our development squads have to figure out what their log and

play05:38

event messages should be.

play05:39

Let's standardize that, because we want to be able to commoditize that as well.

play05:44

We also need to have things like distributed tracing.

play05:47

When we get over into the microservices world over here, we

play05:52

have a lot of moving parts.

play05:54

This means we're going to need to leverage services core to the system, like: load balancing,

play06:00

service discovery, and routing.

play06:02

These are the kinds of things that are commoditized in this layer here, with

play06:07

things like Istio, and with the emergence of newer projects, like Knative.

play06:15

And so, if we were to recognize the benefits for cloud native apps and to sum it all up,

play06:22

we are all about enterprise and engineering at scale.

play06:28

In the next video we'll take a look at DevOps.

Rate This

5.0 / 5 (0 votes)

Related Tags
Cloud NativeMicroservicesContainersAgile MethodsIBM CloudDevOpsKubernetesScalabilityInnovationOrchestration