Dominant Designs in Software Engineering: Cloud Native Design Patterns

  • Cloud Native Infrastructure, Justin Garrison and Kris Nova

What is Cloud Native?

In essence, when we talk of software, infrastructures, and processes as cloud-native, we mean that it’s all based on a cloud. But cloud-native isn’t one thing — it’s a combination of things. Most people refer to cloud-native applications when they speak of cloud-native but there are other things as well (that we’ll discuss next).

Cloud-Native Infrastructure and Applications

Cloud-native infrastructure is the hardware and software upon which your entire cloud-native ecosystem is built upon. Traditionally, companies needed to build their infrastructure from scratch, investing in data centers, operating systems, and more. However, in recent times and with the popularity of cloud computing, we’ve shifted from hardware-as-a-service to infrastructure-as-a-service. In the latter, companies can buy/rent raw networking, storage, and compute from cloud service providers and vendors (like AWS). These vendors also bundle additional services like identity and access management (IAM), provisioning, and inventory systems — all of which help create a self-sustained ecosystem.

  • Resiliency
  • Agility
  • Operability
  • Observability

Benefits of Adopting a Cloud-Native Infrastructure

The fact that some of the biggest tech companies (and now non-tech giants) have adopted a cloud-native infrastructure for their operations should be a good indicator of the numerous benefits it has to offer. So before I start discussing some of the cloud-native design patterns currently in use, I want to talk about the benefits of adopting a cloud-native infrastructure and if it’s actually worth it.

Creating Value Faster

One of the key issues faced by tech companies is the time taken to produce apps, updates, and patches. Most companies have a few (or a single) teams of developers, working on different functions, with limited communications with the operations team that have a reactive approach to bugs and failures (instead of a proactive one). Not to mention the severe lack of automation. All in all, it’s a very inefficient way of developing software.

Building What is Needed

Spending time, money, and other resources on tasks that don’t generate revenues or lead to any value creation is not a great way of doing business. However, this is exactly what most companies with a Hardware-as-a-service approach are doing. For instance, they pay large sums for local services and a team of engineers to maintain their private servers — paying for the entire ecosystem when it’s not being used — quite wasteful.

Achieving New Levels of Efficiency

One of the major hurdles faced by “elite” performers in DevOps and “worst” performers was that the former used cloud computing while the latter didn’t have access to public cloud. Companies on the public cloud had fewer things to worry about, access to more tools and services, and saved more money — a combination of all of these benefits meant that some companies perform exponentially better than others. In fact, microservices, DevOps, serverless — all of these technologies are founded on scalability, cost-effectiveness, and efficiency.

Cloud-Native Design Patterns

Microservices are part of the foundation of a cloud-native ecosystem and loosely-coupled services are crucial in scalable and efficient software development. However, it’s possible for a microservices architecture to become very similar to a monolith by either coupling services too tightly or too early. And when this happens, all the benefits of a microservices architecture vanish and the limitations of a monolith architecture begin to appear. To avoid this situation, developers follow a number of patterns, called cloud-native design patterns.

  • Availability
  • Data Management
  • Design and Implementation
  • Messaging
  • Management and Monitoring
  • Performance and Scalability
  • Resiliency
  • Security
  1. Event-driven

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Azmat

Azmat

seasoned technologist with experience in software architecture, product engineering, strategy, commodities trading, and other geeky tech.