강의

멘토링

로드맵

Programming

/

Back-end

Triển khai chức năng cốt lõi máy chủ ngân hàng với kiến trúc đa module [ Kotlin & Spring ]

Khóa học này bao gồm cách cấu hình một dự án đa module từ đầu, sử dụng Kotlin và Spring Boot. Khóa học được tiến hành theo hướng thực hành, từ các khái niệm cơ bản về module hóa, cài đặt Gradle, quản lý phụ thuộc giữa các module, cho đến phát triển ứng dụng thực tế. Từ người mới bắt đầu đến nhà phát triển trung cấp, hãy tham khảo khóa học này khi muốn tìm hiểu kiến thức cơ bản và ứng dụng thực tế của multi-module.

(4.6) 22 đánh giá

155 học viên

  • Hong
실습 중심
아키텍처
백엔드
백엔드개발자
데이터베이스
Java
Spring
Kotlin
MySQL
Spring Boot

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

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

  • Kiến trúc CQRS tách biệt Lệnh (Command) và Truy vấn (Query)

  • Xử lý bất đồng bộ dựa trên sự kiện với Spring

  • Xử lý đồng bộ hóa dữ liệu giữa Write/Read Model

  • Prometheus + Grafana: Giám sát số liệu hệ thống

  • Thiết kế dự án Multi Module cho các dự án quy mô lớn

  • Chiến lược phân tách trách nhiệm và quản lý phụ thuộc sử dụng Multi Module

Thông qua khóa học này, các bạn sẽ...

Bạn sẽ trực tiếp thiết kế và xây dựng hệ thống backend thông minh có khả năng giải quyết rõ ràng các yêu cầu kinh doanh phức tạp và tự phục hồi ngay cả trong tình huống xảy ra sự cố.


🏛. Vượt ra ngoài việc đơn thuần tạo CRUD API, bạn sẽ nắm vững các nguyên lý cốt lõi của kiến trúc dễ bảo trì theo thời gian và có thể mở rộng theo sự phát triển của doanh nghiệp. Đầu tiên, thông qua Thiết kế hướng miền (DDD), bạn sẽ mô hình hóa rõ ràng miền tài chính phức tạp bằng code 📝, và áp dụng mô hình CQRS (Tách biệt trách nhiệm lệnh và truy vấn) để tách biệt việc thay đổi và truy vấn dữ liệu. Qua đó, bạn sẽ học cách đạt được cả hai mục tiêu: tính ổn định của các thao tác ghi và tối ưu hóa hiệu suất truy vấn.


Toàn bộ hệ thống sẽ có khả năng phục hồi mạnh mẽ, không bị sụp đổ vì một lỗi duy nhất. 📨Kiến trúc hướng sự kiện (EDA) được áp dụng để giảm độ kết nối giữa các module và học cách giao tiếp theo phương thức bất đồng bộ, đồng thời sử dụng 🔑Khóa phân tán (Distributed Lock) để đảm bảo hoàn hảo tính nhất quán của dữ liệu ngay cả trong môi trường nhiều server.

Ở đây, bạn sẽ học được bí quyết xây dựng tường lửa ngăn chặn sự cố của một dịch vụ cụ thể lan truyền ra toàn bộ hệ thống bằng cách thêm vào mẫu 🛡Circuit Breaker.


Cuối cùng, chúng ta sẽ đảm bảo 'khả năng quan sát (Observability)' để vận hành hệ thống dựa trên dữ liệu chứ không phải 'cảm tính'. Bằng cách tích hợp PrometheusGrafana, chúng ta sẽ thu thập các chỉ số cốt lõi của ứng dụng theo thời gian thực 📊, và học cách trực quan hóa chúng để phát hiện sớm các vấn đề tiềm ẩn và xác định chính xác các điểm nghẽn về hiệu suất 🩺.


Không chỉ dừng lại ở lý thuyết, hãy biến những công nghệ có thể áp dụng ngay vào dịch vụ thực tế thành của riêng bạn. Đây sẽ là thời gian cùng nhau suy nghĩ và phát triển.

Tại sao phải học Kotlin..?

