Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
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) 8 đánh giá

229 học viên

  • foo
장애
이론 실습 모두
resilience4j
예외처리
Spring Boot
transaction
Kafka
data-consistency

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

Dịch cái này sang tiếng Việt

  • 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à

5,206

Học viên

220

Đánh giá

104

Trả lời

4.9

Xếp hạng

9

Các khóa học

안녕하세요.

멘토링을 하면서 주니어 개발자들이 어려워 하는 개념들에 대해 어떻게 하면 쉽게 전달할 수 있을지에 대해서 많은 고민을 하고 있는 푸(Foo)라고 합니다.

잘 부탁 드리겠습니다.


이력

  • 2019. 08 ~ 현재 : 카카오 자바 백엔드 개발자

  • 2021. 08 ~ 현재 : programmers 백엔드 데브코스 멘토

  • 2021. 12 ~ 현재 : F-Lab 자바 백엔드 멘토

 

  • 이것이 취업을 위한 백엔드 개발이다 with 자바(링크)

 

기타 이력 및 타 플랫폼 강의들은 아래 GitHub 링크에서 확인할 수 있습니다.

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ả

8 đánh giá

4.9

8 đánh giá

  • 도토리묵님의 프로필 이미지
    도토리묵

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    • JS Lee님의 프로필 이미지
      JS Lee

      Đánh giá 2

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      백엔드개발자로서 필수 강의라 생각합니다.

      • tails님의 프로필 이미지
        tails

        Đánh giá 8

        Đánh giá trung bình 5.0

        5

        63% đã tham gia

        • devops님의 프로필 이미지
          devops

          Đánh giá 4

          Đánh giá trung bình 4.0

          5

          100% đã tham gia

          멋진 강의

          • dongbin-yoon님의 프로필 이미지
            dongbin-yoon

            Đánh giá 3

            Đánh giá trung bình 5.0

            5

            78% đã tham gia

            실습 코드까지 되게 꼼꼼하게 작성돼 있어서 좋았습니다. 설명도 너무 깔끔해서 좋아요~

            1.164.107 ₫

            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!