강의

멘토링

로드맵

Inflearn brand logo image
Programming

/

Back-end

Complete Guide to Microservices Design Patterns

This course explores MSA design patterns, implementation strategies, and various content crucial for microservice application development. You will acquire core knowledge and practical methods for successfully converting existing monolithic applications to MSA. You will analyze diverse design patterns underpinning microservice architecture, learning their suitable contexts and application methods.

(5.0) 4 reviews

345 learners

  • Dowon Lee
마이크로서비스
이론 실습 모두
Java
Spring Cloud
Design Pattern
MSA
patterns

What you will learn!

  • Understanding Microservices Architecture

  • Understanding Microservices Architecture Patterns

  • Application of Patterns According to Microservice Design

You will learn about patterns in microservice architecture and apply them to your applications.

Now that you understand the concepts and structure of a basic microservices architecture, you can design and build a microservices application using the MSA patterns and service decisions required to build the application.

This is an essential course for all developers and architects who want to transform complex systems into flexible, scalable, and maintainable microservices architectures. Strengthen your core application development skills with this course!

  • Understand Monolithic and Microservice Architectures, understand the differences between large-scale monolithic architectures and microservices , and learn the pros and cons of each approach.

  • This article explains the steps required to transform a basic monolithic application into a microservices architecture, as well as the important points to consider.

  • MSA Design Principles: Covers the design principles of microservice architecture (MSA) to improve scalability and reliability. You will learn about core concepts such as domain separation, loose coupling, and independent deployment.

  • Through this lecture, you will understand the microservice architecture pattern suitable for the service type and the concepts required to apply the MSA pattern.

  • Learn MSA Core Patterns: You can study key MSA design patterns such as API Gateway , Service Discovery , and Saga patterns with real-world examples.


  • You can implement a virtual MSA example and practice the entire process required to get it running.

  • Here's a graph of the usage by major patterns in MSA:



I recommend this to these people

Who should take this course (1)

Those who want to learn about the architecture and applicable patterns for building applications in organizations considering introducing microservices through practical examples, with an understanding of the concept and scope of MSA

Who should take this course (2)

Backend developers who want to develop and maintain large-scale services through various MSA patterns and processing mechanisms that can be applied when configuring the Inner/Outer Architecture of MSA

Who should take this course (3)

Anyone who wants to learn more about data management and distributed transactions while developing microservice applications using Spring Boot + Spring Cloud

After class

  • You will understand the configuration, architecture, and patterns required to transform a monolithic application into an MSA application .

  • You will understand how to synchronize data required for MSA and how to process data in distributed transactions .

  • You will understand the architectures and patterns to consider when developing microservice applications, and how to apply various patterns.

  • Problem-solving skills can be improved by applying various design patterns of MSA to the appropriate situation.

  • When introducing MSA to existing projects or services, you will be able to draw a clear roadmap and design the deployment environment based on an understanding of DevOps culture and cloud infrastructure .

Features of this course

Understanding MSA Patterns by Service Type

This course will help you understand the differences and pros and cons between monolithic applications and microservice-based applications in terms of architecture and service, and learn about various MSA patterns, from microservice decomposition patterns to data communication and test strategies, by scenario and topic.

Implement a sample example that applies the MSA pattern

Based on 30 practical examples structured in a monolithic and microservices manner, you can gradually apply the MSA pattern that can be applied to services, and you can also learn about the process of deploying to cloud services.

Learn about these things

Types and Understanding of Microservice Architecture Patterns

You can learn step-by-step the structural situations and various patterns that must be considered when configuring services in the form of a microservice architecture, categorized into communication between services, asynchronous data processing methods, and data management perspectives.

Technologies and Application Methods for Distributed Transaction Processing

In addition to understanding CQRS, Event Sourcing, SAGA, and Event Driven Architecture, which must be considered for data management methods and distributed transaction processing in microservice architecture, you can learn about the process required for implementation through practical examples.

