We may earn an affiliate commission when you visit our partners.
Course image
Mehmet Ozkaya

In this course, we’re going to learn how to Design Microservices Architecture with using Design Patterns, Principles and the Best Practices with Iterate Design Architecture from Monolithic to Microservices. We will using the right architecture design patterns and techniques.

Read more

In this course, we’re going to learn how to Design Microservices Architecture with using Design Patterns, Principles and the Best Practices with Iterate Design Architecture from Monolithic to Microservices. We will using the right architecture design patterns and techniques.

By the end of the course, you will Learn how to handle millions of request with designing system for high availability, high scalability, low latency, and resilience to network failures on microservices distributed architectures.

This course is will be the journey of software architecture design with step by step evolving architecture from monolithic to event driven microservices.

We will start the basics of software architecture with designing e-commerce Monolithic architecture that handles low amount of requests.

After that step by step evolves the architecture with;

  • Layered Architecture

  • Clean Architecture

  • Modular Monolithic Architecture

  • Microservices

  • Event-Driven Microservices Architectures

  • and lastly Serverless Microservices Architectures with designing together that handle millions of requests. This is a step-by-step process for software system design and evolve from monolithic to microservices following the patterns & principles.

We will discuss microservices architectures with all aspects,

  • Microservices Decomposition

  • Microservices Communications (Sync / Async Message-Based Communication, API Gateways)

  • Microservices Data Management (Databases / Query / Commands)

  • Microservices Transaction Management

  • Microservices Distributed Caching

  • Microservices Deployments with Containers and Orchestrators

  • Microservices Resilience

with applying microservices design patterns and practices.

We are going to design with together and step by step with refactor architectures with all aspects of microservices pillars.

We will start with designing Monolithic Architecture. And you can see that we have Functional and Non-functional requirements that should cover our design and we have patterns and principles toolbox that we will learn and use these principles when evolving architectures.

Way of Learning — The Course Flow

We will always starts with the problem and try to solve this problem with learning and designing new architectures, patterns and best practices.

  • Problem -> Learn -> Design -> Adapt -> Evaluate

We will complete this circle for every section of the course. You will find that we will add new requirements in order to handle millions of request and learn new patterns and practices that will use these principles when evolving architectures.

You will find that we will add new requirements in order to handle millions of request and learn new patterns and practices that will use these principles when evolving architectures.

We will see full of patterns and principle toolbox is loading with new patterns and apply them into current designs. We will see latest patterns that we use more than 30 patterns and practices with implementing high scalability, high availability and handle millions of request requirements.

Let me write some microservices pattern which we covered in this course;

  • The Database-per-Service Pattern

  • API Gateway Pattern, Gateway Routing/Aggregation/Offloading Pattern

  • Backends for Frontends pattern BFF

  • Service Aggregator Pattern, Service Registry/Discovery Pattern

  • Fan-out Publish/Subscribe Messaging Pattern

  • Topic-Queue Chaining & Load Balancing Pattern

  • The Shared Database Anti-Pattern and Polyglot Persistence

  • Database Sharding Pattern, CAP Theorem

  • Materialized View Pattern

  • CQRS and Event Sourcing Patterns

  • SAGA Pattern — Choreography-based/Orchestration-based SAGA

  • Compensating Transaction Pattern

  • Transactional Outbox Pattern

  • Dual Write Problem

  • CDC — Change Data Capture with Outbox Pattern

  • Event Hubs and Real-time Event Streaming in Event-Driven Microservices Architecture

  • Cache-Aside Pattern for Microservices Distributed Caching

  • Sidecar Pattern

  • Service Mesh Pattern

  • DevOps and CI/CD Pipelines for Microservices Deployments

  • Deployment Strategies for Microservices: Blue-green, Rolling and Canary deployments

  • Infrastructure as Code (IaC) and usage in Microservices Deployments

  • Microservices Resilience, Observability and Monitoring Patterns

  • Retry and Circuit Breaker Patterns

  • Bulkhead / Timeout / Cache / Fallback Patterns

  • Elastic Stack for Microservices Observability with Distributed Logging

  • Microservices Health Checks: Liveness, Readiness and Performance Checks

  • Serverless Microservices Architecture implementation on AWS

So the course flow will be the both theoretical and practical information;

  • We will always start with a business problem

  • We will learn a specific pattern, why and where we should use

  • After that we will see the Reference architectures that applied these patterns

  • After that we will design our architecture with applying this newly learned pattern with together

  • And lastly we will decide which Technologies can be choices for that architectures.

