The argument in favor of using filler text goes something like this: If you use any real content in the Consulting Process anytime you reach.

  • img
  • img
  • img
  • img
  • img
  • img

Get In Touch

Hệ thống hạ tầng Microservices

image

Microservices là gì?

Trước khi đi vào Microservices, chúng ta cần hiểu và biết cách vận dụng:

Công nghệ “đóng gói vào container” (không biết dịch vậy có ổn không, tên tiếng Anh là “Containerization”)

là một phương thức để đóng gói và triển khai ứng dụng cùng với môi trường mà nó chạy. Nó cô lập ứng dụng và môi trường chạy của nó khỏi cơ sở hạ tầng cơ bản, giúp tăng tính di động và hiệu quả, đảm bảo rằng ứng dụng chạy nhất quán trên mọi hệ thống.

Docker

Docker là một nền tảng phần mềm được sử dụng để tự động hóa quá trình triển khai và quản lý ứng dụng trong môi trường được gọi là containers. Cái này chắc không còn cần phải giải thích nhiều nữa ha, Docker bây giờ đã quá nổi tiếng và gần như đã trở thành 1 kiến thức căn bản cần phải có trong giới lập trình viên rồi.

Kubernetes

Kubernetes là một hệ thống mã nguồn mở để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng được chứa trong containers. Nó giúp quản lý các cluster của containers, tối ưu hóa việc sử dụng tài nguyên và đảm bảo sự ổn định của ứng dụng. Kubernetes cung cấp một framework để chạy các hệ thống phân tán một cách mạnh mẽ và linh hoạt. Nó hỗ trợ việc tự phục hồi, tự mở rộng, cân bằng tải, và cung cấp cơ chế quản lý cấu hình và bí mật. Kubernetes đã trở thành tiêu chuẩn trong ngành công nghiệp cho việc quản lý container ở quy mô lớn.

Microservices

là một kiến trúc phần mềm nơi ứng dụng được xây dựng dưới dạng một bộ sưu tập các dịch vụ nhỏ, độc lập, và kết nối với nhau thông qua API. Mỗi dịch vụ trong mô hình này tập trung vào việc thực hiện một chức năng cụ thể, hoạt động độc lập và có thể được phát triển, triển khai, và mở rộng một cách riêng biệt. Kiến trúc này hỗ trợ tính linh hoạt, dễ dàng mở rộng, và cho phép sử dụng đa ngôn ngữ lập trình cũng như công nghệ. Và cả Docker lẫn Kubernetes đều sinh ra để phục vụ mục đích triển khai mô hình Microservices này.

Ưu điểm & nhược điểm của Microservices

Ưu điểm

  1. Tính Linh Hoạt và Độc Lập: Mỗi dịch vụ trong kiến trúc microservices hoạt động độc lập, cho phép phát triển, triển khai, và mở rộng từng dịch vụ một cách linh hoạt mà không ảnh hưởng đến toàn bộ hệ thống.
  2. Dễ Dàng Bảo Trì và Cập Nhật: Nhỏ gọn và chuyên biệt, từng microservice có thể được bảo trì, cập nhật, hoặc thay thế mà không làm gián đoạn dịch vụ khác.
  3. Khả Năng Mở Rộng Cao: Có thể mở rộng từng dịch vụ cụ thể theo nhu cầu, thay vì phải mở rộng toàn bộ ứng dụng.
  4. Thích Ứng Tốt Với Công Nghệ và Ngôn Ngữ Lập Trình Đa Dạng: Mỗi microservice có thể được xây dựng và duy trì bằng công nghệ hoặc ngôn ngữ lập trình khác nhau, phù hợp với yêu cầu cụ thể của dịch vụ đó.

Nhược điểm

Vẫn giữ vững quan điểm của mình về mọi thứ, cái gì cũng có 2 mặt của nó, chúng ta không nên “thần thánh hóa” bất kỳ công nghệ nào, mà chỉ nên cố gắng hiểu rõ về nó nhất có thể để có thể ứng dụng vào hoàn cảnh phù hợp nhằm mục đích mang lại hiệu quả cao nhất.

