Grokking Modern Software Architecture Styles
Learn the architectural styles behind modern backend systems, from monoliths to serverless, and how to choose, record, and review one for a real system. For junior and mid-level engineers.

Course Overview
Grokking Modern Software Architecture Styles teaches the structure of backend systems. That structure is the parts a system has, the job of each part, how the parts communicate, and which decisions are expensive to change later. It is written for junior and mid-level engineers who already build features and now want to take part in structural decisions. The course first builds a shared vocabulary for judging any design: boundaries, coupling, quality attributes, constraints, and trade-offs. It then gives each architecture style its own lesson, from monolith and layered through microservices and event-driven to hexagonal, peer-to-peer, and serverless. Every style lesson has the same parts: vocabulary, how the style works, worked examples, code in five languages, diagrams, trade-offs, and an adaptive assessment. The last chapters teach the work that follows the choice of a style. You compare designs with evidence, draw C4 diagrams, write decision records, run architecture reviews, and change a running system in small steps. Three capstones with reference solutions and rubrics, then two final assessments, end the course.
What you'll learn in Grokking Modern Software Architecture Styles
- Tell an architecture decision apart from detailed design, and estimate what it would cost to reverse.
- State a quality requirement as a measurable target, and score design options in a weighted table.
- Split a system into services that communicate through calls or events: microservices, SOA, and event-driven.
- Distribute and scale with broker, peer-to-peer, space-based, and serverless architectures.
- Read small Python programs that show how the styles work, and switch most of them to Java, JavaScript, C#, or Go.
- Review a running system, rank its findings by effect on the main requirement, and plan the smallest fix.
- Check yourself with an adaptive assessment after every style lesson, two final assessments, and three capstones.
- Judge any design by its boundaries, its coupling and cohesion, and the direction its dependencies point.
- Explain how monolith, layered, N-tier, and client-server systems are built, and what each one makes harder.
- Organize code and processing with pipe-and-filter, microkernel, hexagonal, and clean architecture.
- Recognize when a style is the wrong fit for a system, a team, or a budget, and say what it would cost.
- Draw C4 architecture diagrams and write decision records with their costs and the conditions that reopen them.
- Change a running system in small steps with the strangler fig pattern, feature flags, and zero-downtime schema changes.
Course Content
Architecture Styles
Monolith Architecture
Layered (N-Layer) Architecture
N-Tier Architecture
Client-server Architecture
Microservices Architecture
Service-Oriented Architecture (SOA)
Event-driven Architecture
Pipe-and-Filter Architecture
Microkernel (Plugin) Architecture
Hexagonal (Ports and Adapters)
Clean Architecture/Onion Architecture
Broker Architecture
Peer-to-Peer Architecture
Space-Based Architecture
Serverless Architecture
Architecture Decisions, Evolution, and Capstones
A Practical Architecture Decision Process
Architecture Diagrams and Decision Records
Architecture Reviews and Common Failure Patterns
Incremental Evolution and Strangler Fig
Capstone One: Review an Existing Application
Capstone Two: Design a New Learning Product
Capstone Three: Respond to a Changed Requirement
Final Assessment
Final Assessment 1: Fundamentals and Core Styles
Final Assessment 2: Advanced Styles and Architecture Decisions
What people say about our courses






About the Author