And at the last section, we will made Code Review for Existing Microservices Architecture Repository on GitHub for practical implementation of microservices architecture.

So this course will includes

  • Hands-on Design Activities

  • Iterate Design Architecture from On-Premises to Cloud Server-less architectures

  • Evolves architecture monolithic to Event-Driven Microservices Architectures

  • Refactoring System Design for handling million of requests

  • Apply best practices with microservices design patterns and principles

  • Examine microservices patterns with all aspects like Communications, Data Management, Caching and Deployments

  • Prepare for Software Architecture Interviews

  • Prepare for System Design Architecture Interview exams.

I have been joined several famous company's architecture position interviews, also involved software architect positions assessment process more than 50+ interviews collect the architecture requirements for software industry positions.

So with this course, you will gain real-world experience about all architecture positions from monolithic to event-driven microservices architectures.

This course prepared for the beginner but at least you should familiar with basics of software architectures. This course will have good theoretical information but also will be 90% of hands-on design activities. All course architecture steps will designed step by step and together.

I hope you'll join me on this journey and develop this project with me.

Enroll now

What's inside

Learning objectives

  • Design microservices architecture with using design patterns, principles and the best practices
  • Learn how to handle millions of request with designing system for high availability, high scalability, low latency, and resilience to network failures
  • Journey of software architecture design from monolithic to serverless microservices
  • Step by step evolving architecture from monolithic to event-driven microservices architecture
  • Design e-commerce app with monolithic - layered - clean - modular monolithic - microservices - event-driven architecture and serverless microservices
  • Microservices decomposition strategies
  • Microservices communications (sync / async message-based communication, api gateways))
  • Microservices data management (databases / query / commands / distributed transactions)
  • Microservices distributed transaction management
  • Microservices distributed caching
  • Microservices deployments with containers and orchestrators
  • Microservices resilience, observability, monitoring
  • Microservices design patterns and best practices
  • The database-per-service pattern, polyglot persistence and the shared database anti-pattern
  • Api gateway pattern, backends for frontends pattern-bff, gateway routing/aggregation/offloading pattern
  • Service aggregator pattern, service registry/discovery pattern
  • Materialized view pattern, database sharding pattern, cap theorem
  • Fan-out publish/subscribe messaging pattern, topic-queue chaining & load balancing pattern
  • Cqrs and event sourcing patterns, eventual consistency principle, cap theorem
  • Saga pattern — choreography-based/orchestration-based saga, compensating transaction pattern
  • Transactional outbox pattern, dual write problem
  • Cdc — change data capture with outbox pattern
  • Code review for existing microservices architecture repository on github
  • Event hubs and real-time event streaming in event-driven microservices architecture
  • Cache-aside pattern for microservices distributed caching
  • Sidecar pattern, service mesh pattern
  • Devops and ci/cd pipelines for microservices deployments
  • Deployment strategies for microservices: blue-green, rolling and canary deployments
  • Infrastructure as code (iac) and usage in microservices deployments
  • Microservices resilience, observability and monitoring patterns
  • Retry and circuit breaker patterns
  • Bulkhead / timeout / cache / fallback patterns
  • Elastic stack for microservices observability with distributed logging
  • Microservices health checks: liveness, readiness and performance checks
  • Serverless microservices architecture implementation on aws
  • Hands-on design activities, iterate design architecture from on-premises to cloud serverless architectures
  • Refactoring system design for handling million of requests
  • Prepare for software architecture interviews
  • Prepare for system design architecture interviews
  • Show more
  • Show less

Syllabus