The MSA patterns covered in the lecture are:

  • API Gateway: A pattern that receives all client requests from a single entry point and handles authentication, logging, routing , etc. You can manage multiple microservices in one place.

  • Service Discovery: A pattern of registering and finding the locations of dynamically changing service instances in a central registry . This allows for automatic address discovery when communicating between services.

  • Synchronous & Asynchronous communication : Synchronous communication is a method in which the service that sent the request waits for a response, and the thread is blocked until the response comes. Synchronous communication can be implemented in the REST / gRPC / GraphQL API manner. Asynchronous communication is a method in which the service that sent the request proceeds with the next task immediately without waiting for a response, and communicates by publishing and subscribing to events through a message broker such as Kafka.

  • Circuit Breaker: A pattern that short-circuits calls to prevent a chain reaction of failures in a single service. When an external service is unavailable , calls are stopped for a certain period of time and fail-fast is achieved.

  • Fallback handling: This pattern provides alternative responses or retry logic as a fallback when circuit breakers, etc. are triggered. It increases the resilience of the system in the event of a partial failure.

  • Saga Pattern: A distributed transaction pattern for maintaining data consistency across distributed services. It links local transactions of each service with events/messages to ensure eventual consistency.

  • CQRS & Event Sourcing: CQRS (Command Query Responsibility Segregation) is a pattern that increases scalability by separating read and write models, and Event Sourcing is a pattern that stores state changes as event logs and restores the state based on history . They are used together to manage data for complex businesses.

  • EDA: Event Driven Architecture is a software architecture pattern that designs systems around the creation, detection, consumption, and use of events. It is the way in which components of microservice applications communicate and interact with each other through 'events'.

  • BFF (Backend for Frontend): A pattern that provides a specialized backend for each platform, such as web and mobile. It increases efficiency and development productivity by creating a dedicated API layer that meets the needs of each frontend.

Who created this course

  • Based on my 25 years of experience in IT, teaching, consulting, and development, I teach with explanations to help you understand my practical experience and know-how.

  • Based on a basic understanding and introduction to MSA, we cover understanding and application of microservice patterns that can upgrade your understanding of MSA to the next level.

  • This course explains MSA implementation and patterns, which are a continuation of the lectures "Developing RESTful Web Services using Spring Boot", "Developing Microservice Applications (MSA) with Spring Cloud", "Building a CI/CD Pipeline using Jenkins", and "Docker Virtualization Technology for DevOps (Private Harbor Registry)".

  • With the idea that "Knowledge in the head is not knowledge," I try to package my small experiences and knowledge well and explain them in a more understandable way. I think it will be a lecture that is easier to understand for those who are interested in Java and Spring Framework and extend to Cloud Native and Microservice Architecture.

Do you have any questions?

Q. What infrastructure configuration and practice environment are required to implement or run the source code covered in the lecture?

There are a total of 30 example codes used in the lecture, and as each section progresses, you can run them by modifying the code based on the content introduced in the section. All source codes were written using the Spring framework + Spring Boot based on the Java language. This is an example project with basic functions such as viewing a product list and purchasing, with the theme of a simple online shopping mall. To run the online shopping mall source, you can easily run it with debugging if you use JDK and an IDE such as Eclipse or IntelliJ in a Windows or MacOS environment, and if you can build and use a container virtualization environment such as Docker Desktop, you can run it based on the packaged container image. However, since you need to test while modifying part of the project by applying the MSA pattern, we recommend a practice environment using an IDE. Finally, the environment and SW required for the practice are summarized below.

  • Windows 10 or 11 or MacOS Intel chip version or Apple chip version

  • JDK 17+

  • IntelliJ IDEA (Community or Ultimate version)

  • Visual Studio Code

  • Postman

  • Chrome web browser

  • Docker Desktop

Q. I am trying to build an application or service with a microservice architecture. Do I have to apply design patterns?

