Hướng dẫn hoàn hảo về các mẫu thiết kế microservice
Khóa học này giúp bạn tìm hiểu về các nội dung đa dạng, các mẫu thiết kế và kỹ thuật cần thiết cho mẫu thiết kế MSA và chiến lược triển khai để phát triển ứng dụng microservice. Bạn sẽ được học các kiến thức cốt lõi và phương pháp luận thực tiễn cần thiết để chuyển đổi thành công ứng dụng monolithic hiện có sang phương pháp MSA. Bạn cũng sẽ phân tích các mẫu thiết kế đa dạng tạo nên nền tảng của kiến trúc microservice, đồng thời tìm hiểu từng mẫu thiết kế phù hợp với tình huống nào và cách áp dụng chúng.
496 học viên
Độ khó Cơ bản
Thời gian Không giới hạn
Tin tức
4 bài viết
Xin chào. Chúng tôi đã bổ sung một bài giảng bổ sung mới vào khóa học Phát triển dịch vụ LLM thực tế dành cho lập trình viên Spring (Phần 1). Nội dung hướng dẫn tích hợp mô hình ra quyết định Jev của TypeSafe AI mới được công bố vào ứng dụng Spring Boot, với thời lượng khoảng 1 giờ.
Tại sao thêm nội dung này
Trong Section 4, chúng ta đã tìm hiểu cách nhận phản hồi của LLM dưới dạng đối tượng Java bằngentity(), cũng như cạm bẫy trong thực tế khi mô hình bọc JSON trong code fence khiến việc phân tích cú pháp bị lỗi. Dù yêu cầu bằng prompt hay tự động hóa bằngentity(), vẫn còn một hạn chế: cuối cùng, đó vẫn là cách "nhờ" LLM trả về đúng định dạng.
Jev có cách tiếp cận khác. Thay vì viết câu trả lời, nó chọn một đáp án trong số các lựa chọn được định trước và trả về cùng với xác suất. Nói cách khác, định dạng được đảm bảo một cách có cấu trúc. Khi xử lý cùng một đầu vào theo hai cách, chúng ta sẽ hiểu rõ hơn nhiều về những điều cần cân nhắc khi thiết kế "đầu ra có cấu trúc". Vì vậy, tôi đã tổng hợp nội dung này như phần tiếp nối của Section 4.Bạn sẽ học gì
Khái niệm về các mô hình Jev và System One: ý nghĩa của việc trả về "quyết định có kiểu dữ liệu được xác định" thay vì văn bản
Sự khác biệt giữa LLM và Jev: câu trả lời tự luận và câu trả lời trắc nghiệm, những việc mỗi bên làm tốt và không làm tốt
Ba loại câu hỏi (choice · score · noul) và cấu trúc yêu cầu
/v1/systemoneGọi từ Spring: gọi API Jev bằng
RestClientvà tạo các lựa chọn bằng enum Java để chuyển đổi phản hồi một cách an toàn về kiểu dữ liệuTrình diễn so sánh: phân tích cùng một bài đánh giá phim lần lượt bằng
entity()và Jev để so sánh tốc độ, lỗi định dạng, độ tin cậy và tính nhất quán
Tài liệu được cập nhật cùng nhau
Mã ví dụ Phần 4 (ch4): thêm 2 API phân tích bài đánh giá (
/api/movies/review/llm,/api/movies/review/jev) vàJevClientSlide bài giảng bổ sung và tài liệu giảng dạy
Kịch bản kiểm thử so sánh:
review-compare.shdành cho macOS,review-compare.ps1dành cho Windows
Điểm cần biết trước
Jev không phải là một tính năng của Spring AI mà là một dịch vụ bên ngoài riêng biệt do TypeSafe AI cung cấp. Trong bài giảng, chúng ta cũng gọi trực tiếp bằng
RestClient, chứ không phảiChatClientcủa Spring AI.Hiện tại Jev đang ở giai đoạn truy cập sớm, vì vậy việc cấp khóa API có thể phải chờ. Trong mã ví dụ, tính năng Jev mặc định bị tắt (
jev.enabled=false), nên ngay cả khi không có khóa, bạn vẫn có thể tiếp tục các bài thực hành như bình thường. Nếu chưa có khóa, hãy xem phần trình diễn trong video và tập trung theo dõi các khái niệm cùng mã nguồn.Vì đây là dịch vụ mới ra mắt nên giá cả hoặc API có thể thay đổi sau này. Nếu có thay đổi, chúng tôi sẽ thông báo lại qua tin tức mới.
📌 Truy cập khóa học ngay: https://inf.run/VVpnV
Nếu trong quá trình học các bài giảng được bổ sung, bạn có bất kỳ thắc mắc nào hoặc gặp khó khăn khi thực hành, hãy thoải mái để lại bình luận. Chúng tôi sẽ tiếp tục bổ sung những nội dung có thể áp dụng ngay vào công việc thực tế.
Xin chào, tôi là Lee Do-won.
"Tôi đã thử tạo pipeline Jenkins, nhưng mới chỉ nghe qua khái niệm ArgoCD hoặc GitOps."
"Tôi bối rối không biết nên thiết kế việc triển khai như thế nào cho từng môi trường dev, staging và production."
Dành cho những ai đang trăn trở như vậy, chúng tôi đã mở khóa học 「Học GitOps CI/CD thực chiến với Jenkins và ArgoCD」 trên Inflearn.
Khóa học này khác biệt ở những điểm sau
• Cùng tìm hiểu cả GitOps dựa trên ArgoCD, vượt ra ngoài CI/CD truyền thống dựa trên Jenkins.
• Trực tiếp so sánh phương thức Push (Jenkins) và phương thức Pull (ArgoCD) trên cùng một cụm Kubernetes. Khi ai đó thay đổi thủ công bằng kubectl, bạn sẽ tận mắt thấy một bên giữ nguyên thay đổi còn bên kia tự động khôi phục, đồng thời trực tiếp cảm nhận sự khác biệt trong cách rollback và kiểm tra lịch sử triển khai.
• Kết hợp hai phương thức để xây dựng từ đầu đến cuối một quy trình triển khai kết hợp, trong đó dev·staging sử dụng Jenkins Push, còn production sử dụng ArgoCD Pull (phê duyệt Sync thủ công).
• Thực hành các kỹ thuật triển khai cốt lõi cần thiết cho vận hành, từ Canary, Blue-Green, RBAC, quy trình phê duyệt, ứng phó sự cố cho đến tự động rollback.
Môi trường thực hành
Chỉ cần Docker Desktop là có thể thực hiện. Tương thích với cả Windows và macOS, không cần tài khoản đám mây như AWS hay phát sinh chi phí riêng.
Khóa học này phù hợp với những ai
• Kỹ sư backend và hạ tầng đã từng sử dụng Jenkins nhưng chưa từng làm quen với ArgoCD/GitOps
• Những người muốn chuyển việc triển khai Kubernetes từ thao tác thủ công bằng kubectl apply sang tự động hóa
• Nhân sự DevOps·SRE quan tâm đến các yêu cầu vận hành như phê duyệt triển khai, rollback và theo dõi kiểm toán
Tổng thời lượng học khoảng 10–11 giờ, đồng thời cung cấp tài liệu thực hành và hướng dẫn khắc phục sự cố.
👉 Xem khóa học: https://inf.run/dEjZE
Nếu có điều gì thắc mắc, hãy thoải mái để lại trong phần bình luận hoặc mục Q&A của khóa học nhé!
Lần này, chúng tôi đã mở khóa học mới Phát triển dịch vụ LLM thực chiến dành cho nhà phát triển Spring (Phần 1). Dù có thể hơi muộn một chút, khóa học được xây dựng nhằm giúp bạn học những nội dung cần thiết để phát triển ứng dụng LLM bằng Spring framework quen thuộc với các nhà phát triển Java. Rất mong nhận được sự quan tâm của các bạn.
Tại sao tôi tạo ra khóa học này?
Dạo gần đây, những từ khóa như RAG, tìm kiếm vector và tác nhân AI có thể bắt gặp ở khắp nơi, nhưng tài liệu hướng dẫn chuyên sâu ở cấp độ thực tế về việc “tích hợp chúng vào backend Spring Boot như thế nào” lại không nhiều.
Khóa học này đưa nguyên vẹn vào chương trình những vấn đề tôi từng gặp khi gỡ lỗi endpoint đề xuất RAG thực tế — trải nghiệm chất lượng tìm kiếm bị giảm do ý nghĩa bị phá vỡ khi chia nhỏ tài liệu theo đơn vị token, cũng như quá trình chuyển sang chiến lược chia theo đoạn văn để giải quyết vấn đề. Thay vì chỉ đưa ra đoạn mã đúng như trong các tutorial, khóa học sẽ cùng bạn theo dõi quá trình “tại sao không hoạt động → chẩn đoán như thế nào → khắc phục ra sao”.
Khóa học này được khuyến nghị cho những người sau đây:
Các lập trình viên backend đã có kinh nghiệm với Spring Boot nhưng mới bắt đầu phát triển dịch vụ LLM/AI
Các nhà phát triển muốn áp dụng RAG và tìm kiếm vector ở cấp độ dự án thực tế, thay vì chỉ theo các bài hướng dẫn.
Những người thực tế cần tự triển khai các tính năng AI nội bộ (chatbot, tìm kiếm tài liệu, đề xuất, v.v.) dựa trên Spring
Chỉ cần có kinh nghiệm xây dựng REST API bằng Spring Boot là đủ. Không cần có kiến thức nền tảng về AI/LLM.
Bạn sẽ học gì?
1. Nền tảng cốt lõi của Spring AI Cách sử dụng cơ bản ChatClient, đầu ra có cấu trúc (Structured Output), triển khai phản hồi streaming
2. Xây dựng pipeline RAG Tích hợp kho vector, so sánh các chiến lược chia nhỏ tài liệu và xử lý sự cố trong thực tế, cải thiện chất lượng tìm kiếm, thiết kế prompt
3. Mở rộng công cụ và đa phương thức Tích hợp các công cụ bên ngoài bằng MCP (Model Context Protocol), xử lý đầu vào đa phương thức như hình ảnh, tích hợp Dify
4. Ổn định dịch vụ và dự án thực tế Áp dụng các biện pháp bảo vệ, thiết kế dịch vụ đáng tin cậy và thực hiện dự án mini tích hợp những nội dung đã học cho đến nay
Phần phụ lục cũng hướng dẫn cách sử dụng công cụ lập trình AI và Ollama.
Giới thiệu về loạt bài
Sản phẩm ra mắt lần này là Part 1 của toàn bộ series. Trong Part 2 và 3, chúng tôi dự kiến sẽ đề cập đến các kiến trúc chuyên sâu hơn và những trường hợp thực tế; khi toàn bộ series được phát hành, chúng tôi cũng dự định chuẩn bị chương trình giảm giá cho trọn bộ.
📌 Truy cập khóa học: https://inf.run/VVpnV
Nếu có điều gì thắc mắc hoặc câu hỏi liên quan đến giáo trình, hãy thoải mái để lại bình luận. Thông qua Part 1, tôi muốn cùng các bạn thực hiện bước đầu tiên trong việc tích hợp LLM vào dịch vụ Spring của mình.
Xin chào, tôi là Lee Do-won.
Lần này, chúng tôi mở bài giảng về Mẫu thiết kế mới cho Kiến trúc vi dịch vụ.
Sau khi khép lại năm 2024 thực sự khó khăn và bận rộn, tháng 5 của năm mới 2025 đã sắp trôi qua.
Có rất nhiều thứ đang diễn ra với các dự án, bài giảng và cuộc sống cá nhân của tôi, nhưng tôi đã có thể mở một bài giảng mà tôi đã trì hoãn trong một thời gian dài.
Ứng dụng Microservices (MSA) được phát triển với Spring Cloud
Xây dựng một đường ống CI/CD bằng Jenkins
Công nghệ ảo hóa Docker cho DevOps (Private Harbor Registry)
Phát triển các ứng dụng MSA bằng cách sử dụng các mẫu thiết kế dịch vụ vi mô
Sau bài giảng, tôi đã chuẩn bị một bài giảng về các mẫu thiết kế cần thiết để xây dựng ứng dụng. Khi tôi lần đầu lập kế hoạch cho khóa học "Phát triển ứng dụng vi dịch vụ (MSA) với Spring Cloud", tôi dự định hoàn thành bài giảng cơ bản về Cloud Native rồi phát triển dịch vụ web bằng các mẫu thiết kế và kiến trúc có thể áp dụng vào thực tế như bước tiếp theo, nhưng mất nhiều thời gian hơn dự kiến. Tuy nhiên, tôi đã sắp xếp nhiều mẫu khác nhau thành nhiều nhóm và mở bài giảng, vì vậy tôi hy vọng các bạn sẽ quan tâm nhiều.
Trong bài giảng này, chúng tôi sẽ trình bày các mô hình sau:
API Gateway: Một mô hình tiếp nhận tất cả các yêu cầu của khách hàng từ một điểm nhập duy nhất và xử lý xác thực, ghi nhật ký, định tuyến , v.v. Bạn có thể quản lý nhiều dịch vụ vi mô ở một nơi.
Khám phá dịch vụ: Một mẫu để đăng ký và tìm vị trí của các phiên bản dịch vụ thay đổi động trong sổ đăng ký trung tâm . Điều này cho phép tự động phát hiện địa chỉ khi giao tiếp giữa các dịch vụ.
Giao tiếp đồng bộ và không đồng bộ : Giao tiếp đồng bộ là phương pháp trong đó dịch vụ gửi yêu cầu chờ phản hồi và luồng bị chặn cho đến khi nhận được phản hồi. Bạn có thể triển khai giao tiếp đồng bộ theo cách thức REST/gRPC/GraphQL API. Giao tiếp không đồng bộ là phương pháp trong đó dịch vụ gửi yêu cầu sẽ tiến hành tác vụ tiếp theo ngay lập tức mà không cần chờ phản hồi. Nó giao tiếp bằng cách xuất bản và đăng ký các sự kiện thông qua một nền tảng môi giới tin nhắn như Kafka.
Circuit Breaker: Một mô hình ngắt mạch các cuộc gọi để ngăn chặn phản ứng dây chuyền các lỗi trong một dịch vụ. Khi một dịch vụ bên ngoài không khả dụng, nó sẽ tạm dừng các cuộc gọi trong một khoảng thời gian và gây ra lỗi dự phòng.
Xử lý dự phòng: Mẫu này cung cấp phản hồi thay thế hoặc logic thử lại khi bộ ngắt mạch, v.v. được kích hoạt. Tăng khả năng phục hồi của hệ thống trong trường hợp xảy ra lỗi một phần.
Mẫu Saga: Một mẫu giao dịch phân tán để duy trì tính nhất quán của dữ liệu trên các dịch vụ phân tán. Đảm bảo tính nhất quán cuối cùng bằng cách liên kết các giao dịch cục bộ của từng dịch vụ với các sự kiện/tin nhắn.
CQRS & Event Sourcing: CQRS (Command Query Responsibility Segregation) là một mô hình tăng khả năng mở rộng bằng cách tách biệt các mô hình đọc và ghi, còn Event Sourcing là một mô hình lưu trữ các thay đổi trạng thái dưới dạng nhật ký sự kiện và khôi phục trạng thái dựa trên lịch sử . Được sử dụng cùng nhau để quản lý dữ liệu cho các doanh nghiệp phức tạp.
EDA: Kiến trúc hướng sự kiện là một mô hình kiến trúc phần mềm dùng để thiết kế hệ thống xoay quanh việc tạo, phát hiện, sử dụng và tiêu thụ các sự kiện. Đây là cách các thành phần của ứng dụng vi dịch vụ giao tiếp và tương tác với nhau thông qua 'sự kiện'.
BFF (Backend cho Frontend): Một mô hình cung cấp phần backend chuyên biệt cho từng nền tảng, chẳng hạn như web và thiết bị di động. Tăng hiệu quả và năng suất phát triển bằng cách tạo các lớp API chuyên dụng phù hợp với nhu cầu của từng giao diện.
Bây giờ, tôi sẽ cập nhật nội dung của các bài giảng hiện có, bắt đầu bằng bài giảng "Phát triển ứng dụng vi dịch vụ (MSA) với Spring Cloud" mà tôi đã trì hoãn một thời gian. Đã khá lâu kể từ khi tôi mở khóa học và tôi nghĩ rằng mình nên cập nhật nội dung mới nhất cho khóa học, vì vậy tôi sẽ cập nhật sớm nhất có thể.
Một lần nữa xin cảm ơn những người đã quan tâm tới bài giảng. Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng để lại và chúng tôi sẽ cố gắng phản hồi sớm nhất có thể.
Cảm ơn

