NestJS: TEAM đã tách Monolithic sang Microservices hoàn chỉnh và mạnh mẽ như thế này | Hướng dẫn

Nội dung bài viết

Video học lập trình mỗi ngày

Hiện tại dự án của chúng tôi vẫn sử dụng Monolithic và nó vẫn tốt đấy thôi... Microservices rất phức tạp, nó tăng thêm mã code, tăng lên lực lượng code, thêm chi phí... Được rồi, những ai đã phạm phải sai lầm đều có những lời khuyên có giá trị nhưng chi đúng với những sai lầm đó mà thôi.

Nguyên tắc thiết kế Microservices

Tôi đã làm việc với Microservices và đương nhiên muốn bước đến các service micro thì chắc chắc một điều rằng đã triển khai Monolithic. Thời đại này ngay cả những bạn sinh viên năm 1, 2... cũng biết vì sao các hệ thống microservice lại mang nhiều lợi thế so với các kiến trúc cũ (nhiều modules trong một serivce).

Vì rất đơn giản đó là trong cuộc sống cũng tương tự, một lớp chia ra nhiều tổ để dễ quản lý cũng nhưng có sự phân công lao động rõ rệt... Một công ty chia nhiều phòng ban, mỗi phòng ban có một nhiệm vụ làm sao hoàn thành một dự án của công ty có sự đóng góp của tất cả các phòng ban...

NHƯNG QUAN TRỌNG hãy cho phép các service giao tiếp với nhau không nên qua Rest API Http, mà hãy sử dụng TCP or GRPC vì sao? Hãy xem giải thích cuối bài viết...

Tôi muốn bạn đọc bài post Tóm tắt hay về nguyên tắc Microservices

Tương tự trong ngôn ngữ lập trình, việc tách dự án từ monolithic trở thành microservice thì nói chúng rất KHÓ, việc này phải có sự phối hợp giữa các cá nhân có kinh nghiệm xử lý bên canh đó việc chọn đúng NGÔN NGỮ cũng xem như là sự thành công 20%. Vì vậy nếu tốt nhất hãy chọn JAVA và NestJS, vì sao?

Kiến trúc monolithic

JAVA và NestJS đã gần như hoàn thiện cho việc tổ chức dự án có quy mô lớn. Việc tích hợp IoC, Injection, DI... quá hoản hảo cho việc thiết kế dự án cấp Business. Mà những ai đã xem Series - bán vé tàu tết -lượng đồng thời cao được triển khai với JAVA và NestJs thì không có gì xa lại với sự mạnh mẽ của hai ngôn ngữ này.

Ngược lại, việc tham gia dự án Microservices cũng có nhiều nhược điểm, chi phí, con người, communication cũng tăng lên đáng kể. Tôi không thích sự hào nhoáng của nó, thật sự là như vậy. Chỉ khi thật sự cần "tiến hoá" chúng tôi mới tiến thành xây dựng mới. Còn lại nếu như đang yên ổn xin đừng động vào nó.

Kiến trúc Microservices

Vì vậy trong giai đoạn đầu, các bạn không nên ảo tưởng tạo kiến trúc microserice ngay từ đầu, điều đó không nên. Hãy tổ chức cho mình một service monolithic và mục tiêu lúc này hướng đến sự ổn định về logics, sau đo hãy thử nhiệm về performance, điều đó giúp chúng ta đơn giản hoá và tập trung quân vào các nghiệp vụ. Về sau, nếu nghiệp vụ và kiến trúc cụ thể phù hợp với triết lý thiết kế microservices, chúng ta có thể tách các service ra..

Build Microservice sử dụng NestJS

Tôi tin rằng mọi người đều đã có chút hiểu biết về NestJS khi chúng ta cùng nhau đi từ Series 1 - 36: Con đường làm nên một backend Nestjs. Nói một cách đơn giản, NestJS là một framework phía máy chủ Node.js được viết bằng TypeScript. Máy chủ HTTP cơ bản được hỗ trợ bởi Express. Không giống như Koa và Express, NestJS chú trọng hơn đến thiết kế kiến trúc, cho phép dự án phía máy chủ JS ban đầu lỏng lẻo có thể có nhiều mẫu thiết kế và thông số kỹ thuật đa dạng ngay từ đầu.

NestJS cũng sử dụng nhiều mẫu thiết kế từ các framework như Angular và Spring Boot, chẳng hạn như DI, AOP, Filter, Intercept, Observable, v.v.

Nest là một framework tiến bộ với hỗ trợ tích hợp cho microservice. Chúng ta có thể sử dụng nó để thử nghiệm xây dựng các ứng dụng web phức tạp. Bây giờ, tôi sẽ cùng bạn khám phá từng bước cách xây dựng một ứng dụng microservice Nest từ đầu.

Kịch bản: Từ đầu chúng ta sẽ có một service có 2 modules chạy chung: modules/orders và modules/products giờ chúng tôi sẽ tách ra.. Tôi nói hoa mỹ không được nên tôi sẽ để lại LINK cho các bạn xem về hành trình Microservices ở tập thứ 36: NestJS (36): Tách dự án Monolithic thành Microservice diễn ra thế này. Giao tiếp là TCP thay vì HTTP

Có hai câu hỏi ở đây, việc tách một dự án thành nhiều services khác nhau vậy quản lý Git như thế nào? Thứ hai là việc authentication giứa các dịch vụ diễn ra ra sao? Xìn mời theo dõi tiếp...

Có thể bạn đã bị missing