Course Introduction
Introduction
Architecture Design Journey - Evolution of Architectures
Way of Learning - The Course Flow
Read more
Choosing the Right Architecture for your Application
How to Follow the Course & Course Slides
Understand E-Commerce Domain
First Problem: Sell Products Online
Understand E-Commerce Domain - Use Cases - Functional Requirement
Understand E-Commerce Domain - Non-Functional Requirements
Monolithic Architecture
Introduction - Monolithic Architecture
When to use Monolithic Architecture
Benefits of Monolithic Architecture
Challenges of Monolithic Architecture
Design principles of Monolithic Architecture -- KISS, YAGNI, DRY
Design the Architecture - E-Commerce App - KISS & YAGNI
Design & Iterate : Monolithic Architecture - E-Commerce Application
Evaluate : Monolithic Architecture - E-Commerce Application
Problem: Code Become Too Complex over time - Monolithic Architecture -E-Commerce
Monolithic Architecture Quiz
Layered (N-Layer) Architecture
Design principles - Separation of Concerns (SoC)
Design principles - SOLID
Design the Architecture - E-Commerce App - Layered Architecture
Adapt Technology Stack - E-Commerce App - Layered Architecture
DEMO: Layered Monolithic Architecture Code Review - E-Commerce App
Evaluate: Layered Monolithic Architecture
Problem: Highly Coupling Dependent Layers
Layered Architecture Quiz
Clean Architecture
Introduction the Clean Architecture
What is Clean Architecture
The Dependency Rule
Layers of Clean Architecture
Benefits of Clean Architecture
Design the Architecture - Clean Architecture - E-Commerce App
Adapt: Clean Architecture - E-Commerce App
DEMO: Clean Architecture Code Review - E-Commerce App
Evaluate: Clean Architecture
Problem: Increased Traffic, Handle More Request
Clean Architecture Quiz
Scalability - Vertical Scaling - Horizontal Scaling
Introduction Scalability - Why need to Scale ?
Vertical Scaling - Scale up
Horizontal Scaling - Scale out
What is Load Balancer ? Use Load Balancer Split the Load with Consistent Hashing
Design the Architecture - Scalability - E-Commerce App
Adapt the Architecture - Scalability - Load Balancer - E-Commerce App
Evaluate: Clean Architecture with Scalability - Load Balancer - E-Commerce App
Problem: Agility of New Features, Split Agile Teams
Scalability Quiz
Modular Monolithic Architecture
Introduction - Modular Monolithic Architecture
What is Modular Monolithic Architecture ?
Benefits of Modular Monolithic Architecture
Challenges of Modular Monolithic Architecture
When to use Modular Monolithic Architecture
Monolith First Approaches from Martin Fowler and Sam Newman
Monolithic Architecture Vertical Considerations, Communications of Monolithic
Transaction Management of Monolithic Architecture
Deployments of Monolithic Architecture
Design the Architecture - Modular Monolithic Architecture - E-Commerce App
Evaluate: Complexity of Presentation UI Operations- Modular Monolithic Architect
Problem: Improved customer experience with Separated UI and Omnichannel
Headless Architecture and Separated Presentation with SPA
Design the Architecture - Modular Monolithic Architecture with SPA -Separated UI
Adapt the Architecture - Modular Monolithic Architecture with SPA - Separated UI
DEMO: Modular Monolithic Architecture Code Review - E-Commerce App
Evaluate: Modular Monolithic Architecture with SPA
Modular Monolithic Architecture Quiz
Microservices Architecture
Introduction - Microservices Architecture
What are Microservices ?
What is Microservices Architecture ?
Microservices Characteristics
Benefits of Microservices Architecture
Challenges of Microservices Architecture
When to Use Microservices Architecture - Best Practices
When Not to Use Microservices - Anti-Patterns of Microservices
Monolithic vs Microservices Architecture Comparison
The Database-per-Service Pattern - Polyglot Persistence
Design the Architecture - Microservices Architecture - First Iteration
Adapt the Architecture - Microservices Architecture - First Iteration
Evaluate: Microservices Architecture - First Iteration
Problem: Break Down Application into Microservices
Microservices Architecture Quiz
Decomposition of Microservices Architecture
Introduction - Decomposition of Microservices Architecture
Why we need to Decompose ? - The Scale Cube
Microservices Decomposition Pattern - Decompose by Business Capability
Microservices Decomposition Pattern - Decompose by Subdomain
Bounded Context Pattern (Domain-Driven Design - DDD)
Identify Bounded Context Boundaries for Each Microservices
Using Domain Analysis to Model Microservices and Checklist After Decomposition
Analysis E-Commerce Domain - Use Cases
Analysis E-Commerce Domain - Nouns and Verbs

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops the skills needed to design microservices architecture with best practices, principles, and patterns
Examines a core industry practice that uses event-driven architectures in scalable systems
Explores design architecture for distributed systems using microservices, which is standard in cloud environments
Requires an understanding of software architecture
Builds on the concepts of domain-driven design
Assumes some familiarity with common patterns such as MVC and CQRS

Save this course

Save Design Microservices Architecture with Patterns & Principles to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Design Microservices Architecture with Patterns & Principles with these activities:
Review basic software design concepts
Ensure that you are familiar with basic software design concepts before you begin this course.
Browse courses on Design Patterns
Show steps
  • Review your notes or textbooks from previous courses on software design.
  • Complete online tutorials or exercises on software design principles.
