강의

멘토링

커뮤니티

BEST
Programming

/

Back-end

Xây dựng hệ thống mạnh mẽ cho phép lỗi

Đây là khóa học thực tiễn về xây dựng hệ thống vững chắc trước lỗi. Bạn sẽ học các kỹ thuật và khái niệm cốt lõi cần thiết cho một hệ thống backend ổn định, bao gồm từ cơ bản về thiết kế nhằm đảm bảo ổn định dịch vụ, các mẫu hình ngăn chặn lỗi lan truyền, xử lý bất đồng bộ qua message queue, cho đến chiến lược duy trì tính nhất quán của dữ liệu phân tán.

(4.9) 15 đánh giá

297 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

  • foo
Spring Boot
Spring Boot
resilience4j
resilience4j
transaction
transaction
Kafka
Kafka
data-consistency
data-consistency
Spring Boot
Spring Boot
resilience4j
resilience4j
transaction
transaction
Kafka
Kafka
data-consistency
data-consistency

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

4.9

5.0

Jang Jaehoon

13% đã tham gia

Cảm ơn bạn vì khóa học tuyệt vời!

5.0

아자

100% đã tham gia

Thực tế chưa trải nghiệm nên khó khăn, nhưng đã thu được nhiều từ khóa nên sau khi học thêm sẽ nghe lại bài giảng 😊😊

5.0

100and

100% đã tham gia

Wao~!! Thật sự không biết mình đã nghe lại bài giảng này bao nhiều lần rồi. Nhờ vậy mà mất khá lâu mới hoàn thành khóa học, nhưng bù lại mình đã học được rất nhiều thứ. Đây thực sự là khoảng thời gian quý báu giúp mình phát triển cả kiến thức về lĩnh vực công nghệ cụ thể lẫn tầm nhìn tổng thể về kiến trúc hệ thống. Mình rất mong chờ bài giảng tiếp theo của anh Foo!! Cảm ơn anh rất nhiều vì đã tạo ra khóa học tuyệt vời như vậy!! :)

Bạn sẽ nhận được điều này sau khi học.

  • Thiết kế hệ thống bền bỉ chịu lỗi

  • Cơ bản xây dựng kiến trúc hướng sự kiện sử dụng Kafka

  • Cơ bản về cách xử lý giao dịch trong môi trường phân tán

"Chỉ thay đổi một dòng code này thôi mà, tại sao cả những dịch vụ không liên quan cũng bị dừng?"

Bất kỳ lập trình viên nào cũng từng ít nhất một lần đối mặt với những khoảnh khắc bế tắc như thế này. Rõ ràng logic có vẻ không có vấn đề gì, nhưng một thay đổi nhỏ lại lan tỏa như hiệu ứng cánh bướm, đe dọa sự ổn định của toàn bộ hệ thống. Nhiều lập trình viên ban đầu tập trung vào vấn đề tính khả dụng (Availability) này, tức là 'làm sao để server không bị down'. Khóa học này xuất phát từ vấn đề căn bản này, học cách chẩn đoán nguyên nhân sự cố và xây dựng nền tảng cho hệ thống vững chắc thông qua các pattern thiết yếu như server dự phòng, retry, Circuit Breaker.

Tuy nhiên, những băn khoăn về thiết kế hệ thống hiện đại không dừng lại ở đây. Khi quy mô hệ thống trở nên lớn hơn và phức tạp hơn, chúng ta sẽ áp dụng kiến trúc hướng sự kiện - chia các dịch vụ thành những đơn vị nhỏ hơn và kết nối chúng thông qua các hệ thống messaging như Kafka. Đây là một phương pháp mạnh mẽ để giảm sự phụ thuộc giữa các dịch vụ và đảm bảo tính linh hoạt, nhưng đồng thời cũng sinh ra những vấn đề mới.

Ở đây chúng ta sẽ đối mặt với những câu hỏi tinh vi và khó khăn hơn.

"Nếu tin nhắn yêu cầu đặt hàng bị mất do lỗi mạng thì sao?"

"Nếu thông báo hoàn tất thanh toán được gửi trùng lặp và khách hàng bị tính phí hai lần thì sao?"

