What Modern Cloud-Native Apps are Made Of

What is a modern application? A modern application is a real-time, SaaS-based software application that creates an engaging customer experience. A modern, cloud-native application provides instantaneous access and seamless collaboration and has a highly responsive user interface. A modern application presents a cohesive experience that works whether you are accessing the application from your desktop computer, your laptop or from your smartphone.

Modern applications are continuously being improved. They are created using modern product management techniques that ceaselessly strive for a better and better user experience. 

Modern cloud-native applications are always available, anytime and anywhere a user wants to engage with them. They never go offline, they provide continuous availability and they automatically scale to meet the needs of all customers, all the time.

This is the ideal scenario. But before you start thinking that it’s just a pipe dream, remember: With the right architecture, the right infrastructure and the right operational environment, this ideal modern application scenario is achievable.

How do you design, architect, build and operate an application that meets this ideal? Here are my top eight requirements for building a modern, cloud-native digital application today.

1. Use a Service/Microservice Architecture

Modern applications are large and complex. Building them as a monolith makes them difficult to maintain, difficult to expand and difficult to scale. Service and microservice architectures create an application that is supportable, allowing your development organization to scale to support larger, more complex applications. But be careful—determining the ideal size for your services is not a simple task. Make your services too big, and you are essentially operating multiple monoliths. Make your services too small, and you move your complexity out of your code and into your infrastructure, service interconnections and networking.

2. Use Containers

Containers allow you to isolate your application code from the operational infrastructure your application runs on. This allows you to quickly adapt your infrastructure as needed, increasing your operational flexibility.

Beyond containers, using a container orchestration system such as Kubernetes allows you to make your applications adaptive and scalable without requiring extensive infrastructure support.

3. Use the Public Cloud

The public cloud allows you to build dynamic, adjustable applications that meet the scaling requirements of the most demanding modern applications. Additionally, public clouds give you access to the resources you require to perform complex computations, including machine learning and artificial intelligence, which are used more and more in modern applications.

4. Use Agile and DevOps Principles

Agile development techniques and DevOps operating principles—including continuous deployment pipelines—allow you to innovate and experiment, increasing the value you provide to your customers.

5. Implement Service Tiers

Service tiers are an operational concept that defines the criticality of individual services in your application. This allows you to assign appropriate operational processes to each service that match the importance of the service to your operational goals. For instance, highly critical Tier 1 services can be given one set of operational guidance while less-critical Tier 4 services can be given much more lenient operational guidance. Additionally, service-to-service interactions can be built and designed using the difference in tier levels between the services to guide how the interactions are created. Service tiers allow operational processes and availability planning to be managed appropriately based on the priority of the service.

6. Monitor Your Performance     

Application and infrastructure monitoring are essential for knowing how an application is performing. Operating a modern application requires constantly monitoring key attributes to make sure it’s performing as expected. Alerts provide early notification of performance and resource issues. Ongoing monitoring is required for maintaining high availability, quickly identifying when a problem is occurring and rapidly understanding the root cause of an issue.

7.  Constantly Experiment and Improve

The days when product requirements could be created in a vacuum in advance are over. Instead, new capabilities are added incrementally. Developers run experiments to validate ideas, and only the best ideas are kept. Incremental improvement keeps a modern application modern.

8. Implement a STOSA Organization

Single team-oriented service architecture, or STOSA, is an organizational framework that facilitates the building and operating of modern applications. Characterized by end-to-end ownership of individual services by small, self-contained development teams, STOSA-based organizations use self-accountability to drive application quality and performance.

Modern, Cloud-Native Applications: Beating Your Competition

Instituting these eight requirements into your application development and operation processes, and embracing these characteristics through your organization’s actions, will go a long way toward helping you modernize your applications. Modern application development and operational processes keep your organization competitive and growing to meet the needs of your current—and future—customers.

Lee Atchison

Lee Atchison is an author and recognized thought leader in cloud computing and application modernization with more than three decades of experience, working at modern application organizations such as Amazon, AWS, and New Relic. Lee is widely quoted in many publications and has been a featured speaker across the globe. Lee’s most recent book is Architecting for Scale (O’Reilly Media). https://leeatchison.com

Lee Atchison has 59 posts and counting. See all posts by Lee Atchison