Gather and organize relevant resources
Compile all of the materials you will need and organize them in a way that makes sense to you.
Show steps
  • Review the course syllabus and make a list of required readings and materials.
  • Download or print out copies of these materials.
  • Organize your materials chronologically or in a way that makes sense to you.
Design and implement a simple microservice
Create a simple microservice to practice the concepts learned in this course.
Browse courses on Microservices
Show steps
  • Choose a simple problem or functionality to implement as a microservice.
  • Design the architecture of your microservice, including the components, communication mechanisms, and data storage.
  • Implement your design using a programming language and framework of your choice.
  • Test and deploy your microservice.
  • Reflect on your experience and identify areas for improvement.
One other activity
Expand to see all activities and additional details
Show all four activities
Mentor a junior developer on microservices
Share your knowledge and help others learn about microservices.
Show steps
  • Identify a junior developer who is interested in learning about microservices.
  • Set up regular meetings to discuss microservices concepts.
  • Provide guidance and support as the mentee designs and implements microservices.
  • Reflect on your experience and identify areas for improvement.

Career center

Learners who complete Design Microservices Architecture with Patterns & Principles will develop knowledge and skills that may be useful to these careers:
Microservices Architect
Microservices Architects are responsible for designing and implementing microservices-based architectures. They work with software engineers to develop and test microservices, and they help to ensure that microservices are deployed and managed effectively. This course can help aspiring Microservices Architects develop the skills and knowledge they need to succeed in this role. The course covers a wide range of topics related to microservices architecture, including design principles, communication patterns, and deployment strategies.
Algorithm Engineer
Algorithm Engineers design and implement algorithms to solve complex problems. They may work in a variety of industries, such as finance, manufacturing, and healthcare. This course may be useful for aspiring Algorithm Engineers as it teaches how to design and implement microservices architectures, which can be used to solve complex problems in a distributed environment. The course also covers a wide range of topics related to algorithm design and analysis, such as data structures, algorithms, and complexity theory.
DevOps Engineer
DevOps Engineers are responsible for bridging the gap between development and operations teams. They work to automate and streamline the software development process, and they help to ensure that software is deployed and managed effectively. This course may be useful for aspiring DevOps Engineers as it teaches how to design and implement microservices architectures, which are becoming increasingly popular in the industry. The course also covers a wide range of topics related to DevOps, such as continuous integration, continuous deployment, and infrastructure as code.
Software Architect
Software Architects typically design, develop, and test software systems. They may also lead teams of software engineers and oversee the software development process. This course may be useful for aspiring Software Architects as it teaches how to design and implement microservices architectures, which are becoming increasingly popular in the industry. The course also covers a wide range of topics related to software architecture, such as scalability, reliability, and security.
Cloud Architect
Cloud Architects design and implement cloud-based solutions. They work with clients to understand their business needs and then design and implement cloud-based solutions that meet those needs. This course may be useful for aspiring Cloud Architects as it teaches how to design and implement microservices architectures, which are becoming increasingly popular in the cloud. The course also covers a wide range of topics related to cloud computing, such as cloud security, cloud networking, and cloud storage.
Computer Scientist
Computer Scientists research and develop new computer technologies and applications. They may work in academia, industry, or government. This course may be useful for aspiring Computer Scientists as it teaches how to design and implement microservices architectures, which are a cutting-edge technology. The course also covers a wide range of topics related to computer science, such as algorithms, data structures, and operating systems.
IT Manager
IT Managers are responsible for the planning, implementation, and management of IT systems and resources. They may work with other IT professionals to design and implement IT systems, or they may work with users to provide support and training. This course may be useful for aspiring IT Managers as it teaches how to design and implement microservices architectures, which are becoming increasingly popular in the industry. The course also covers a wide range of topics related to IT management, such as IT strategy, IT budgeting, and IT security.
Systems Analyst
Systems Analysts analyze business needs and design and implement computer systems to meet those needs. They may also work with other IT professionals to maintain and update computer systems. This course may be useful for aspiring Systems Analysts as it teaches how to design and implement microservices architectures, which can be used to build complex and scalable systems. The course also covers a wide range of topics related to systems analysis, such as requirements gathering, system design, and system testing.
Technical Consultant
Technical Consultants provide technical advice and assistance to clients. They may work with clients to design and implement software systems, or they may help clients to troubleshoot and resolve technical issues. This course may be useful for aspiring Technical Consultants as it teaches how to design and implement microservices architectures, which are becoming increasingly popular in the industry. The course also covers a wide range of topics related to technical consulting, such as communication skills, problem-solving skills, and project management skills.
Technical Program Manager
Technical Program Managers oversee the development and implementation of software systems. They work with stakeholders to define project requirements, and they work with development teams to ensure that projects are completed on time and within budget. This course may be useful for aspiring Technical Program Managers as it teaches how to design and implement microservices architectures, which are becoming increasingly popular in the industry. The course also covers a wide range of topics related to program management, such as project planning, risk management, and budget management.
Software Tester
Software Testers test software systems to ensure that they meet requirements and that they are free of defects. They may work with developers to identify and fix defects, or they may work with users to gather feedback on software products. This course may be useful for aspiring Software Testers as it teaches how to design and implement microservices architectures, which can be complex and difficult to test. The course also covers a wide range of topics related to software testing, such as test planning, test execution, and test reporting.
Data Architect
Data Architects design and implement data management solutions. They work with clients to understand their data needs and then design and implement data management solutions that meet those needs. This course may be useful for aspiring Data Architects as it teaches how to design and implement microservices architectures, which can be used to process and manage data. The course also covers a wide range of topics related to data management, such as data modeling, data integration, and data security.
Data Scientist
Data Scientists use data to solve problems and make decisions. They may work in a variety of industries, such as finance, healthcare, and retail. This course may be useful for aspiring Data Scientists as it teaches how to design and implement microservices architectures, which can be used to process and analyze large amounts of data. The course also covers a wide range of topics related to data science, such as data mining, machine learning, and statistical analysis.
Software Engineer
Software Engineers design, develop, and test software systems. They may also work with other engineers to maintain and update software systems. This course may be useful for aspiring Software Engineers as it teaches how to design and implement microservices architectures, which are becoming increasingly popular in the industry. The course also covers a wide range of topics related to software engineering, such as object-oriented programming, design patterns, and software testing.
Product Manager
Product Managers are responsible for the development and launch of new products and services. They work with marketing and engineering teams to define product requirements, and they work with customers to gather feedback on products and services. This course may be useful for aspiring Product Managers as it teaches how to design and implement microservices architectures, which can be used to build complex and scalable products and services. The course also covers a wide range of topics related to product management, such as product planning, market research, and competitive analysis.

