If you are looking for a course on software architecture that’ll help you get a grip on the domain. Let me tell you about the Zero to Mastering Software Architecture learning track that I’ve authored, consisting of three courses that helps you learn the domain starting from having zero knowledge of it to being a master of the software architecture fundamentals.

It is aimed at helping software developers, aspiring software architects, product owners, product managers, engineering managers, IT consultants and anyone looking to get a firm grasp on software architecture, application deployment infrastructure and distributed systems design.

The courses in the learning track are:

  1. Web Application and Software Architecture 101
  2. Cloud Computing 101 – Master the Fundamentals 
  3. Design Modern Web-Scale Distributed Applications Like a Pro

Let’s find out what each course has to offer.

Web Application and Software Architecture 101  

This is the first course in the learning track and makes you a master of web architecture fundamentals. It walks you through the different components involved when designing the architecture of a web application. You’ll understand the techniques of picking the right architecture and the technology stack to implement a use case, including the technology trade-offs involved.

You’ll learn concepts like scalability, high availability and architectural components like caching, load balancing, monoliths, microservices, micro frontends, message queues, and more. We take a deep dive into databases, understanding different types of databases (relational, document-oriented, key-value, graph and wide-column), including their use cases and intricacies. 

You’ll understand related concepts like eventual consistency, strong consistency, CAP theorem and how distributed applications maintain a consensus on an entity’s value when deployed in different geographic regions across the globe. 

We’ll learn what message queues are, how notification systems work with the help of message queues, how data is streamed across various components in distributed applications and more. This includes taking a deep dive into the world of mobile apps.

Course contents are available on the course page – check it out.

Cloud Computing 101 – Master the Fundamentals 

Once we are done with the fundamentals of web architecture and have an understanding of the different components involved in an application’s architecture, we move towards understanding the infrastructure on which our applications are deployed with the help of this second course in the learning track.

This cloud course is platform-agnostic and gives us an insight into how services are deployed in different cloud regions and availability zones globally, how multiple server nodes in a cluster communicate with each other, how microservices scale in containers, auto-scaling, code deployment workflow and more.

Besides this, we also understand different cloud service, deployment and storage models, including serverless, FaaS (Functions as a Service) and edge computing.

You’ll find the course contents on the course page – check it out.

Design Modern Web-Scale Distributed Applications Like a Pro

The third course in the learning track begins with understanding the criticality of understanding application data and data access patterns when designing distributed systems

We’ll master concepts like:

  • How large-scale services manage their database growth.
  • How data conflicts are dealt with, ensuring consistency when the application is deployed in clusters across different cloud regions worldwide.
  • How services deal with concurrent traffic in the scale of millions
  • How distributed transactions are designed.
  • How we prepare our infrastructure to deal with the traffic surge.
  • How relational database clusters are scaled horizontally. 
  • How NoSQL databases ensure ACID transactions and much more. 

Applying these concepts and those discussed in the above two courses, we design web-scale distributed services like ESPN, Netflix, New York Times, and more. In the systems design, we understand the implementation of different data models such as relational, document-oriented, key-value and graph data models. 

As opposed to saying, “Hey, we will be using a relational database for a certain use case.” I’ve explained why a certain data model is picked and why other data models, like key-value or wide-column, etc., won’t fit in that scenario. 

The systems are designed keeping the industry’s best practices in mind, leveraging cloud design patterns such as saga, sidecar, throttling, event sourcing, CQRS, etc., along with insights from the real-world architectures of web-scale businesses.

Further details are on the course page

All the courses are written in a step-by-step, easy-to-understand format containing detailed and engaging content with a lot of visual diagrams. 

How is this learning track helpful for my career growth?

This learning track is the fastest way possible to master the fundamentals of software architecture and distributed systems design. As opposed to going through tons of articles, videos, books and whitepapers, you’ll find all the needed concepts in this learning track, saving you months, if not years, of your time.  

I’ve spent a decade developing and managing distributed systems for the big guns in the industry and I’ve put that experience into the content, designing the systems with an industry-oriented approach leveraging different cloud design patterns and such.

Mastering application design gives us an edge as a developer or in any role that entails decision-making. When implementing new features in our application, when designing new modules from the bare bones or when trying to scale our service, we can make better decisions by applying our architecture knowledge, saving ourselves or our employer a ton of money. This skill will make you stand out amongst your peers.

Most internet companies today have an essential software design round in their interviews, regardless of whether you are an absolute beginner or someone with years of industry experience. They want you to be an individual contributor. They want you to take ownership of your work and be capable of designing and writing software from the bare bones all by yourself, without relying on anyone for assistance.

The Zero to Mastering Software Architecture Learning track prepares you for just that and more. Investing in this course will significantly increase your knowledge in the domain, subsequently increasing your pay scale. I wish I had a similar learning product in the initial years of my career.

With this learning track, not only you’ll be interview-ready for your system design interview rounds for any company on the planet, including FAANG, but you will also develop a solid foundation in the domain, becoming a better software engineer as a whole.

Are there any prerequisites to this learning track? Do I need to have coding knowledge to understand this?

There are no prerequisites to taking this learning track. However, the courses should be read in the same order as discussed above. Also, you do not need any coding knowledge for the courses since they deal with high-level software design, providing a thorough discussion of architectural concepts with the help of several illustrations. So, besides already working in the industry as a developer, if you are someone just starting your career as a developer or in the university or are in a decision-making role like being a product manager, product owner, engineering manager, etc., the learning track will be immensely helpful for you too.

Who is the author of this learning track?

Hello! I am Shivang. I have industry experience of more than ten years designing and developing scalable web systems, right from idea to production. I’ve designed, developed, and maintained code, as well as worked in the production support for systems receiving millions of hits every single day. 

I’ve worked on large-scale web services for some of the industry giants in several domains, including E-commerce, Fintech, Telecom, Retail and Travel & Hospitality. My last job was at HP as a full-stack developer in their Technical Solutions – R&D team.

As an independent consultant, I’ve helped businesses build scalable services with fitting software design and technology. This included helping them improve their development processes resulting in better code quality, maximum test coverage, minimal bottlenecks, less technical debt and fewer bugs.

Here is my LinkedIn profile if you want to read more about my professional experience or want to say hello!

You should also read about what those enrolled in my courses say, here. You can purchase the courses separately or the complete learning track at a discounted rate here.