Building Scalable Infrastructure with Cloud Native Tools

John Olafenwa
Dev Planet
Published in
4 min readAug 13, 2019

Have you ever wondered how big organizations like Microsoft, Google, Amazon, Facebook etc, serve billions of requests daily across a wide range of highly heterogeneous services, without any significant downtime? Everyday, Google servers have to deliver results to over 3.5 billion search requests and Twitter servers deliver over 500 million tweets every day on average (source: https://www.internetlivestats.com)

To achieve this, requests are routed and processed across clusters of servers in data centers spread around the globe. Managing software infrastructure across so many server clusters is no easy task and has necessitated a radical shift in the way we build, manage and deploy cloud applications.

Clusters of servers in data centers like this processing requests at massive scale. Image Source: https://www.datacenterknowledge.com/cloud/next-gen-power-solutions-hyperscale-data-centers

To address the challenges of developing and deploying highly scalable services, a number of tools have emerged in the past decade, built by the best minds from the top software giants and made open source for every developer to use. Notable among these are docker, terraform, kubernetes and its associated tools such as helm, istio, prometheus, envoy etc.

This publication, is established to guide developers, both new and highly experienced ones to adopt and apply modern DevOps practises including cloud native computing, code versioning with git, continuous integration and continuous delivery, infrastructure as code tools as well as microservices. To this end, we shall be publishing several tutorial series, open source repositories and books on DevOps tools and programming practices.

Credits: John Olafenwa

In the traditional software development world, inspired by practices in the early days of the web, building cloud applications entails writing your entire application in one single stack such as Java, .NET, PHP, NodeJS, Python etc. After which your app is deployed to a single server with a VM that is often tailored to your specific stack. Scaling such applications simply means buying a more powerful server, this is called, vertical scaling. A large number of developers still build this way. This approach has a number of disadvantages; first you are limited by the functionalities in a single stack, second is that it is not very scalable. As your site grows, you will need clusters of servers, at which point horizontal scaling is the only way to go.

In the modern cloud native world, cloud applications are not a single code base built with one stack, rather, every application is built and deployed as a suite of microservices, each of which can be built with a separate stack that is suitable for its functionalities. This brings about clear separation of concerns and enables easy distribution of components across cluster of servers. To serve users, requests are efficiently distributed across these servers, and the microservices communicate over protocols such as REST or gRPC to perform tasks and return responses to the user.

Source: https://docs.oracle.com/en/solutions/learn-architect-microservice/index.html#GUID-BDCEFE30-C883-45D5-B2E6-325C241388A5

Learning to build applications this way is an exciting ride and a rewarding experience that will transform you into a world class developer with all of the required knowledge to work and build in modern software organizations.

Even as a small team, you would benefit immensely from the automation offered by the use of cloud native tools, freeing you from costly human errors, enabling infrastructure versioning and rollbacks and reducing down times due to server faults. Overall, irrespective of the scale you are building for, the core tools and concepts we shall be treating in this publication would enhance your productivity and help you achieve your goals faster.

I am John Ishola Olafenwa, a software engineer and AI researcher with years of experience in building developer tools and libraries. I will be personally taking you on a ride and you can always reach to me personally through my email and on twitter. Cheers to a wonderful ride to the cloud native universe.

twitter: @johnolafenwa

email: johnolafenwa@gmail.com

--

--