Cloud Native
Cloud computing is one of the major technology paradigms right now that’s pretty hard to ignore. Regardless of the company size or industry, people everywhere are talking about it and using it. Some organisations were born in the cloud while others are simply starting their journey, and many are somewhere in between. It’s no secret that cloud provides some really significant advantages, which are heavily documented on the websites of the major providers, namely Amazon Web Services (AWS), Microsoft Azure and Google Cloud Platform (GCP). Each provider is looking to increase their respective market share and tackle new areas of opportunity whether that be in the enterprise, startups or heavily regulated industries that are looking to innovate and move faster like pharmaceuticals or banking. To do this, new services and products are being released by cloud vendors all the time, customers are quite literally spoilt for choice right now. As with almost any technology though, things change rapidly and one size simply doesn’t fit all, cloud is no different in that regard.
With that in mind, I’m always keen to widen my perspective on what’s out there with respect to the world of cloud. As technologists we need to keep abreast of new approaches, tooling and ways of building things, especially in the cloud, and that’s where Cloud Native has provided a lot of value for me. Released in August 2019, the book is still very fresh and addresses a lot of the new innovations currently being offered. The book opens with an examination of what it means for software to be cloud native and how distributed systems are fundamental to it. The Twelve Factor App Manifesto is outlined, and the authors concisely describe the concepts of availability and service level agreements (SLAs) which are essential to understand when considering what cloud services or offerings to implement.
Cloud Native is sparing of jargon in a good way, only the essential detail is provided. The book dives into containers, serverless functions and orchestration software like Kubernetes that are fast becoming the tools of choice regardless of the cloud used. The authors go into depth on some of the key reasons for cloud adoption, namely lift-and-shift and app modernisation. The Designing Cloud Native Applications chapter is particularly good, designing for operational excellence yet factoring in safety and cost is a constant theme. As the authors warn, whilst the cloud environments provided by the major vendors may be more protected than most on-premise environments, securing and controlling those environments needs to be a priority that requires significant domain knowledge and attention. The debate over using functions versus services is also considered which is a key architectural decision for many people designing and building cloud native applications. The benefits and drawbacks of each approach is studied which was really informative especially as it changed my view on a few things.
One point to mention about Cloud Native is that the authors have really made diagrams work for the reader. Visual explanations are only provided when absolutely needed which allows the book to flow really well. This is something that isn’t always the case with technical books of this type. The book closes with chapters on DevOps and best practices which provide fantastic points of reference when thinking about how to select and implement the tools/services needed to build applications in the cloud.
All in all, Cloud Native is one of those rare books that is deeply technical yet quite enjoyable and quick to read, I’ll definitely be referring back to it in the future!
You can find a copy of Cloud Native: Using containers, functions and data to build next-generation applications here.