Arslan Ahmad
Industry Expertise & Leadership
Arslan Ahmad is the lead author of Grokking Modern Software Architecture Styles. As the founder of Design Gurus and a former FAANG hiring manager, he has worked at industry giants like Facebook (now Meta) and Microsoft.
He has conducted hundreds of system design interviews, giving him unique insight into what top tech companies look for in candidates.
The course also incorporates expertise from senior engineers at Google, Meta, Amazon, Microsoft, and Uber, ensuring you learn system design best practices from professionals who have built and scaled real-world systems.
500+
Interviews Conducted
10k+
Students Taught
Related Courses
$75
$110
$78
FAQs
Who is Grokking Modern Software Architecture Styles for, and what does it assume?
The course is written for junior and mid-level software engineers who build and maintain backend systems and want to take part in structural decisions. It assumes three things. You know one programming language, you know what an HTTP request, response, and status code are, and you can read a SQL query. You do not need prior experience with distributed systems, message brokers, a cloud provider, or a framework. Every other term is defined in the lesson where it first appears.
Is this an interview preparation course?
No. The course teaches software architecture for daily work. You learn to recognize the decisions built into the system you maintain, propose a change in terms your team can check, and record the result. The lessons, capstones, and assessments are about building and changing real systems. If you are preparing for the system design round, Grokking the System Design Interview is the course for that.
Which architecture styles does the course cover?
The fifteen styles, each with its own lesson, are Monolith, Layered, N-Tier, Client-server, Microservices, SOA, Event-driven, Pipe-and-Filter, Microkernel, Hexagonal, Clean Architecture (Onion), Broker, Peer-to-Peer, Space-Based, and Serverless. The lessons fall into four groups. The first covers the basic structures of one application, and the second splits a system into services that communicate through calls or events. The third organizes code and processing, and the fourth addresses distribution and scale.
Is there any practice, or is it only reading?
There is practice at three levels. Every style lesson ends with an adaptive assessment drawn from a question bank. Most questions describe a situation and ask which design or change fits it, and every option comes with an explanation. Two final assessments at the end of the course cover the fundamentals, the styles, and the decisions chapter. Many of their questions combine ideas from several lessons. Three capstone projects ask you to review and refactor an existing application, design a new product under fixed constraints, and respond to changed requirements. Each capstone gives a reference solution and a self-review rubric so that you can check your own work.
Which programming languages does the code come in?
The code examples are written in Python, and most of them have Java, JavaScript, C#, and Go versions that you can switch to inside the lesson. The programs are small. Each one shows the parts of a style and how they communicate, such as monolith modules behind their interfaces or a producer and a consumer of events. A few lessons, such as Peer-to-Peer, rely on diagrams instead of code.
What are the capstone projects?
The three capstones end the decisions chapter and ask you to apply the whole course. In the first, you review the order workflow of the food-delivery app, rank its findings against one measurable requirement, and refactor it within a fixed budget of engineer-days. In the second, you design a new learning product for a team of four engineers with a fixed launch date, from constraints and contracts to deployment. In the third, you respond when that product's requirements change after launch, and you decide which changes need a structural answer. Each capstone states the task and its deliverables, then gives a reference solution and a self-review rubric. Complete the task before you read the solution, because comparing your own answer with it is where most of the learning happens.
What is the food-delivery running example?
The fundamentals lessons, and the decisions lessons up to the first capstone, use one running example: a food-delivery app with customer, restaurant, and courier apps that call one backend. The lessons return to that app and change one part of it at a time, so each idea builds on the one before it. You draw its boundaries, measure its quality attributes, choose between designs for it, and review its order workflow in the first capstone. The style lessons apply each style to other concrete systems, such as an online store, a payment system, or a concert ticketing site.
How is this course different from Grokking the System Design Interview?
Grokking the System Design Interview prepares you for the system design round. It teaches a repeatable framework for answering an open-ended design question and works through real design problems such as a URL shortener or Instagram. This course is about the structure of the systems you build and maintain at work. It teaches each architecture style with its trade-offs, then the process of choosing, recording, and reviewing a decision on a running system. The two courses share vocabulary, such as microservices and event-driven design. This one shows the code inside the application, with decision records and capstones, and it is not organized around interview questions.
How is it different from System Design Fundamentals?
System Design Fundamentals teaches the building blocks that large systems are made from: load balancers, caches, CDNs, databases, partitioning, and replication. It also covers the ideas that tie them together, such as the CAP theorem. This course asks the next question: how the parts of an application are arranged, what each arrangement costs, and which decisions are expensive to change. It defines every infrastructure term it uses, such as message broker or read replica, so you can take it without the fundamentals course. Take System Design Fundamentals first, or alongside it, if you want each building block explained from the start.
In what order should I take the lessons?
Read the fundamentals lessons first, in order. Every style lesson judges its style by the measures they define: the quality attributes it improves or harms and the constraints it fits. Then read the style lessons in order, or open the lesson for a style your team is considering now and read the earlier lessons it refers to. Finish with the decisions chapter, complete each capstone before you read its reference solution, and take the two final assessments at the end. The course is self-paced, and the platform tracks your progress so you can return to any lesson.
Is the course text-based or video-based?
The course is text-based. Every lesson is written, with diagrams wherever a picture explains more than a paragraph. The style lessons add short code examples and an adaptive assessment at the end. There are no video lectures, so you can read at your own pace and return to any section, such as a lesson's vocabulary list, whenever you need it.
How do I get access, and is there a certificate of completion?
You can choose between a lifetime access purchase for this course or an annual subscription that unlocks all current and future Design Gurus courses. Both options include a certificate of completion, which Design Gurus issues once you finish all course modules.
