1. Cloud native applications

1.1 What is a cloud native application

The traditional software development process is waterfall, with long development cycles and the need to go through the development process again if there are any changes. In today’s business and battlefield world, a delayed release of software may be obsolete in the marketplace by the time it is released; Competitors are likely to gain customers and market share by being too quick with new software releases. Cloud native apps are much more focused on speed to market than traditional apps. Cloud native applications are a collection of independent, small scale, loosely coupled services designed to make full use of the cloud computing model to improve the speed of application release, application flexibility, application code quality, and reduce application deployment risks. Despite the inclusion of “cloud native” in the name, the focus of cloud native is not where applications are deployed, but how they are built, deployed, and managed. From Table 1-1, we can clearly see the differences between Izumo native apps and traditional apps.

1.2 Four principles of cloud native application development and deployment

Cloud native applications are built and run to take full advantage of the four principles of the cloud computing model.

  • Service-based architecture: Service-based architectures, such as micro-services, advocate building loosely coupled, modular services. Loosely coupled service-based design can help enterprises create applications faster and less complex.
  • API-based communication: That is, services are called to each other via lightweight APIs. With an API-driven approach, enterprises can create new business functions internally and externally through the provided APIs, greatly increasing business flexibility. In addition, the API-based design avoids the risks of direct linking, a shared memory model, or direct reading of the data store when invoking the service.
  • Container-based infrastructure: Cloud native applications rely on containers to build a common operating model across technology environments and achieve true application portability across different environments and infrastructures, including public, private, and hybrid clouds. In addition, the container platform helps enable resilient scaling of cloud native applications.
  • DevOps Process Based: With cloud-native solutions, the enterprise uses an agile approach to develop applications based on continuous delivery and DevOps principles. These methods and principles require the development, quality assurance, security, IT operations and other teams involved in the delivery process to build and deliver applications in a collaborative manner. After looking at the four principles of cloud native application development and deployment, let’s look at how to build a cloud native application.

II. The steps of building cloud native applications

The path to building a cloud native application is divided into six steps.

Step 1: Develop the DevOps culture and practice.

To complete the path to building cloud-based native applications, development and IT operations teams must make multiple changes to build and deploy applications more quickly and efficiently. Customers in all industries need to think through activities, technologies, teams, and processes, because all of these elements come together to achieve a DevOps culture.

Therefore, to take advantage of new technologies, adopt faster solutions, and achieve closer collaboration, organizations must organize and plan around the principles and cultural values of DevOps. With Red Hat’s OpenShift, companies can implement DevOps and further DevSecOps technologies.

Step 2: Speed up existing monolithic applications with a lightweight application server.

Companies can’t just focus on creating new applications when embarks on the journey to cloud native applications. Many traditional apps are the key to a successful and profitable business and cannot simply be replaced. Companies need to integrate these applications with new cloud-based native applications. But how can you speed up an existing monolithic application?

The right approach is to move the existing monolithic architecture to a more modular, service-based architecture and adopt API-based communication to implement a fast monolithic solution. Before embarking on the difficult task of refactoring monolithic applications into micro-services, organizations should first lay a solid foundation for their monolithic architecture. While monolithic applications are not agile enough, they are criticized mainly because of the way they are built. Fast-running monolithic applications can realize many of the agility benefits of microservices without the associated complexity and cost.

By evaluating fast monolithic solutions, we can ensure that applications are built with strict design principles and domain boundaries defined correctly. In this way, enterprises can make the transition to a microservice architecture in a more gradual and less risky manner when needed. The transformation of rapid monolithic applications in this way can lay a solid foundation for a good microservice architecture.

With Red Hat OpenShift and the lightweight Red Hat JBoss EAP application server, we can speed up existing monolithic applications by migrating traditional monolithic applications to containers. As OpenShift hosts more and more monolithic applications, there is a problem with traditional ESB distribution, which is distributed integration.

Step 3: Accelerate application development with PaaS platforms and DevOps.

Reusability has always been the key to accelerating software development, and cloud native applications are no exception. However, the reusable components of the cloud native application must be optimized and integrated into the container PaaS platform and DevOps. For example, the CI/CD development pipeline, rolling upgrades and blue/green deployments provided by PaaS, automatic scalability, fault tolerance, etc., can greatly improve the development speed of cloud native applications.