You can choose the programming language or database used when developing IT-related applications or services. And based on the domain knowledge required for the work, it can be developed in various forms according to the developer's algorithm. I think that the business logic you want to implement can be implemented through the best method and efficient algorithm that the developer who implements it thinks of, rather than having a set process or process. However, there are already proven development methods, processes, or development types in numerous applications that have been developed in the same type of domain service. If you refer to these methods that have been developed in the past, you can implement the service in an efficient and proven way. Design Pattern is a way to accumulate design know-how discovered in the past software development process, name the method, and organize it into a specific convention that is easy to reuse later. This design pattern suggests standard solutions and naming methods for common problems in software design. In other words, it would be good to think of it as a "methodology for creating efficient code." In microservice architecture, various types of design patterns are presented, from service division to processing of distributed transactions, and applying these MSA design patterns will help you implement more efficient and stable services. In conclusion, not only in MSA but also in other SW development, application of design patterns is optional, but I think that properly applied design patterns will help you develop efficient and stable systems.

Q. Can I take the course without any knowledge of Spring Boot or Spring Cloud?

This lecture assumes that you have basic knowledge of MSA based on Spring Boot + Spring Cloud, and explains the MSA pattern. I think it is enough to study the MSA pattern even if you only understand the concept of Outer Architecture in MSA, or the process of handling basic CRUD (Create, Read, Update, Delete) tasks using JPA. However, in order to understand well how the existing monolithic application and the newly configured MSA application have been structured and applied, I think the learning effect can be doubled if you proceed with the lecture with a basic understanding of Spring Boot or Spring Cloud.

Things to note before taking the class

Practice environment

  • Operating System and Version (OS): Windows 10+, macOS Intell chip, macOS Apple chip, CentOS7+, Ubuntu 16.04+

  • Tools used: JDK 17+, Spring Boot, Spring Cloud, Visual Studio Code, Postman, Docker Desktop, IntelliJ Commnity (Ultimate recommended)

  • PC specifications: CPU i5+, RAM 16G+, Storage 50G+, Internet-enabled environment

Learning Materials

Player Knowledge and Notes

  • An understanding of Java programming and the ceremonial concepts of the Spring Framework will help you take the course.

  • You can run the example code used in the lecture as is, but some parts may need to be modified depending on the students' environment.

  • If you have any questions related to the lecture, please leave them on the bulletin board and we will respond as soon as we can.

  • The copyright of the lecture materials and source code related to the lecture belongs to the instructor, but if you need to use them, please indicate the source.

Recommended for
these people

Who is this course right for?

  • Developer who wants to develop microservice applications

  • Engineer who wants to design Microservices Architecture

  • A developer who wants to apply MSA patterns based on an understanding of MSA

Need to know before starting?

  • Java + Spring framework

  • Spring Boot

  • Spring Cloud

Hello
This is

29,298

Learners

1,560

Reviews

1,352

Answers

4.8

Rating

8

Courses

저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.

직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다. 

최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.

머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.  

 

 

  • ) 엔제이원컴퍼니 대표 

  • ) 동국대학교 국제정보대학원 정보보호학과 대우교수

  • ) JP Morgan Chase AMJ Tech consultant (일본)

  • ) 삼성 SDS CMS 사업본부 책임 엔지니어

 

 

Curriculum

All

118 lectures ∙ (26hr 38min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

4 reviews

5.0

4 reviews

  • gmpgs87님의 프로필 이미지
    gmpgs87

    Reviews 1

    Average Rating 5.0

    5

    31% enrolled

    • hyungdoo.yoon님의 프로필 이미지
      hyungdoo.yoon

      Reviews 17

      Average Rating 5.0

      5

      31% enrolled

      • 김동운님의 프로필 이미지
        김동운

        Reviews 10

        Average Rating 4.6

        5

        27% enrolled

        국비를 스프링으로 마치고 실무 투입돼서 스프링부트 감도 못 잡고 막막하던 때 우연히 강사님 강의를 듣고 감을 잡아 지식을 확장하며 살아 남을 수 있었습니다. 이번 강의는 MSA의 흐름을 잡아주는 좋은 강의네요. 매번 유용한 강의 감사드립니다.

        • javarunner님의 프로필 이미지
          javarunner

          Reviews 67

          Average Rating 5.0

          5

          15% enrolled

          $84.70

          Dowon Lee's other courses

          Check out other courses by the instructor!

          Similar courses

          Explore other courses in the same field!