Book Image

Cloud Native Architectures

By : Tom Laszewski, Kamal Arora, Erik Farr, Piyum Zonooz
Book Image

Cloud Native Architectures

By: Tom Laszewski, Kamal Arora, Erik Farr, Piyum Zonooz

Overview of this book

Cloud computing has proven to be the most revolutionary IT development since virtualization. Cloud native architectures give you the benefit of more flexibility over legacy systems. To harness this, businesses need to refresh their development models and architectures when they find they don’t port to the cloud. Cloud Native Architectures demonstrates three essential components of deploying modern cloud native architectures: organizational transformation, deployment modernization, and cloud native architecture patterns. This book starts with a quick introduction to cloud native architectures that are used as a base to define and explain what cloud native architecture is and is not. You will learn what a cloud adoption framework looks like and develop cloud native architectures using microservices and serverless computing as design principles. You’ll then explore the major pillars of cloud native design including scalability, cost optimization, security, and ways to achieve operational excellence. In the concluding chapters, you will also learn about various public cloud architectures ranging from AWS and Azure to the Google Cloud Platform. By the end of this book, you will have learned the techniques to adopt cloud native architectures that meet your business requirements. You will also understand the future trends and expectations of cloud providers.
Table of Contents (19 chapters)
Title Page
Packt Upsell
Foreword
Contributors
Preface
Index

Foreword

The purpose of this book is to find the intersection between practicality and cloud native. It's an exploration of what's possible, and includes the whys and the hows. This book is the jumping-off point for the next generation of cloud computing, nothing less.

The goal is to turbocharge the power of cloud computing, and have applications be all that they can be on the platform. Everyone related to cloud computing can benefit from this book, including developers, end users, and thus the business as a whole. Remember, it should always be the objective of IT to meet and exceed the needs of the business. This book will help IT make effective plans to meet those goals.

The pros of going to cloud-native features include the following:

  • Performance: You typically access native features of the public cloud services to provide better performance than is possible with non-native features. For example, you can deal with an I/O system that works with auto-scaling and load-balancing features.
  • Efficiency: Cloud-native applications' use of cloud-native features and APIs should provide more efficient use of underlying resources. That translates to better performance and/or lower operating costs.
  • Cost: Applications that are more efficient typically cost less to run. Cloud providers send you a monthly bill based upon the amount of resources consumed, so if you can do more with less, you save on dollars spent.
  • Scalability: Because you write the application to the native cloud interfaces, you also have direct access to the auto-scaling and load-balancing features of the cloud platform.

To take proper advantage of a cloud platform, including IaaS platforms such as AWS, you have to design the applications so that they're decoupled from any specific physical resource. For example, if you access I/O directly from a platform such as Linux, you need to access the cloud's abstraction layer, or their native APIs.

Clouds can provide an abstraction or virtualization layer between the application and the underlying physical (or virtual) resources, whether they're designed for cloud or not. But that's not good enough. If you're going truly cloud native, you need to directly control the native resources.

When this architecture is considered in the design, development, and deployment of an application, the utilization of the underlying cloud resources can be as much as 70 percent more efficient. This cloud computing efficiency equals money. You're paying for the resources you use, so applications that work more efficiently with those resources run faster and generate smaller cloud services bills at the end of the month.

Cloud native is not only about changing the code to follow the features of a specific cloud; it's also about changing your approach to architecture design. These cloud-aligned architectures can auto-scale, and are also distributed, stateless, and loosely coupled, just to name a few features. If you want to make applications truly cloud native, the architecture must be rethought before you begin refactoring the code. 

Does this new approach to application architecture suck resources and money, as well as add a great deal of risk? Yes. However, the risk-reward typically leans to the reward side, if the life of an application is 10 to 15 years (which it is for most enterprises). The effort of both re-architecture and refactoring for an application with long-term use will pay for itself many times over. 

When migrating applications to the cloud, the evidence is compelling for the cloud-native applications path. The benefits outweigh the costs for most applications that are picked to move to the cloud, but given that refactoring costs 30 times that of simple re-hosting, enterprises are reluctant to dive in with both feet.

So, this will be another learning process similar to what users saw when we made applications platform-native, Unix/Linux-native APIs. We had to fail before we succeeded.  Here I suspect we'll follow the same patterns. Meaning, in a few years, cloud native will become the best practice. However, that won't happen until we fall on our faces a few more times. Some things never change. 

So, cloud native that leverages cloud native architectures—is it the way to go? Judging by the fact that you're reading the foreword of this book, I suspect you're already convinced that it is. Reading the rest of the book will only seal the deal. When you deploy your first or second cloud-native architecture, you will have truly seen the light.

David Linthicum

Chief Cloud Strategy Officer, Deloitte Consulting LLP

As I write this, in the summer of 2018, cloud computing has become an accepted part of most corporate and enterprise computing strategies. By hosting applications in the cloud, companies can reduce spend and dependence on non-value-adding costs such as brick and mortar/physical facilities, servers, and networks. It's no wonder that nearly 90 percent of companies are tapping into cloud resources in some way, according to RightScale.

However, using the cloud simply as a cheap outsourced or virtualized data center leaves much of the value of cloud computing on the table. By adopting a cloud-native approach to systems and application architectures, companies can take advantage of the elastic and near-limitless compute, storage, and networking capacity of the modern public cloud, and by doing so, provide much better value to their customers.

What are cloud-native applications? Cloud-native apps, first and foremost, are defined by their ability to scale automatically as load increases and decreases. Today, most companies provision the maximum number of servers in their data centers in anticipation of a heavy load—and then watch as, most days, their CPU utilization remains in the single digits. By leveraging automated scale-out features in the cloud, applications can grow—and shrink—as needed without human intervention. If you need capacity, it's available; if you don't, that capacity is returned, and you are not charged for it.

A cloud-native application is also resilient in the face of errors or failures. If, for some reason, a piece of hardware, such as a server or a router, fails, or if a database experiences a catastrophic error, a cloud-native application should detect the error and heal itself, perhaps by creating a new instance of itself on another rack or even in another cloud data center in another region.

Cloud-native computing accelerates both IT and the business it serves, allowing IT to adopt Agile and DevOps-based development approaches faster and with less effort. This enables them to deploy new code more frequently—perhaps many times a day—and use automated testing pipelines for greater reliability. They can experiment with cloud capabilities such as machine learning and advanced analytics without having to make expensive procurement decisions. And, because of the acceleration in IT, businesses can provide better, faster responses to their customers, reach new customers through the cloud's global reach, and perhaps even change their core business models.

There are many new technologies—containers, API gateways, event managers, serverless—that, if properly implemented, can give you the benefits of cloud-native computing as envisioned. However, the shift to cloud native implies not only technological changes but also organizational and cultural changes: moving from a waterfall development model to Agile and lean approaches, implementing a continuous integration/continuous delivery automation, and building a culture of experimentation can help shift to a cloud-native mindset.

The rewards of adopting cloud-native methodologies and architectures include improved IT capability and, more importantly, potentially exponential new innovative opportunities for your business. These benefits make cloud-native computing imperative and a leading driver of modern cloud adoption.

I highly recommend you read Cloud Native Architectures. In it, you'll find recipes for creating applications that use the cloud as intended, opening a new world of intelligent innovative solutions.

Miha Kralj

Managing Director, Cloud Native Architecture, Accenture LLP