Microservices

Sự phát triển của microservices là một tiến bộ đáng kể trong phát triển ứng dụng và triển khai. Với microservices, một ứng dụng được phát triển, hoặc được tái cấu trúc thành các services riêng biệt “nói chuyện” với nhau theo cách được xác định rõ ràng – thông qua các API. Mỗi microservice được tổ chức độc lập, có database riêng của nó (điều này có ý nghĩa rất quan trọng), và có thể được update độc lập với những service khác.

2

Hình ảnh minh họa cách các microservices trong ứng dụng gọi xe tương tác với nhau

Nguồn: https://www.nginx.com/

Việc chuyển sang microservices sẽ giúp việc phát triển ứng dụng nhanh hơn và dễ quản lý hơn, yêu cầu ít nhân lực hơn để triển khai nhiều tính năng mới hơn. Các thay đổi có thể được thực hiện và triển khai nhanh hơn và dễ dàng hơn. Ứng dụng được thiết kế như một tập các microservices dễ dàng chạy trên nhiều máy chủ với cân bằng tải (load balancing), giúp dễ dàng xử lý các yêu cầu tăng đột biến và nhu cầu tăng theo thời gian, đồng thời giảm thời gian chết (downtime) do các vấn đề về phần cứng hoặc phần mềm.

Microservices là một phần quan trọng trong các tiến bộ đang thay đổi cách chúng ta làm việc ngày nay. Các kỹ thuật Agile software development, chuyển các ứng dụng lên cloud, văn hóa DevOps, tích hợp liên tục và triển khai liên tục (CI / CD), và việc sử dụng containers đều được sử dụng cùng với microservices để tạo nên cuộc cách mạng hóa trong phát triển và phân phối ứng dụng

Các bài viết được dựa trên trang web NGINX được viết bởi Chris Richardson, bao gồm 7 bài viết mô tả các khía cạnh chính của microservices trong thiết kế và phát triển ứng dụng, bao gồm cả việc chuyển từ ứng dụng monolithic sang microservices. Đan xen giữa các bài viết lý thuyết, mình sẽ cố gắng lồng các bài thực hành việc viết các ứng dụng microservices với Spring Boot để mang đến cái nhìn thực tiễn nhất.

Nội dung chính trong phần lý thuyết bao gồm:

  1. Giới thiệu về Microservices – giới thiệu rõ ràng và đơn giản về microservices, từ khái niệm đến thực tế cách các microservices được triển khai và duy trì
  2. API Gateway – API Gateway là điểm đầu vào duy nhất cho toàn bộ ứng dụng dựa trên microservices
  3. Inter-process Communication – Một khi bạn tách một ứng dụng nguyên khối thành từng phần riêng biệt – các microservices – khi đó các service cần nói chuyện với nhau. Và có nhiều lựa chọn giao tiếp giữa các process, điển hình như REST.
  4. Service Discovery – Khi các service đang chạy trong một môi trường động, việc tìm kiếm chúng khi cần không phải là vấn đề đơn giản. Cùng xem cách giải quyết vấn đề đó trong bài này nhé.
  5. Event-Driven Data Management – Thay vì chia sẻ một database toàn cục (hoặc hai) trên một ứng dụng nguyên khối, mỗi microservice sẽ tự biểu diễn và lưu trữ dữ liệu riêng của nó. Điều này mang đến sự linh hoạt tuyệt vời, nhưng cũng có thể gây ra sự phức tạp.
  6. Chiến lược triển khai (Deployment Strategy) cho Microservices – Trong thế giới DevOps, cách bạn làm mọi thứ cũng quan trọng như những gì bạn đặt ra để làm ngay từ đầu. Chris mô tả những patterns chính cho việc triển khai microservices để có thể đưa ra lựa chọn sáng suốt cho bạn
  7. Tái cấu trúc Monolith sang Microservices – Trong một thế giới hoàn hảo, chúng ta sẽ luôn có được thời gian và tiền bạc để thay đổi, cập nhật phần mềm với các công nghệ, công cụ và phương pháp mới nhất và tốt nhất. Nhưng trong bài viết này, Chris sẽ trình bày một chiến lược để làm điều này một cách hợp lý cho việc chuyển đổi từ Monolith sang Microservices. Một … mảnh … nhỏ … tại … một … thời điểm.

Phần thực hành Building Microservices Application sẽ bao gồm các bài viết sau:

Microservices Pattern

Mircoservices vs SOA

Link ebook (NGINX) tiếng Anh:
https://drive.google.com/file/d/0BxkwnahvdeldWGtFbTRjNzZnVHEyZjV3TGJYT1lUQ2VyRlFJ/view?usp=sharing

Read more:
https://www.nginx.com/blog/microservices-from-design-to-deployment-ebook-nginx/

Đây là loạt bài viết về Microservices mình đã đọc, đúc kết và sưu tầm được trong quá trình tìm hiểu về nó. Hi vọng nó cũng giúp ích được cho bạn trong quá trình design và deploy các ứng dụng microservices.

Tổng hợp và dịch by edwardthienhoang