Best Handpicked Resources To Learn Software Architecture & 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: The resources stated in this article contain affiliate links. That means if you find the resources helpful & worthy of spending your money on & you buy a subscription or a single or a few courses or a book. I get a small cut without you paying anything extra.
I present these resources before you because I think the content, they offer is pretty good & these will assist you big time in developing a solid foundation in software architecture and system design.
Online Courses On Software Architecture
Educative.io is a platform that helps software developers level up on in-demand technologies & prepare for their interviews via interactive text-based courses with embedded coding environments.
It offers a scalability & system design learning track for software engineers to help them develop large scale system design skills by having an understanding of what technology and architecture fits best for a certain use case.
Learners get to understand the trade-offs involved when picking different architectures and technologies to design and build their systems. They will have an understanding of how to develop large scale services like Facebook, Twitter, YouTube, Uber, Instagram & more.
- Web Application & Software Architecture 101
- An Introduction To Microservices Principles & Concepts
- Microservices Architecture – A Practical Implementation
- Grokking The System Design Interview
Let’s have a look at what these courses have to offer:
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 also 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.
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.
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.
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.
All the courses on Educative have a no questions asked 30 day return policy.
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.
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.
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 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 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 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 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.
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.
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 software architecture.
To stay notified of new developments you can bookmark this page also can subscribe to the email list.
I am Shivang. You can read more about me here.
More On The Blog
- 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 & System Design
- Platforms & Resources Worth Checking Out That Give You A Push Ahead In Your Software Career
- YouTube Architecture – How Does It Serve High-Quality Videos With Low Latency