Spring Bootcó thể tương thích 100%, và ngôn ngữ Kotlin do Jetbrain phát triển được tối ưu hóa cho lập trình đồng thời, điều mà Spring không phù hợp.

📚Ngữ pháp ngắn gọn và trực quan


Kotlin cung cấp cú pháp ngắn gọn và trực quan nên các nhà phát triển có thể thực hiện nhiều công việc hơn với ít code hơn. Điều này có hiệu quả cải thiện khả năng đọc hiểu và giúp bảo trì dễ dàng hơn.

📚 Năng suất cao và tính an toàn


Kotlin hỗ trợ tính an toàn null một cách mặc định, giúp giảm thiểu ngoại lệ con trỏ null (NullPointerException). Ngoài ra, nó hỗ trợ lập trình hàm, cho phép viết code theo cách chức năng và khai báo hơn. Những tính năng này giúp tăng năng suất phát triển và giảm khả năng xảy ra lỗi.

📚 Tính tương thích cao


Kotlin tương thích 100% với Java nên có thể dễ dàng tích hợp vào các dự án Java hiện có. Điều này có nghĩa là các nhà phát triển Java không gặp rào cản lớn khi học Kotlin và có thể sử dụng các tính năng mới của Kotlin trong khi vẫn duy trì mã hiện có.

Sau khi hoàn thành khóa học, bạn có thể tạo ra những sản phẩm như thế này

Kiến trúc mô-đun và Thiết kế hướng miền (DDD)

Học về phương pháp thiết kế module cơ bản của MSA(Kiến trúc Microservice) và thiết kế hướng domain. Học cách cấu thành các yêu cầu kinh doanh phức tạp thành code rõ ràng và dễ bảo trì. Học cách các module (api, core, domain, event) phân chia vai trò và thiết kế ứng dụng tập trung vào domain model.

Mẫu CQRS (Command Query Responsibility Segregation - Phân tách trách nhiệm lệnh và truy vấn)

Học về mẫu CQRS giúp tăng hiệu suất và khả năng mở rộng của hệ thống bằng cách tách biệt logic thay đổi dữ liệu (Command) và truy vấn (Query). Hiểu cách tối ưu hóa riêng biệt mô hình chỉ ghi và mô hình chỉ đọc, triển khai bằng code thực tế, đồng thời học cách giảm thiểu vấn đề đồng thời và chọn cơ sở dữ liệu phù hợp cho từng mô hình.

Kiến trúc hướng sự kiện (EDA)

Học cách tạo từng phần của hệ thống thành các dịch vụ độc lập và cho phép chúng giao tiếp với nhau thông qua Event. Tìm hiểu nguyên lý giảm độ kết nối giữa các module và cải thiện khả năng phản hồi cũng như tính linh hoạt của toàn bộ hệ thống thông qua xử lý bất đồng bộ.

Đảm bảo tính ổn định của hệ thống phân tán (Circuit Breaker)

Học về mẫu thiết kế Circuit Breaker giúp ngăn chặn sự cố từ hệ thống bên ngoài lan truyền đến toàn bộ hệ thống. Tìm hiểu cách bảo vệ hệ thống khỏi các lỗi tạm thời và vận hành dịch vụ một cách ổn định ngay cả khi xảy ra sự cố. Thông qua đó, bạn sẽ hiểu được cách nâng cao khả năng phục hồi của hệ thống.

Kiểm soát đồng thời và khóa phân tán (Distributed Lock)

Học nguyên lý của distributed lock để giải quyết vấn đề phát sinh khi nhiều server cùng truy cập vào cùng một dữ liệu đồng thời. Học và triển khai phương pháp đảm bảo tính nhất quán của dữ liệu bằng cách sử dụng external storage như Redis. Thông qua điều này, phát triển khả năng xử lý dữ liệu một cách an toàn trong môi trường đồng thời.

Giám sát hệ thống và khả năng quan sát (Observability)

Học cách nắm bắt trạng thái ứng dụng theo thời gian thực và chẩn đoán vấn đề một cách nhanh chóng. Xây dựng và học tập toàn bộ pipeline giám sát bằng cách thu thập metrics với Prometheus và trực quan hóa thông qua Grafana. Bạn sẽ học được cách tăng tính minh bạch của hệ thống để tối đa hóa hiệu quả vận hành.