Vậy thì, theo mình mô hình Microservices có những nhược điểm như sau:

  1. Phức Tạp Trong Quản Lý: Quản lý nhiều dịch vụ độc lập đồng nghĩa với việc phải quản lý nhiều cơ sở dữ liệu, giao tiếp giữa các dịch vụ, và đảm bảo tính nhất quán.
  2. Tài Nguyên và Chi Phí Cao: Cần nhiều tài nguyên hệ thống hơn và có thể gây ra chi phí cao hơn so với kiến trúc monolithic, đặc biệt trong quá trình triển khai và vận hành.
  3. Thách Thức Trong Testing và Debugging: Việc kiểm thử và tìm lỗi trở nên phức tạp hơn do sự tương tác giữa nhiều dịch vụ khác nhau.
  4. Khả Năng Gặp Sự Cố Mạng và Hiệu Suất: Việc phụ thuộc nhiều vào giao tiếp mạng giữa các dịch vụ có thể dẫn đến vấn đề về độ trễ và hiệu suất.

Xây dựng hạ tầng Microservices cho công ty

Nhờ vào thời gian đồng hành cùng ngân hàng nọ như đã nói ở trên, đội ngũ của mình đã học hỏi được rất nhiều kiến thức và kinh nghiệm quý giá, mà mình nghĩ rằng có bỏ ra bao nhiêu tiền đi học cũng khó mà có được.

Tụi mình đã tránh được những khó khăn, rào cản và nâng trình bảo mật cho hệ thống hạ tầng Microservices hiện tại của TOP Group, tạo tiền đề cho một hệ thống dễ dàng mở rộng quy mô (scale up) với tính sẵn sàng cao (high availability), nơi vận hành và chắp cánh cho hàng trăm giấc mơ khởi nghiệp dành cho đối tác của TOP Group.


Gần 96 dự án (khách hàng) và hơn 300 ứng dụng đang triển khai trên cùng 1 hệ thống hạ tầng tại TOP GROUP

(xin phép dành 2 phút để flex tí)

Xây dựng hạ tầng dựa theo mô hình Microservices sao cho hiệu quả?

Sau rất nhiều phép thử, mình rút ra được sợi dây kinh nghiệm này:

  1. Chia Nhỏ Tính Năng: Phân chia ứng dụng thành các dịch vụ nhỏ, mỗi dịch vụ chịu trách nhiệm một phần chức năng cụ thể, giúp dễ dàng quản lý và mở rộng.
  2. Độc Lập và Tự Chủ: Đảm bảo mỗi microservice có thể hoạt động và phát triển một cách độc lập, giảm thiểu sự phụ thuộc lẫn nhau.
  3. Sử dụng Containers: Sử dụng công nghệ container như Docker để đóng gói và triển khai từng microservice, giúp cải thiện tính cô lập và di động.
  4. Orchestration với Kubernetes: Áp dụng công cụ như Kubernetes để tự động hóa việc triển khai, mở rộng và quản lý các microservice. Cũng phải nói thêm rằng tính phức tạp của Kubernetes cũng chính là một rào cản to lớn trong việc adopt nó, nhưng tin mình đi, điều này hoàn toàn xứng đáng tới từng xu.
  5. APIs và Giao Tiếp Mạng: Xây dựng các API rõ ràng và hiệu quả để cho phép giao tiếp giữa các microservice.
  6. Quản Lý Dữ Liệu Độc Lập: Mỗi microservice nên có cơ sở dữ liệu riêng biệt hoặc cách quản lý dữ liệu độc lập, giúp tránh sự phụ thuộc dữ liệu giữa các dịch vụ.
  7. Giám Sát và Bảo Mật: Triển khai các giải pháp giám sát và bảo mật toàn diện để theo dõi trạng thái và đảm bảo an ninh cho môi trường microservices.

Kết luận

Microservices thì cũng có “this” có “that”, nhưng rõ ràng sức mạnh và hiệu quả của nó là không thể bàn cãi được. Điểm trừ có lẽ là độ phức và chi phí vận hành, và mình sẽ dành riêng 1 bài khác để nói về cách tụi mình tối ưu hóa cũng như khắc phục được điểm yếu này của Microservices.

Chúc mọi người 1 tuần mới nhiều năng lượng, và một lần nữa, cảm ơn đã đọc bài!