"Xử lý đơn hàng thành công rồi, nhưng nếu xử lý kho hàng thất bại thì dữ liệu sẽ đồng bộ như thế nào?"

Khi hệ thống được phân tán như vậy, chúng ta sẽ đối mặt với một vấn đề tinh vi và khó khăn hơn là tính nhất quán của dữ liệu (Consistency), vượt ra ngoài những 'sự cố' đơn giản như máy chủ ngừng hoạt động. Khóa học này tiến thêm một bước nữa, giải quyết trực diện các vấn đề về độ tin cậy trong môi trường phân tán. Bạn sẽ học các kỹ thuật vận hành Kafka một cách ổn định và ngăn chặn việc mất mát cũng như trùng lặp tin nhắn, đồng thời khám phá sâu sắc cách đảm bảo tính nhất quán dữ liệu giữa các dịch vụ phân tán thông qua các mẫu thiết kế nâng cao như transactional outbox, compensation transaction và xử lý idempotency.

Thông qua khóa học này, các bạn sẽ có được tầm nhìn tổng thể về thiết kế giúp hệ thống hoạt động 'đáng tin cậy' trong mọi tình huống bất thường, vượt xa việc chỉ viết code 'có thể chạy được'. Hãy bắt đầu hành trình đảm bảo 'tính ổn định' thực sự mà các hệ thống backend hiện đại yêu cầu, từ xử lý sự cố đến xử lý dữ liệu phân tán.

Đặc điểm của khóa học này

📌 Thay đổi góc nhìn về sự cố: Khóa học này không chỉ đơn thuần liệt kê các kỹ thuật giải quyết lỗi. Chúng ta sẽ xem xét sự cố như một thuộc tính không thể tránh khỏi của hệ thống, và cùng nhau suy ngẫm về quan điểm thiết kế về cách có thể bảo vệ tính ổn định của toàn bộ hệ thống khi sự cố xảy ra.

📌 Các nguyên lý và mẫu thiết kế cốt lõi cho tính ổn định: Bắt đầu từ các khái niệm cơ bản như dự phòng máy chủ và khả năng mở rộng - những nền tảng của hệ thống vững chắc, tập trung vào việc hiểu và áp dụng nguyên lý hoạt động của các mẫu thiết kế ổn định thường được sử dụng trong thực tế như Retry (thử lại) và Circuit Breaker (bộ ngắt mạch).

📌 Cân bằng giữa lý thuyết và thực hành: Trước tiên hiểu tại sao mỗi khái niệm lại cần thiết, sau đó áp dụng ngay những gì đã học vào thực hành. Thông qua quá trình tự tạo ra các tình huống sự cố và giải quyết chúng, khóa học được thiết kế để bạn có thể phát triển khả năng giải quyết vấn đề thực tế.

Xem trước nội dung bài giảng




Chúng ta sẽ học những nội dung như thế này

Nguyên tắc thiết kế hệ thống vững chắc

Tại sao lại xảy ra sự cố? Học về lý do chia tách ứng dụng bên trong dịch vụ, khái niệm về dự phòng và sao chép, khả năng mở rộng, xử lý ngoại lệ và mã trạng thái phản hồi, Retry, Timeout, Circuit Breaker, Fallback, Graceful Degradation, Rate Limit, Bulkhead và các mẫu thiết kế cốt lõi khác để ngăn chặn sự lan truyền liên tục của sự cố.

Hệ thống nhắn tin và kiến trúc dựa trên sự kiện

Làm thế nào để giảm độ kết nối giữa các dịch vụ và linh hoạt đối phó với lưu lượng truy cập tăng đột biến? Chúng ta sẽ đi sâu vào các chủ đề thực tế như khái niệm cơ bản của Kafka, triển khai giao tiếp bất đồng bộ, mức độ bảo đảm truyền tải và mất mát tin nhắn, DLQ (Dead Letter Queue) và đảm bảo thứ tự, xử lý tin nhắn trùng lặp có thể xảy ra ở consumer, các cài đặt chính của Kafka mà các nhà phát triển backend cần biết.

Tính nhất quán dữ liệu trong môi trường phân tán

