Microservice là gì? Triển khai microservice với nodejs, mongoose và rabbitmq

Nội dung bài viết

Khi bạn ở level1 của giai đoạn lập trình viên thì bạn không quan tâm về những khái niệm Microservice, monolithic, hay distributed system. Okay, không sao, nhưng khi bạn bắt đầu lên level 2 thì mọi chuyện sẽ khác. Bạn vô tình nghe những khái niệm nay nhiều hơn và tần suất cao hơn khi bạn nâng cấp theo từng level. Xem thêm: Các cấp độ lập trình viên từ level1 đến level4

Và hôm nay, bạn chưa nghe điều đó bao giờ, hay đã nghe loáng thoáng, hay đã biết nhiều, thì bạn vẫn nên đọc bài viết này. Bởi vì bài viết này không phải dân SEO, mà một người làm kỹ thuật đúc kết lại cho hay. Kỹ thuật thì ngôn từ sẽ quen thuộc hơn đúng không? Zô nào... À khoan, một số câu hỏi trước khi vào bài viết.

Xem thêm: Con đường trở thành kiến trúc sư

Hãy nhớ lần cuối cùng bạn mua hàng trực tuyến ở shopee, tahofo, tiki...

  • Bạn có sử dụng thanh tìm kiếm trên trang web để duyệt qua các sản phẩm không?
  • Bạn có nhận được những đề xuất các sản phẩm liên quan?
  • Bạn có nhận được điểm tích luỹ khi đặt hàng thành công?

Ok, để đó đừng trả lời, đọc tiếp bài viết...

Microservice là gì?

Kiến trúc microservice là gì?

Khi thiết kế kiến trúc một hệ thống, kiến trúc logic được thực hiện đầu tiên, sau đó là kiến trúc vật lý. Sau khi bạn nhận được các yêu cầu, sau khi ước tính số lượng người dùng và tính đồng thời, hãy tính xem một máy chủ ứng dụng duy nhất có thể đáp ứng các yêu cầu hay không. Nếu số lượng người dùng chỉ một số ngưới hay hàng trăm người có thể được xử lý bởi một ứng dụng duy nhất, tức là tất cả các ứng dụng đều được triển khai trong một máy chủ ứng dụng. Nếu đó là một số lượng lớn người dùng và một số chức năng được truy cập thường xuyên hoặc một số chức năng được tính toán như cá nhân hoá người dùng, thì đến lúc bạn nên tháo rời ứng dụng thành nhiều hệ thống con và mỗi hệ thống chịu trách nhiệm về chức năng riêng của nó, đây chính là kiến trúc microservice.

Kiến trúc microservice là gì?

Giờ bạn đã hiểu hơn chưa? Nếu rồi, bạn có thể rời đi được rồi. Nếu chưa hoặc muốn thêm nữa, xin mời đọc tiếp.

Monolithic architecture là gì

Để củng cố khái niệmmicroservice la gi thì tôi tiếp tục giúp bạn hiểu sâu hơn về điều này. Đầu tiên muốn hiểu được microservice la gì? Thì bạn nên quay lại thời kỳ trước, trước tiên bạn phải hiểu những cái không phải là microservices. Đó chính là Monolithic mà chúng tôi đã nhắc trên đầu bài viết.

Monolithic là gì?

Monolithic architecture còn gọi là kiến trúc đồ đá, một kiến trúc nguyên khối tương đối thô sơ, một kiến trúc có ba cấp điển hình front-end (Web/mobile) + lớp logic nghiệp vụ trung gian + lớp cơ sở dữ liệu. Giống như hồi xưa học vậy đó. Hầu như ứng dụng của Monolithic architecture dễ triển khai và thử nghiệm hơn. Trong giai đoạn đầu của dự án, ứng dụng nguyên khối có thể chạy tốt nhất và khai thác triệt để thử nghiệm của mình.

Thông thường, ngược lại với microservices là một ứng dụng nguyên khối, tức là một ứng dụng trong đó tất cả các chức năng được đóng gói trong một đơn vị độc lập. Từ các ứng dụng nguyên khối đến microservices không thể đạt được trong một sớm một chiều, nó là một quá trình phát triển dần dần. Không cần phải lấy ví dụ lại nữa vì trước bài viết này chúng tồi đã lấy ứng dụng siêu thị trực tuyến làm ví dụ minh họa cho quá trình này. Bạn có thể tham khảo lại bài viết tại đây or có thể truy cập vào link trên.

Microservice và monolithic

Tiếp đến đây chúng ta sẽ nói về hai thằng này (Microservice và monolithic) một chút trước đi vào phần kết của bài viết này.

Kiến trúc microservice thay đổi theo xu thế hiện nay, nó làm cho sự phân công lao động của toàn bộ hệ thống rõ ràng hơn và trách nhiệm rõ ràng hơn. Mọi người đều tận tâm cung cấp dịch vụ tốt hơn cho người khác. Trong thời đại của các ứng dụng nguyên khối (monolithic), các chức năng trong hệ thống chung thường không có sự phối hợp rõ ràng. Cuối cùng, hoặc làm những việc của riêng họ, và mọi người thực hiện lại nó; hoặc một người ngẫu nhiên (thường là người có năng lực hơn hoặc nhiệt tình hơn) sẽ làm điều đó trong ứng dụng mà anh ta chịu trách nhiệm.

Trong trường hợp thứ hai đang nói đến nguyên khối nha, ngoài việc chịu trách nhiệm về ứng dụng của chính mình, người này còn có trách nhiệm cung cấp cho người khác các chức năng công cộng này - và không ai chịu trách nhiệm về chức năng này, chỉ vì anh ta có khả năng hơn / nhiệt tình hơn. Cuối cùng, mọi người đều không muốn cung cấp các chức năng công cộng. Về lâu dài, những người trong đội dần trở nên độc lập và không còn quan tâm đến thiết kế kiến trúc tổng thể.

Từ góc độ này, việc sử dụng kiến trúc microservice cũng cần có những điều chỉnh tương ứng đối với cơ cấu tổ chức. Do đó, việc chuyển đổi microservices cần có sự hỗ trợ của lập trình viên có nhiều kinh nghiệm lâu năm, và chinh chiến mọi mặt trận.

Distributed System là gì?

Nói đến kiến trúc Microservice mà không nhắc đến Distributed System là gì thì quả thật là đáng tiếc, nhưng bài viết đã quá dài rồi, chúng ta có thể nói điều đó sau. À theo tôi được biết 99% lập trình viên đều cho rằng kiến trúc Microservice chính là kiến trúc hệ thống phân tán. Không hẳn như vậy, hay nói cách khác là SAI. Bài sau sẽ nói tiếp.

Triển khai microservice với nodejs, mongoose và rabbitmq

Hiện tại phần 1 của Triển khai microservice với nodejs, mongoose và rabbitmq đã có rồi. Trên link youtube các bạn có thể theo dõi phần đầu Authen Service - MicroService của bài viết.

Xin chào!!!

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