Khám phá kiến trúc

Sự phụ thuộc giữa các Module

Event Sourcing

Các Chỉ Số Giám Sát

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

📚 'Dashboard giám sát sử dụng Grafana' Trong khóa học


📚 Trong khóa học 'Gradle cho Multi Module'


📚 'Lập trình hàm để vượt qua giới hạn của @Transactional' Trong buổi học


Công nghệ được đề cập trong khóa học

MySQL

Để xử lý dữ liệu có mối quan hệ liên kết, cơ sở dữ liệu quan hệ MySQL được sử dụng.

Cấu hình JPA, viết Entity và chỉ định mối quan hệ giữa các dữ liệu thông qua phương thức code, bạn sẽ có được cấu trúc linh hoạt cho việc phát triển dịch vụ.

  • Không kết nối với MySQL Database thực tế. Mục tiêu là chỉ viết các câu truy vấn SQL và tiến hành test bằng cách sử dụng H2.

Circuit Breaker

Được triển khai theo cách thức hàm số sử dụng Resilience4j, tạo ra các instance CircuitBreaker độc lập cho từng dịch vụ để quản lý hiệu quả việc cách ly và phục hồi trong các tình huống lỗi. Thông qua điều này, nó nâng cao độ tin cậy của dịch vụ và ngăn chặn sự lan truyền lỗi.

Redis

Sử dụng tính năng khóa phân tán của Redis để đảm bảo tính nhất quán của dữ liệu trong tình huống có nhiều instance.

Kiến trúc CQRS

Mẫu CQRS được áp dụng để tách biệt trách nhiệm của lệnh và truy vấn.

Command và Query được cấu thành thành các module riêng biệt để sử dụng mô hình dữ liệu và kho lưu trữ được tối ưu hóa cho từng loại. Thông qua điều này, việc mở rộng quy mô độc lập và tối ưu hóa hiệu suất cho các tác vụ đọc và ghi trở nên khả thi.

Event Driven Architecture

Kiến trúc dựa trên sự kiện được triển khai để tạo ra sự kết nối lỏng lẻo giữa các dịch vụ. Sử dụng mô hình phát hành-đăng ký sự kiện, các mối quan hệ kết nối vô nghĩa giữa các giao dịch được triển khai một cách lỏng lẻo.

Kiến trúc Multi Module

Kiến trúc đa module được áp dụng để tách biệt các mối quan tâm và thực hiện module hóa.

Sử dụng Gradle để tách các module như bank-api, bank-core, bank-domain, và định nghĩa rõ ràng trách nhiệm cũng như dependency của từng module. Thông qua việc này, chúng ta cải thiện tính tái sử dụng và khả năng bảo trì của code.

Mẫu Theo Dõi Giao Dịch

Để đảm bảo tính nhất quán và khả năng theo dõi của giao dịch, mẫu Transaction Trailing được triển khai.

Sử dụng AOP để theo dõi việc bắt đầu và kết thúc của transaction, đồng thời ghi log trạng thái và kết quả của từng transaction. Điều này giúp việc giám sát và debug transaction trở nên dễ dàng hơn.

Open API (Swagger)

OpenAPI(Swagger) được áp dụng để tài liệu hóa và kiểm thử API.

SpringDoc OpenAPI được sử dụng để tự động tạo tài liệu cho các endpoint của API, schema yêu cầu/phản hồi và phương thức xác thực. Thông qua điều này, nó nâng cao khả năng đọc hiểu và dễ dàng kiểm thử của API, đồng thời tạo điều kiện thuận lợi cho việc hợp tác với các nhà phát triển client.

4 giá trị quan trọng mà chúng tôi trân trọng

1. Bài giảng phải có tính nhân văn.

Dù có thể bị coi là thiếu chuyên môn, tôi nghĩ rằng những bài giảng dễ trình bày không phải là bài giảng thực sự. Thời gian tiến hành debug cũng là một phần của bài giảng.

2. Phải chuyên biệt hóa cho thực tế công việc

