Foundations of Software Architecture and Monolithic Systems
Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.
Foundations of Software Architecture and Monolithic Systems
This course is part of Microservices Architecture: Design Patterns & Principles Specialization
2,149 already enrolled
Included with
Learn more
Ask Coursera
10 reviews
Recommended experience
10 reviews
Recommended experience
What you'll learn
Master monolithic architecture and design scalable applications with key principles like KISS, YAGNI, and DRY.
Learn how to decompose monolithic systems into microservices for enhanced flexibility and scalability.
Understand the concepts of vertical and horizontal scaling and apply them to optimize application performance.
Gain hands-on experience with building, coding, and scaling real-world systems like e-commerce applications.
Skills you'll gain
Tools you'll learn
Details to know
7 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- Learn new concepts from industry experts
- Gain a foundational understanding of a subject or tool
- Develop job-relevant skills with hands-on projects
- Earn a shareable career certificate
There are 6 modules in this course
This course features Coursera Coach!
A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. This course will immerse you in the core concepts of software architecture with a focus on monolithic systems. You will learn about the evolution of architecture, from traditional designs to modern microservices systems, and explore the design principles that influence these systems. Through real-world examples and problem-solving scenarios, you will design, code, and evaluate software systems to develop a solid understanding of architecture patterns. Starting with the foundations of monolithic architecture, you will be introduced to key design principles such as KISS, YAGNI, and DRY. These will be applied in building real-world applications, including an e-commerce platform. Youβll also dive into scalable systems, learning vertical and horizontal scaling techniques and their applications. The course is intended for software developers and engineers who want to deepen their understanding of monolithic and microservices architectures. A basic knowledge of programming is required, making this course ideal for those looking to expand their architectural skills and work on scalable systems. By the end of the course, you will be able to design, code, and scale monolithic systems, implement modular monoliths, and apply microservices architecture. You will also be able to optimize system performance using scalability strategies and improve system flexibility.
In this module, we will introduce the course, its key objectives, and what you will learn. Youβll also gain insights into the course structure, which follows a problem-solving approach to help you apply concepts practically.
What's included
5 videos2 readings
5 videosβ’Total 28 minutes
- Introduction to the Specializationβ’8 minutes
- Architecture Design Journey - Evolution of Architecturesβ’7 minutes
- Way of Learning - The Course Flow: Problem -> Learn -> Design -> Code -> Evaβ’7 minutes
- Prerequisites, Source Code and Course Slidesβ’4 minutes
- First Problem: Sell Products Online: Understand E-Commerce Domainβ’3 minutes
2 readingsβ’Total 20 minutes
- Introduction to the course 'Foundations of Software Architecture and Monolithic Systems'β’10 minutes
- Full Specialization Resourcesβ’10 minutes
In this module, we will introduce the course, its key objectives, and what you will learn. Youβll also gain insights into the course structure, which follows a problem-solving approach to help you apply concepts practically.
What's included
13 videos1 assignment
13 videosβ’Total 74 minutes
- Monolithic Architecture: When to Use, Benefits and Challengesβ’7 minutes
- Foundational Design Principles: KISS, YAGNI, DRYβ’4 minutes
- Design: EShop Monolithic App w/ KISS & YAGNIβ’6 minutes
- Code: EShop Monolithic App w/ KISS & YAGNIβ’9 minutes
- Problem: Customer Basket Items Disappeared When App Restartsβ’5 minutes
- Design: E-Shop Monolithic App with a Persistent Databaseβ’3 minutes
- Code: E-Shop Monolithic App with PostgreSQL Databaseβ’9 minutes
- Problem: Tightly Coupled UI Limits Flexibility and User Experienceβ’3 minutes
- Learn: 3-Tier Architecture β Separating Presentation, Application, and Dataβ’6 minutes
- Design: E-Shop Monolithic App with 3-Tier Architectureβ’3 minutes
- Code: E-Shop with 3-Tier Architecture (SPA, Backend API & Database)β’12 minutes
- Big Ball of Mudβ’1 minute
- Problem: Growing Pains-Our Monolith is Becoming Hard to Manage and Evolveβ’4 minutes
1 assignmentβ’Total 15 minutes
- Monolithic Architecture - Assessmentβ’15 minutes
In this module, we will dive into modular monoliths, learning how to break applications into modules for greater maintainability. You will design and implement an e-commerce application using this architecture while addressing performance optimization and vertical scaling concerns.
What's included
10 videos1 assignment
10 videosβ’Total 62 minutes
- Modular Monoliths Architecture: When to Use, Benefits and Challengesβ’8 minutes
- Design: E-Shop Modular Monoliths Architectureβ’5 minutes
- Best Practice: DB Schema Separation of Modules in Modular Monoliths Appsβ’3 minutes
- Code: E-Shop Modular Monoliths Architectureβ’12 minutes
- Monoliths Vertical Considerations (Communication, Transactions, Deployments)β’6 minutes
- Problem: Product Page Slowness - Failures During Peak Trafficβ’4 minutes
- Learn: Output Caching β Speeding Up Repetitive Requestsβ’6 minutes
- Design: E-Shop Modular Monoliths with Redis Output Cachingβ’5 minutes
- Code: E-Shop Modular Monoliths with Redis Output Cachingβ’10 minutes
- Problem: Increased Traffic, Can't Handle More Request w/ Single App Instanceβ’3 minutes
1 assignmentβ’Total 15 minutes
- Modular Monolithic Architecture - Assessmentβ’15 minutes
In this module, we will explore scalability concepts and discuss how to efficiently scale applications. Youβll learn about vertical and horizontal scaling and implement a load-balanced e-commerce system capable of handling increased traffic.
What's included
6 videos1 assignment
6 videosβ’Total 36 minutes
- Learn: Scalability - Why Need to Scale?β’2 minutes
- Vertical and Horizontal Scalingβ’6 minutes
- What is Load Balancer? Use Load Balancer Splitting the Loadβ’6 minutes
- Design: E-Shop Monolithic App with Horizontal Scaling and Load Balancerβ’7 minutes
- Code: E-Shop Monolithic App with Horizontal Scalingβ’9 minutes
- Problem: Ship New Features Faster to Compete in the Marketβ’5 minutes
1 assignmentβ’Total 15 minutes
- Scalability - Vertical and Horizontal Scaling - Assessmentβ’15 minutes
In this module, we will introduce microservices and discuss their architecture. You will gain the skills to decompose applications into smaller, independent services and apply microservices principles to design and code an e-commerce system.
What's included
6 videos1 assignment
6 videosβ’Total 47 minutes
- What Are Microservices and Microservices Architecture?β’8 minutes
- When to Use / When NOT to Use Microservices Architectureβ’8 minutes
- The Database-per-Service Pattern - Polyglot Persistenceβ’5 minutes
- Design: E-Shop Microservices Architectureβ’7 minutes
- Code: E-Shop Microservices Architectureβ’16 minutes
- Problem: Validating Our Service Boundaries - How to Decompose Microservicesβ’3 minutes
1 assignmentβ’Total 15 minutes
- Microservices Architecture - Assessmentβ’15 minutes
In this module, we will focus on strategies for decomposing a monolithic application into microservices. Youβll learn about key decomposition patterns and practical approaches like the Strangler Fig Pattern to ensure a smooth transition from monolithic to microservices.
What's included
5 videos1 reading3 assignments
5 videosβ’Total 26 minutes
- Decomposition of Microservices Architecturesβ’4 minutes
- Microservice Decomposition Patterns: Decompose by Business Capability, SubDomainβ’6 minutes
- Identifying and Decomposing Microservices for E-Shop Domainβ’7 minutes
- Strangler Fig Pattern for Refactoring Monoliths into Microservicesβ’6 minutes
- Problem: How Microservices Communicate with Each Otherβ’2 minutes
1 readingβ’Total 10 minutes
- Conclusion to the Course 'Foundations of Software Architecture and Monolithic Systems'β’10 minutes
3 assignmentsβ’Total 90 minutes
- Microservices Decomposition Strategies - Assessmentβ’15 minutes
- Full Course Assessmentβ’60 minutes
- Full Course Practice Assessmentβ’15 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Instructor
Offered by
Explore more from Cloud Computing
Course
- Status: Free Trial
Specialization
- Status: Free TrialV
Vanderbilt University
Course
- Status: Free Trial
Why people choose Coursera for their career
Frequently asked questions
Software architecture refers to the high-level structure of a software system, encompassing its components, their interactions, and how they align with business goals. It's a crucial element because it determines the scalability, performance, and maintainability of software systems. Understanding architectural principles is essential for building robust systems that can evolve over time while meeting user and business needs.
This course covers foundational software architecture principles, focusing on monolithic systems. It explores the evolution of architectures from traditional monolithic designs to more modern approaches, such as microservices. The course provides practical experience in designing and coding applications using monolithic architectures, applying design principles like KISS, YAGNI, and DRY, and addressing real-world issues like performance and scalability.
Upon completing this course, you'll be able to design and develop monolithic applications with a focus on simplicity, modularity, and scalability. You'll also understand how to solve common issues in monolithic systems, such as performance bottlenecks and data persistence challenges. Additionally, you'll gain the skills necessary to decide when to use monolithic designs and how to evolve them as systems grow.
More questions
Financial aid available,
