
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Dowon Lee
Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해 배울 수 있는 강의입니다.
초급
Spring Cloud, MSA, Spring Boot
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.
Understanding Microservices Architecture
Understanding Microservices Architecture Patterns
Application of Patterns According to Microservice Design
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:
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
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 .
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.
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.
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.
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.
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.
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.
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
Provide example code used in the lecture
Providing teaching materials used in the lecture
Available for download in each lecture introduction section
In addition to the content covered in the lecture, we provide separate free lectures on how to use container virtualization and IntelliJ, etc.
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.
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
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 사업본부 책임 엔지니어
All
118 lectures ∙ (26hr 38min)
Course Materials:
All
4 reviews
5.0
4 reviews
Reviews 1
∙
Average Rating 5.0
Reviews 17
∙
Average Rating 5.0
Reviews 10
∙
Average Rating 4.6
Reviews 67
∙
Average Rating 5.0
$84.70
Check out other courses by the instructor!
Explore other courses in the same field!