Step 4: Select the right application development framework.

With the rise of emerging technologies such as Internet of Things (IoT), machine learning, artificial intelligence (AI), data mining, image recognition, and autonomous driving, more and more application development frameworks emerge as The Times demand, as shown in Figure 1-1. The language or framework needs to be chosen according to the specific business application needs, so different cloud native applications will adopt different application development frameworks. This requires the Container PaaS platform to support multiple application development frameworks. Red Hat OpenShift supports a variety of application development frameworks.

Step 5: Automate IT and accelerate application delivery with repeatable processes, rules, and frameworks.

Accelerating the delivery of cloud-based native applications by automating IT processes and avoiding manual IT tasks is a key focus. IT automation management tools create repeatable processes, rules, and frameworks to replace or reduce labor-intensive labor that can be delayed to market. These tools can be further extended to specific technologies (such as containers), methods (such as DevOps), and broader domains (such as cloud computing, security, testing, monitoring, and alerts). Automation is therefore key to IT optimization and digital transformation, reducing the total time required to realize value.

Step 6: Drive change to a more modular architecture.

In a microservice development architecture, applications are broken down into the smallest components and are independent of each other. This software development scheme emphasizes high precision and light weight, and strives to share similar processes in multiple applications. Although a microservice architecture does not require the use of a specific underlying infrastructure, a container-based platform makes it easier for microservices to be implemented.

With the microservices architecture, enterprises can perform production deployments multiple times a day. From an architectural point of view, microservices need to split each service into its own deployment unit. Users can then manage and deploy each microservice individually, and different teams may be responsible for the life cycle of each microservice. However, implementing a microservice architecture requires a certain amount of investment and skill. When an enterprise introduces a microservice, it can adopt the Monolith First approach, which is to build a monolithic application First.

The goal is to fully understand the domain your application belongs to, and then better identify the limited contexts it contains as candidates for transforming into microservices. This helps avoid technical debt, such as the repair cost of building a set of microservices without knowing the application’s domain and limited context. An enterprise-level PaaS platform (such as OpenShift) that supports different frameworks, languages, and cloud-based native application development solutions is key to the success of cloud-based native applications.

In addition, after using micro-services, we should also consider the security of cloud native applications, such as authentication authorization, single sign-on, flow control and so on. With the popularity of micro-services and the increasing complexity of business systems, we also need to consider API governance and distributed integration of business systems.

Content source: Mesozoic technology

For more information on building cloud native apps based on OpenShift, I recommend reading Cloud Native App Building: Based on OpenShift.

Author: Wei Xinyu, Senior Solution Architect at Red Hat. He has rich experience in IaaS and PaaS, and is committed to the promotion and application of open source solutions in enterprises. From the perspective of pre-sales, I led several projects of Red Hat in PaaS of finance and automobile industry.

Previously worked at Huawei, IBM, VMware, and worked in the fields of hardware, AIX/Linux, virtualization, PaaS, DevOps, micro-services, etc.

Co-author of bestselling “OpenShift Practics PaaS DevOps Microservices in the Enterprise” and “Cloud Native Application Building: Based on OpenShift”. Red Hat RHCA Level 5 certification, RHCE certification, and ITIL V3, COBIT5, TOGAF, C-STAR/TOGAF (Certification Level) certification. Through the “David-Share” WeChat public account, I have shared a lot of project practice experience.

Disclaimer: The article was forwarded on IDCF public account (devopshub) with the authorization of the author. Quality content to share with the technical partners of the Sifou platform, if the original author has other considerations, please contact Xiaobian to delete, thanks.

Every Thursday in May at 8 p.m., quality and testing special. Public message “quality” can obtain the address, reply “playback” can obtain the playback video address

  • 0506 Zhu Shaomin “How to Maximize Software Testing Efficiency”
  • 0513 Chen Qi “Data Driven Test”
  • Chen Ji “yes, to QA is the most effective way to improve quality!”
  • Shi Huibin “Continuous Testing of DevOps Practice”