Lập trình không phải là nói suông. Bạn có thể cùng thực hiện việc triển khai thực tế và trải nghiệm quá trình hoạt động.

  • Các bạn planner... xin hãy cứu tôi..

3. Phải có ích cho các học viên.

Tôi muốn truyền đạt những khái niệm mà tôi đã áp dụng trong thực tế và thấy hiệu quả. Thông qua khóa học này, bạn có thể trải nghiệm gián tiếp công việc thực tế hoặc nếu đã là người làm thực tế thì có thể thể hiện hiệu suất xuất sắc hơn trong môi trường làm việc.

4. Bài giảng không phải là kết thúc.

Khi tiến hành bài giảng, tôi mong các bạn để lại nhiều câu hỏi và thảo luận. Khóa học này không chỉ được tạo ra từ kiến thức của riêng tôi. Nó cũng tổng hợp ý kiến từ nhiều lập trình viên của các công ty lớn.

  • Tiểu sử ngắn gọn về những người đã giúp đỡ hoàn thành khóa học như sau.


private val supported_one = "Nhà phát triển backend nền tảng KakaoPay"

private val supported_two = "Nhà phát triển máy chủ API Toss Securities"

private val supported_three = "Nhà phát triển máy chủ startup unicorn (yêu cầu giữ bí mật)"

Lưu ý trước khi học

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

  • Được quay bằng Macos M3.

  • Docker được sử dụng một cách cơ bản.

  • java --version : 17.0.12 2024-07-16 LTS

  • Tôi sử dụng IDE thuộc dòng JetBrain.

  • Sử dụng Gradle để build.

  • Không đề cập đến cơ sở hạ tầng.

😍 Các chủ đề hay nên xem cùng

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

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

  • Nhà phát triển mong muốn học kỹ thuật xử lý logic nghiệp vụ phức tạp, vượt ra khỏi CRUD đơn giản.

  • Lập trình viên muốn trau dồi kỹ năng thiết kế

  • Người nhập môn kiến trúc MSA

  • Nhà phát triển muốn tìm hiểu về kiến trúc hướng sự kiện và chiến lược tách dịch vụ.

  • Lập trình viên muốn học dự án thực tế ứng dụng Spring + Kotlin

Xin chào
Đây là

3,329

Học viên

250

Đánh giá

101

Trả lời

4.6

Xếp hạng

16

Các khóa học

자기 소개

집에서 빈둥대다 개발에 흥미를 느껴 개발 공부를 시작하였고 현재는 판교에서 플랫폼 서버 개발을 담당하여 진행하고 있습니다.

 

제가 공부를 했던 방법과 실무에서 접하실 수 있는 여러가지 문제점들과 해결책을 여러분들에게 제공하고 싶어 지식공유자 활동을 이어나가고 있습니다.

 

강의는 오로지 저만의 지식을 통해 만들어지지 않습니다. 모든 강의는 함께하시는 분들이 계십니다.

 

지식공유자 경력

[前] 샌드박스 블록체인 개발자

[前] 넥슨 자회사 백엔드 개발자

[] 판교에서 고여가는 서버 개발자

 

인터뷰 이력

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

Tất cả

