
Microservices có phải đang được cường điệu hoá?
views
Tại TOP Group, chúng tôi đã triển khai Microservices từ năm 2017 cho hệ thống hạ tầng nội bộ của công ty, và cho các khách hàng đối tác trong và ngoài nước, với hơn 5 năm kinh nghiệm, trải qua những khó khăn, bất cập, lẫn sự cố đau thương, đây là những gì chúng tôi nhận thấy…
Những điểm mạnh của Microservices
Công nghệ sinh ra là để giải quyết các vấn đề của con người.
Microservices được phát triển để giải quyết các vấn đề mà kiến trúc nguyên khối (monolithm) không thể làm được.
Kiến trúc nguyên khối (monolithm)
Với chiến lược “chia để trị” bằng cách chia nhỏ dự án ra thành những module dịch vụ, từ đó các nhà phát triển (lập trình viên hoặc đội nhóm nhỏ) có thể phát triển, duy trì và triển khai từng dịch vụ riêng lẻ một cách độc lập.
Kiến trúc Microservices
Thậm chí, mỗi service hoàn toàn có thể sử dụng một ngôn ngữ lập trình khác nhau mà không ảnh hưởng gì đến mục đích chung cuối cùng.
Như vậy, một dự án hay ứng dụng có thể phát hành bất cứ khi nào các dịch vụ nhỏ được cập nhật mới, mà không cần phải chờ toàn bộ module hoàn thành xong cùng một lúc như kiến trúc nguyên khối. Dự án sẽ nhanh chóng được đưa lên môi trường production hơn, khả năng mở rộng quy mô cũng tốt hơn (scale better).
Nói về việc “scale better”, không thể không kể đến việc mở rộng quy mô máy chủ, ngày trước với chỉ một máy chủ cứng (metal server) hay máy chủ cloud (cloud server), mỗi khi cần nâng cấp, bạn phải đưa toàn bộ máy chủ ngoại tuyến (offline), thực hiện cập nhật, rồi đưa vào hoạt động trực tuyến (online) trở lại, khiến người dùng phải gặp một thời gian không truy cập được nhất định (downtime). Để hạn chế vấn đề này, các anh IT phải cấu hình thêm các máy chủ dự phòng và các bộ cân bằng tải phức tạp, tốn nhiều công sức lắp đặt & bảo trì. Còn với Microservices, việc này trở nên đơn giản hơn, thậm chí tự động hóa tốt hơn rất nhiều!
Hiện nay, hầu như tất cả các tập đoàn lớn trên thế giới đã & đang sử dụng mô hình kiến trúc này trong hạ tầng của họ, điều này chứng minh sự hiệu quả không thể chối cãi của Microservices…
Không bất kỳ thứ gì là hoàn hảo
Tuy vậy, điểm mạnh của microservices đôi khi lại là điểm yếu của chính nó…
Chúng ta cũng không nên thần thánh hóa một công nghệ nào đó, mà nên hiểu rõ để biết khi nào thì nên sử dụng cái gì, còn khi nào thì không, không phải cứ chạy theo “trend” của các công ty lớn một cách mù quáng thì sẽ thành công giống như họ, đằng sau sự hào nhoáng, bao giờ cũng có sự đánh đổi…
Việc chia nhỏ các service ra làm cho việc quản lý trở nên phức tạp hơn, các service trao đổi dữ liệu với nhau cũng cần chặt chẽ hơn, nếu không có sự quản lý chặt chẽ này, khi có vấn đề xảy ra - nhất là về mặt dữ liệu & phân quyền - bạn sẽ không biết phải đè đầu service nào mà trách móc…
Để làm được điều này, bạn cần những lập trình viên có kinh nghiệm (senior dev & devops), những người thực sự hiểu được những gì đang hoạt động phía sau màn hình. Trong bối cảnh khát nhân lực ngành IT như hiện nay, khung lương của nguồn nhân lực này khá cao, và tốn kém nhiều chi phí cho doanh nghiệp…
Hơn nữa, việc chia nhỏ service ra khiến cho việc sử dụng tài nguyên hạ tầng trở nên nhiều hơn, ngoài chi phí nhân lực quản lý & phát triển như đã đề cập ở trên, thì chi phí hạ tầng cũng tăng cao.
Các công nghệ Microservices nổi bật
Một vài công nghệ hạ tầng với kiến trúc microservices nổi bật có thể kể đến như: Docker Swarm, Kubernetes, Nomad,… cùng với đó là những nhà cung cấp dịch vụ nổi tiếng như AWS, Google Cloud, Azure,…
Tuy nhiên, nếu phải chọn ra người chiến thắng…
Cuộc chơi của gã khổng lồ Kubernetes
…thì Kubernetes chắc chắn là ứng cử viên sáng giá nhất. Được phát triển trong nội bộ từ rất lâu bởi Google, và được Google phát hành dịch vụ giải pháp vào năm 2017 đến cộng đồng. Kubernetes - hay còn gọi là K8S - đã nhanh chóng trở thành giải pháp hàng đầu trong hạ tầng kiến trúc Microservices.
Hiện nay, hầu như các nhà cung cấp hạ tầng trên thế giới đều phân phối giải pháp Kubernetes này, như Google Cloud (tất nhiên rồi), AWS, Azure, Terraform, Alibaba,…
Trong nước, các tên tuổi lớn trong ngành như FPT, Viettel, VTC,… cũng nhanh chóng bắt kịp xu hướng và phân phối hạ tầng với công nghệ Kubernetes đến các doanh nghiệp.
Thậm chí, bạn cũng có thể tự xây dựng một hạ tầng K8S cho riêng mình.
Tự xây dựng & quản lý hạ tầng Kubernetes
Việc này chắc chắn là “nhức nhối” (painful), vì đòi hỏi nhiều kiến thức chuyên môn cao, bạn cần một đội ngũ kỹ sư thực sự hiểu rõ cách thức vận hành của từng khái niệm bên trong công nghệ K8S, để có thể kết hợp với việc lắp đặt các máy chủ cứng và hệ thống mạng (networks) kết hợp lại với nhau, và vận hành nó một cách trơn tru.
Trong quá trình đó có thể bạn sẽ cần sử dụng đến các công cụ nổi tiếng như:
- K9s
- Rancher
- Hay bản thân Kubernetes Dashboard (Dashboard + Kubectl + Kubeadm)
- …
Việc tự xây dựng và quản lý một kiến trúc phức tạp như thế này có thể giúp bạn tự làm chủ và cân đối ngân sách hạ tầng trước mắt, nhưng lại ngốn đi ngân sách nhiều hơn cho việc vận hành và bảo trì hạ tầng.
Thay vào đó, bạn có thể cân nhắc đến việc sử dụng…
Kubernetes trên hạ tầng đám mây (Cloud)
Như đã đề cập ở trên, hầu hết các nhà cung cấp hạ tầng đều đã hỗ trợ giải pháp triển khai microservices với Kubernetes, họ sẽ giúp bạn xử lý những giai đoạn đau thương bên trên với kinh nghiệm của mình, đổi lại là một mức phí dịch vụ tương xứng.
Như vậy, doanh nghiệp & đội ngũ của bạn chỉ cần tập trung vào việc phát triển ứng dụng và hệ thống, thay vì loay hoay với các vấn đề hạ tầng phức tạp.
Sounds cool, right?
Suy cho cùng, chi phí đầu tư vào máy móc & dịch vụ vẫn thấp hơn nhiều so với đầu tư vào con người, đúng không?
Những điều cần lưu ý khi sử dụng Kubernetes trên Cloud
Thế nhưng, nếu không cẩn thận, bạn sẽ phải trả giá đắt khi không hiểu rõ về “mức phí tương xứng” bên trên. Chúng tôi cũng đã từng phải trả giá vì điều đó, khi các service không được tối ưu tốt, ngốn quá nhiều tài nguyên và băng thông, dẫn đến chi phí dịch vụ tăng cao. Hay không biết cách giám sát (monitoring) các service một cách hiệu quả, làm việc phát triển trở nên mất thời gian hơn.
Sau hơn 5 năm triển khai Kubernetes nói riêng và Microservices nói chung, với hàng loạt dự án khác nhau, trải qua bao nhiêu khó khăn và thử thách, chúng tôi tự hào rằng đội ngũ của chúng tôi đã trưởng thành hơn rất nhiều, hiện nay chúng tôi đã có thể hỗ trợ các doanh nghiệp trong và ngoài nước triển khai kiến trúc này một cách hiệu quả nhất, ít tốn kém nhất, và bảo mật nhất có thể.
Một vài cột mốc đáng nhớ mà chúng tôi đã học hỏi được rất nhiều:
- Năm 2018 - chúng tôi đã phát triển & triển khai nền tảng quản lý quà tặng cho ngân hàng ACB sử dụng kiến trúc Microservices.
- Năm 2019 - chúng tôi tiếp tục phát triển & triển khai ứng dụng nội bộ cho ngân hàng Techcombank sử dụng kiến trúc Microservices.
- Năm 2020 - nền tảng trò chơi trực tuyến NUVI WORLD dành cho trẻ em của nhãn hàng NuVi, thuộc tập đoàn Nutifood, đã được chúng tôi phát triển và triển khai với kiến trúc Microservices.
Và để trả lời cho câu hỏi đầu bài, chúng tôi tin rằng Microservices đã đủ chín chắn để khẳng định vị thế của mình, nếu như bạn biết cách tận dụng tối đa sức mạnh của nó, thì đây chắc chắn không hề là một sự cường điệu hóa một chút nào.
Chúng tôi sẵn sàng chia sẻ những kinh nghiệm & bí quyết này để giúp cho các doanh nghiệp hoạt động hiệu quả hơn.
Nếu bạn đang cần sự hỗ trợ, chúng tôi luôn sẵn sàng: hello@wearetopgroup.com
Bài viết phổ biến
Categories
Tags
Subscribe Newsletter
Sign up for our newsletter to hear whenever we have some cool news. We say NO SPAM.