Best Handpicked Resources To Learn Software Architecture, Distributed Systems & System Design
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 & 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 & 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 Educative
Educative.io is a platform that helps developers level up on in-demand technologies & prepare for their interviews via interactive text-based courses with embedded coding environments right in their browser. They have over 380,000 learners on their platform & are also a part of the GitHub education pack.
If you are looking to buy a subscription on the platform here is the discount coupon code – APAUG0820-Z583 – this code is case sensitive. Copy and paste the code when buying the subscription; will work only for the first 150 redemptions.
Scalability & System Design Learning Track On Educative
Scalability & system design learning track consists of 5 courses that help developers refine their software architecture & large scale system design skills by having a comprehensive insight into the domain.
Let’s dig deep into what these courses are & what they have to offer:
- Web Application & Software Architecture 101
- An Introduction to Microservices Principles & Concepts
- Microservices Architecture – A Practical Implementation
- The Good Parts of AWS – Cutting through the Clutter
- Grokking The System Design Interview
Web Application & Software Architecture 101
This course gives you a right from the basics, insight into web architecture. That is a step by step walkthrough through different components and concepts involved when designing the architecture of a web application, right from the user interface, to the backend, including the message queues, databases, streaming media, picking the right technology stack & much more. The course contains a lot of illustrations to help you grasp the concepts better.
In this course, you’ll go through the techniques of picking the right architecture and the technology stack to implement your use case. It will walk you through different use cases which will help you gain an insight into what technology & architecture fits best for a certain use case when writing a web application. You’ll come to understand the technology trade-offs involved.
If you are a beginner just starting your career in software development, this course will help you a lot. Designing software is like fitting the lego blocks together. With this course, you’ll develop an insight into how to fit them together and build cool stuff. It will also help you with the software engineering interviews, especially for the full stack developer positions.
By the end of the course, you’ll have a comprehensive insight into the web application architecture. You’ll be all set on the path to designing applications from the bare bones. If you have a startup idea & 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.
This course is written by me, you can read more about the course here.
If you are looking to buy just this course, you can buy it here to get lifetime access.
An Introduction To Microservices Principles & Concepts
Microservices architecture is being used by most of the large-scale services running today be it Netflix, Spotify, Amazon, Uber or any other. This course helps you learn microservices in depth & understand the trade-offs involved when picking the microservice architecture for your use case.
You’ll learn Micro & Macro architecture, strategies for transforming legacy systems to modern architecture & the technologies involved that enable you to achieve so. You can consider this course as the part 1 of the two microservices courses in the learning track.
After you understand the fundamentals of microservices you can move to the next course that is the practical implementation of the microservice architecture.
Microservice Architecture – Practical Implementation
This course focuses on the low-level details of a real-world microservice architecture implementation. You understand the tech stacks that can be leveraged to implement a microservice & the trade-offs involved when picking a particular tech stack.
These technologies include Frontend Integration with Edge Side Includes (ESI), asynchronous microservices with Kafka and REST feeds, synchronous microservices with the Netflix stack and Consul, Docker, Kubernetes, Cloud Foundry. Every use case comes along with implementation code. By the end of this course, you’ll be a pro in designing microservices. Whether you’re a software engineer or an engineering manager, this course will certainly prove useful to you.
The Good Parts of AWS – Cutting through the Clutter
This is not a typical AWS reference course. You won’t find most of the knowledge that’s shared here in the AWS docs. The goal here is to help you realize which AWS features you’d be foolish not to use — features that have passed the test of time by being at the backbone of most things on the Internet – written by a former Amazon engineer with 15 years of experience working on AWS.
In this course, you’ll learn a technique used to help make reliable technical choices without getting paralyzed in the face of so many options. You’ll start by going through the most fundamental services AWS offers such as DynamoDB, S3, EC2. Each section breaks down how it’s used, the pros and cons, why you should (or shouldn’t) be using it, and more.
Grokking The System Design Interview
This course helps you prepare for your system design interview rounds. It deals with designing large scale services the way companies expect you to design large scale services like Twitter, Uber, Facebook. Instagram, Dropbox and a lot more. Collectively there are 15 case studies discussed in the course.
The course is developed by hiring managers who’ve been working at Google, Facebook, Microsoft and Amazon. The case studies that the course contains have been repeatedly asked at the top companies.
You can choose to buy the courses individually or you can buy the entire learning track by clicking here.
Besides this learning track, here are a few more top-notch courses on the same platform:
Grokking AI for Engineering & Product Managers
We’ve reached a point in time where AI has become an integral component of our online services. Gone are the days where AI was just for video games & research projects; And in order to stay relevant, it has become essential to have a solid, broad understanding of the domain. While you may not be implementing the solution, you need to speak the language of AI. Whether you’re leading a team on creating AI solutions, or you just want a better understanding of AI, this course is for you.
This unique AI course deconstructs the concepts most relevant for you; you will start by learning the basics of it, its connection with machine learning, and the different types of algorithms you should be familiar with. You’ll then learn the rules, best practices, and infrastructure for creating great AI products that users trust. After that, you will go through some real case studies of AI applications and will have a deep dive into Ethical AI. You’ll end by getting an outlook into the current status and the future of AI.
In a nutshell, this course is your no-fuss, comprehensive guide to the essentials of AI.
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.
Database Design Fundamentals
Database design skill comes in really handy when you are designing the database for your own startup or when asked to design a database for a service during your system design interview round.
Database design fundamentals is a beginner level course that educates you on the fundamental concepts of databases, why and when they’re used, what are relational databases & entity-relationship diagrams & so on. You’ll understand techniques like normalization that help notch up the efficiency of databases. When done with this course you’ll easily take on more advanced courses in databases and SQL.
Cloud Computing 101 – Master the Fundamentals
This course helps you understand the physical infrastructure on which our apps are deployed. You’ll gain an insight into how clusters work, how multiple server nodes running in a cluster communicate with each other to scale our workload and the data in real-time, how cloud deploys our workload in different regions across the globe, the infrastructure stack on which our apps are deployed, code deployment workflow & much more!
This is a 101 on cloud computing. It takes you through the fundamentals of the cloud covering all the important aspects that are applicable when we develop & 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.
Zero to Software Architect Learning Track 🙂
Zero to Software/Application Architect learning track is a series of four courses that I am writing with an aim to educate you, step by step, on the domain of software architecture & distributed system design. The learning track takes you right from having no knowledge in it to making you a pro in designing large scale distributed systems like YouTube, Netflix, Google Stadia & so on. Check it out.
Now let’s move on to books…
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 with your folks. You can follow 8bitmen on social media to stay notified of the new content published –
I am Shivang, here is my LinkedIn profile in case you want to say Hello!
More On The Blog
- Distributed Systems, Scalability & System Design #1 – Heroku Client Rate Throttling
- Zero to Software/Application Architect – Learning Track
- Java Full Stack Developer – The Complete Roadmap – Part 2 – Let’s Talk
- Java Full Stack Developer – The Complete Roadmap – Part 1 – Let’s Talk
- Best Handpicked Resources To Learn Software Architecture, Distributed Systems & System Design