34 bài giảng ∙ (6giờ 41phú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ả

22 đánh giá

4.6

22 đánh giá

  • ddddve님의 프로필 이미지
    ddddve

    Đánh giá 7

    Đánh giá trung bình 5.0

    5

    32% đã tham gia

    Tôi là một nhà phát triển máy chủ đang làm việc tại Kakao, người đã cùng suy nghĩ về code và kiến trúc khi quay khóa học này và đã tham gia!! Lần này, tôi đã chuẩn bị dự án tập trung nhiều hơn vào phần kiến trúc, đồng thời cũng bao gồm phần xử lý đồng thời và các mẫu phục hồi ứng dụng. Tôi hy vọng khóa học này sẽ là một khóa học tốt giúp mở rộng tầm nhìn của các bạn và nhìn được bức tranh lớn!! Rất mong nhận được sự quan tâm của các bạn! 🩷

    • jhong
      Giảng viên

      Cảm ơn bạn đã luôn hỗ trợ!! Cùng tạo bài giảng tới, chia sẻ kiến thức hay cho nhiều người nhé 😊😊

  • de님의 프로필 이미지
    de

    Đánh giá 10

    Đánh giá trung bình 5.0

    5

    62% đã tham gia

    Tôi cho rằng đây là một bài giảng rất giá trị về việc triển khai chức năng thực tế và quản lý máy chủ, và việc bạn đã cho thấy thực tế cả quá trình gỡ lỗi, dù chắc hẳn có nhiều rủi ro, đã giúp ích rất nhiều. Bản thân nội dung đã hay rồi mà dường như còn có nhiều điều có thể học hỏi được từ nhiều khía cạnh khác nữa. Tôi đã học được rất nhiều từ bài giảng này.

    • jhong
      Giảng viên

      Cảm ơn bạn đã để lại đánh giá tốt. devHand!! Tôi rất vui vì bài giảng này dường như đã là một chủ đề hay đối với devHand!! Tôi sẽ gặp lại bạn với một bài giảng chất lượng hơn vào lần tới. Cảm ơn bạn!

  • eightee724277님의 프로필 이미지
    eightee724277

    Đánh giá 5

    Đánh giá trung bình 5.0

    5

    97% đã tham gia

    Tôi nghĩ đây thực sự là một khóa học dạng dự án rất tuyệt vời. Tôi đã có thể học được những phần mà trước đây tôi không biết, và nhìn lại thì so với giai đoạn đầu, càng xem càng thấy hấp dẫn và đã học được rất nhiều trong khoảng thời gian này. Cảm ơn bạn.

    • jhong
      Giảng viên

      Xin chào, rất vui vì bạn thích số 8! Bản thân tôi cũng muốn cung cấp khóa học theo phương pháp dự án, nên tôi rất biết ơn khi bạn để lại đánh giá tích cực về điều này!

  • hyunwookim11085590님의 프로필 이미지
    hyunwookim11085590

    Đánh giá 4

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Tôi đã xem rất thú vị và hay. Tôi sẽ ủng hộ và có kế hoạch xem các bài giảng khác. Tôi nghĩ sẽ tốt nếu nghe với suy nghĩ là sẽ thử triển khai nhẹ nhàng một lần theo từng danh mục rồi tiến hành. Vì một bài giảng này không thể chứa đựng hết tất cả nội dung.

    • jhong
      Giảng viên

      Xin chào, cảm ơn bạn đã tham gia bài giảng của Hyunwoo Kim! Tôi muốn giới thiệu với bạn nhiều kiến trúc khác nhau cùng với cách sử dụng và ứng dụng của chúng. Rõ ràng, nội dung này cũng là một phương pháp phát triển thường không dễ dàng và đòi hỏi nhiều công cụ phải được sử dụng cùng nhau. Tôi không thể đề cập đến phần này, nhưng như bạn đã nói, tôi muốn thử triển khai một cách nhẹ nhàng để nâng cao mức độ hiểu biết và chia sẻ với bạn. Trong tương lai, tôi sẽ trở lại với những bài giảng tốt hơn! Cảm ơn bạn!

  • ureview229499님의 프로필 이미지
    ureview229499

    Đánh giá 7

    Đánh giá trung bình 5.0

    5

    85% đã tham gia

    Đây cũng là nội dung tôi tiếp xúc lần đầu, và có vẻ như là một bài giảng có thể giúp mở rộng tầm nhìn của tôi. Rất hữu ích từ góc độ quản lý dự án và kiến trúc. Cảm ơn bạn.

    • jhong
      Giảng viên

      Xin chào bạn 개발 잘하고 싶다. Cảm ơn bạn đã để lại nhận xét như thế này. Tôi muốn thử đề cập đến các phương pháp quản lý và phát triển từ nhiều góc độ khác nhau, thay vì chỉ theo cách phát triển thông thường. Trong tương lai, tôi sẽ trở lại với những bài giảng tốt hơn! Cảm ơn bạn.

Ưu đãi có thời hạn, kết thúc sau 1 ngày ngày

1.432.475 ₫

23%

1.880.123 ₫

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

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!