Trong môi trường microservices, dữ liệu có thể duy trì tính nhất quán như thế nào? Chúng ta sẽ học các pattern nâng cao để đảm bảo tính toàn vẹn dữ liệu như nguyên nhân gây mất tính nhất quán dữ liệu, vai trò của transaction và @Transactional, vấn đề đồng thời của cơ sở dữ liệu và mức độ cô lập.

Những điều cần lưu ý trước khi học

Môi trường thực hành

  • Hệ điều hành và phiên bản (OS): Windows 10

  • Công cụ sử dụng: Intellij Community 2023.2, Google Chrome, Docker Desktop


Tài liệu học tập

Kiến thức cần thiết và lưu ý

  • Khóa học này được tiến hành dựa trên ứng dụng Java, Spring Boot. Tuy nhiên, vì nội dung chính của khóa học tập trung vào khái niệm hơn là mức độ code, nên sau khi thực hành với Java, Spring Boot thì việc áp dụng sang ngôn ngữ, framework khác sẽ không có khó khăn gì lớn. (Một số tính năng có thể không được hỗ trợ bởi chính thư viện đó)

  • Chúng ta sẽ không thực hành bằng cách đưa lên server mà chỉ thực hành trong môi trường phát triển local. Các thành phần cần thiết như Kafka, Database sẽ được chạy thông qua Docker Desktop.

  • Nếu bạn có bất kỳ thắc mắc nào trong quá trình học, hãy để lại câu hỏi. Nếu có nội dung cần cập nhật, tôi sẽ cập nhật.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Những ai muốn thiết kế một hệ thống vững chắc, ngăn chặn sự lây lan của lỗi bằng cách tận dụng Retry, Timeout, Circuit Breaker, v.v.

  • Những ai mới làm quen với Kafka, hoặc muốn vượt trên kiến thức cơ bản về hàng đợi tin nhắn để xây dựng kiến trúc giao tiếp bất đồng bộ ổn định.

  • Nhà phát triển backend muốn hiểu về giao dịch và tính lũy đẳng, và học cách đảm bảo tính nhất quán dữ liệu trong môi trường phân tán.

Cần biết trước khi bắt đầu?

  • Kinh nghiệm phát triển backend với Spring Boot

Xin chào
Đây là

6,034

Học viên

300

Đánh giá

117

Trả lời

4.9

Xếp hạng

9

Các khóa học

Xin chào.

Tôi là Foo, một người luôn trăn trở về việc làm thế nào để có thể truyền đạt những khái niệm mà các lập trình viên cấp dưới (junior) cảm thấy khó khăn một cách dễ hiểu nhất trong quá trình cố vấn (mentoring).

Rất mong nhận được sự giúp đỡ của mọi người.


Lịch sử

  • 08/2019 ~ Hiện tại : Nhà phát triển Java Backend tại Kakao

  • 2021. 08 ~ hiện tại : Mentor khóa học Backend DevCourse tại programmers

  • 2021. 12 ~ Hiện tại : Mentor Java Backend tại F-Lab

Sách

  • Đây là Phát triển Backend để xin việc với Java (Link)

 

Các lịch sử khác và bài giảng trên các nền tảng khác có thể được kiểm tra tại liên kết GitHub bên dưới.

GitHub - https://github.com/lleellee0

Chương trình giảng dạy

Tất cả

32 bài giảng ∙ (8giờ 45phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

15 đánh giá

4.9

15 đánh giá

  • s9285s님의 프로필 이미지
    s9285s

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    • three4599님의 프로필 이미지
      three4599

      Đánh giá 1

      Đánh giá trung bình 5.0

      5

      63% đã tham gia

      • integral님의 프로필 이미지
        integral

        Đánh giá 2

        Đánh giá trung bình 5.0

        5

        63% đã tham gia

        • k2j381114님의 프로필 이미지
          k2j381114

          Đánh giá 16

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          • jjhgwx님의 프로필 이미지
            jjhgwx

            Đánh giá 647

            Đánh giá trung bình 4.9

            5

            13% đã tham gia

            Cảm ơn bạn vì khóa học tuyệt vời!

            1.146.211 ₫

            Khóa học khác của foo

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!