Reading list

We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Design Microservices Architecture with Patterns & Principles.
Provides a comprehensive overview of the principles and patterns for designing data-intensive applications. It covers topics such as data modeling, data storage, data processing, and data analysis. This book valuable resource for anyone who wants to learn how to design and build scalable, reliable, and efficient data-intensive applications.
Provides a catalog of microservices patterns that can be used to design and build microservices-based applications. The patterns are organized into categories such as communication, data management, and resilience. This book valuable resource for anyone who wants to learn how to design and build microservices-based applications.
Provides a practical guide to building microservices-based applications. It covers topics such as microservices architecture, microservices design, and microservices deployment. This book valuable resource for anyone who wants to learn how to build microservices-based applications.
Provides a practical guide to building event-driven architectures. It covers topics such as event-driven architecture patterns, event streaming, and event processing. This book valuable resource for anyone who wants to learn how to build event-driven architectures.
Provides a catalog of cloud native patterns that can be used to design and build cloud native applications. The patterns are organized into categories such as communication, data management, and resilience. This book valuable resource for anyone who wants to learn how to design and build cloud native applications.
Provides a comprehensive overview of Kubernetes. It covers topics such as Kubernetes architecture, Kubernetes deployment, and Kubernetes management. This book valuable resource for anyone who wants to learn how to use Kubernetes.
Provides a comprehensive overview of Docker. It covers topics such as Docker architecture, Docker deployment, and Docker management. This book valuable resource for anyone who wants to learn how to use Docker.
Provides a practical guide to building event-driven microservices. It covers topics such as event-driven architecture patterns, event streaming, and event processing. This book valuable resource for anyone who wants to learn how to build event-driven microservices.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Design Microservices Architecture with Patterns & Principles.
Your Microservices Transition
Most relevant
The Complete Microservices & Event-Driven Architecture
Most relevant
Monitoring and Troubleshooting Windows Server in Azure...
Most relevant
Getting Started .NET Core Microservices RabbitMQ
Most relevant
Microservices Interview Questions Preparation Course
Most relevant
Cloud-Native: Microservices, Kubernetes, Service Mesh,...
Most relevant
Advanced Java
Most relevant
Microservices: Clean Architecture, DDD, SAGA, Outbox &...
Most relevant
Monolith to Microservices at Scale
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser