In this article, I’ve put together a list of resources (online courses + books) that I believe are super helpful in building a solid foundation in software architecture and designing large-scale distributed systems like Facebook, YouTube, Gmail, Uber & so on.  

I’ll start with the online courses and then will move on to talk about the books.

Affiliate Disclaimer: A few of the resources stated in this article contain affiliate links. That means if you find these resources helpful, worthy of spending your money on and you buy a subscription, a course or a book; I get a small cut without you paying anything extra.

I recommend these resources to you because I think the content they offer is pretty good & these will assist you big time in upskilling yourself enabling you to soar in your career.

Online Courses On Software Architecture

Courses on with Lifetime Access

Web Application and Software Architecture 101

This course is a 101 on web application architecture written by me. It walks you step by step through different concepts and components concepts involved in designing the architecture of a web application. We’ll learn about various architectural styles such as the client-server, peer to peer decentralized architecture, microservices, the fundamentals of data flow in a web application, different layers that are involved, concepts like scalability, high availability and much more.

Along with the concepts I also discuss real world implementations of some large scale services.

In this course, I go through the techniques of picking the right architecture and the technology stack to implement our use case. I walk you through different use cases which will help you gain an insight into what technology and architecture fits best for a certain use case when writing a web application. You’ll come to understand the technology trade-offs involved.

By the end of the course, you’ll have a comprehensive insight into the web application architecture. If you have a startup idea and you are asking yourself, how do I implement my app? What technologies do I use? Where do I start? This course will help you kickstart your entrepreneurial journey.

Here is a 15% discount coupon code only for the next 250 purchases: 15_OFF_WEB_101

Check out the course here.

Cloud Computing 101 – Master the Fundamentals

This course takes you through the fundamentals of the cloud covering all the important aspects that are applicable when we develop and deploy our application on a cloud platform.

This course is platform-agnostic & the concepts discussed apply to all the cloud platforms be it AWS, Google Cloud, Azure, IBM Cloud, Netlify & so on. Once you are done with this course, you’ll have a thorough understanding of the basic concepts of the cloud.

After having spent a decade in the industry writing code, I strongly believe that every software engineer should have knowledge of cloud computing. It’s the present and the future of application development and deployment.

Be it on-premises or on a public cloud, every business prefers to run its service on cloud infrastructure due to multiple technical and economic reasons that we will discuss in detail in this course. There is an ever-rising demand for cloud experts and having the knowledge of cloud computing gives you an edge over other engineers.

You will understand the physical infrastructure on which our apps are deployed.

cloud computing stack

You’ll gain insight into how clusters work, how multiple server nodes running in a cluster communicate with each other to scale our workload and data in real-time, code deployment workflow and much more.

Check out the course here.

Courses On

Distributed Systems for Practitioners

This course discusses the fundamentals of distributed systems covering the basic algorithms and protocols of distributed systems through easy-to-follow examples and diagrams that illustrate the thinking behind some design decisions.

To take this course, you don’t need any prior knowledge of the concepts and algorithms for distributed systems.

Check it out on

Grokking the Advanced System Design Interview

This is another course that takes a deep dive into distributed systems presenting the architectural review of famous distributed systems. The main goal of this course is to extract out important design details that are relevant to system design interviews. The course also presents a list of system design patterns that constitute the common design problems and their solutions that different distributed systems have developed over time.

Check it out on

Grokking the Machine Learning System Design Interview

System design is an important component of any ML interview. Being able to efficiently solve open-ended machine learning problems is a key skill that can set you apart from other engineers and increase the level of seniority at which you’re hired. This course helps you build that skill, and goes over some of the most popularly asked interview problems at big tech companies.

In this course you walk step-by-step through solving these problems, focusing in particular on how to design machine learning systems rather than just answering trivia-style questions. Once you’re done with the course, you’ll be able to not just ace the machine learning interview at any tech company, but impress them with your ability to think about systems at a high level. If you have a machine learning or system design interview coming up, you’ll find the course tremendously valuable.

Click here to view the course on Educative.

Books On Software Architecture

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

Designing data-intensive applications by Martin Kleppmann is one of the best sellers in the domain of designing large scale applications. This book helps you understand the pros & cons of picking different technologies for processing and storing data in your application. It discusses the fundamentals of data processing also takes a deep dive into concepts like scalability, high availability, consistency, reliability, different kinds of databases, distributed systems and more.

If you work on the backend, deal with databases to store data when developing mobile apps, web apps & so on. If you want to understand how to make data systems scalable, this book will help you big time in developing a good foundation in large scale system design.

Click here to view this book on Amazon

The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise

The Art of scalability is written by industry scalable consultants that educates you on how to scale products and services for different requirements. The authors discuss case studies from their consulting practice. It also gives the readers insights into through cloud transitions, NoSQL, DevOps, business metrics, measuring availability, capacity, load & performance and more. The insights and the recommendations of the authors reflect more than thirty years of experience at companies from eBay to Visa & Salesforce to Apple.

Click here to buy the book on Amazon.

Web Scalability For Startup Engineers

This book discusses core concepts and best practices of developing scalable applications in a startup environment. It describes how infrastructure and software architecture blend together when building scalable systems. The book also contains diagrams and real-world examples to help understand the concepts better.

Readers of this book will learn the key principles of software design for scalable systems, concurrency and throughput, designing APIs, implementing caching, how to leverage asynchronous processing, messaging, event-driven architecture and more.

Click here to buy the book on Amazon.

Streaming Systems: The What, Where, When, and How of Large-Scale Data Processing

Streaming of data, both in real-time and batches, is a key component in modern web applications. This book helps the readers understand the underlying architecture and fundamentals of streaming systems, right from the introductory level of how data processing streams function. This is a practical guide with real-world examples for software developers, data engineers, data scientists on how to work with streaming data in a conceptual and platform-agnostic way.

Click here to buy the book on Amazon.

Architecting Modern Data Platforms: A Guide to Enterprise Hadoop at Scale

Architecting modern data platforms contains in-depth information on big data technologies. It takes a practical approach in educating the reader on how to build big data infrastructure both on-premises or in the cloud.

It walks you through different component layers in a modern data platform also on concepts & techniques like high availability, disaster recovery, deployment, operations, security and more.

Click here to buy the book on Amazon.

Database Internals: A Deep Dive Into How Distributed Data Systems Work

Database internals as the title says takes a deep dive into how distributed data systems work. This book is a practical guide on the concepts behind modern databases and the internals of their storage engines. You’ll understand how storage is organized and how the data is distributed across the system.

The book talks about storage engines explaining concepts like storage classification, B-Tree based & immutable log-structured storage engines with their respective use cases. How database files are organized to build efficient storage using data structures such as Page Cache, Buffer Pool & Write-ahead Log. You’ll learn how nodes and processes work in conjunction with each other in distributed systems, how data consistency models work and so on.

Click here to buy the book on Amazon.

Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services

Designing distributed systems discusses patterns used in the development of reliable distributed systems. The author who is the director of engineering at Microsoft Azure explains how we can adapt existing software design patterns for designing and building reliable distributed applications. System engineers and application developers will learn how they can improve the quality of their system using the patterns discussed in the book.

The book also touches upon the distributed system patterns for large scale batch data processing involving work queues, event based processing and co-ordinated workflows.

Click here to buy the book on Amazon.

Building Microservices: Designing Fine-Grained Systems

This book educates the reader on the techniques of modeling, integrating, testing, deploying and monitoring a microservice. All the concepts are discussed with the help of an example of a fictional company.

The book discusses key concepts & challenges involved in scaling the microservices architecture, managing security with the user to service and service to service models, dealing with complexities of testing and monitoring distributed services, deploying microservices through continuous integration, splitting monolithic codebases into microservices and more.

Click here to buy the book on Amazon.

Microservice Architecture

Microservice Architecture discusses the right way to approach the microservices architecture speaking of the principles, technologies and the methodologies involved in building microservices from the ground up. The book also discusses the experiences of large scale services that have adopted microservices architecture.

The book is split in three parts that discusses –

How microservices work & what it means to build a system using the microservices architecture.

A design-based approach for implementing the microservices architecture.

Best practices on how to handle the challenges of introducing the microservices architecture in your organization.

Click here to buy the book on Amazon.

Site Reliability Engineering – How Google Runs Production Systems

The site reliability engineering book discusses the entire application deployment lifecycle that includes building, deploying, monitoring and maintaining the services at Google. Readers will learn the principles and practices that enable Google engineers to make their services more scalable, reliable and efficient.

The book is split into four parts – where the first part gives an introduction to SRE site reliability engineering and how it differs from the traditional IT practices. The other two parts talk about the patterns, behaviour involved in the day to day work of an SRE engineer when building and operating large scale distributed computing systems. The last part touches upon Google’s best practices for running their infrastructure.

Click here to buy the book on Amazon

This list of software engineering resources will be continually updated as I find new quality resources on the domain.

To stay notified of new developments subscribe to my email newsletter –

If you liked the article, share it on the web. You can follow on social media, links below, to stay notified of the new content published. I am Shivang, you can read about me here!