Làm thế nào để thành công trong một thế giới phân tán, đa đám mây?

Tháng Năm 31, 2021
Nga Pham

Tại sao chúng ta nên sử dụng nhiều hơn một thứ để giải quyết một nhu cầu cụ thể? Đôi khi ta không có sự lựa chọn. Tất cả tài sản tài chính của một người không ở cùng một nơi, chẳng hạn như tài khoản hưu trí do chủ lao động cung cấp nằm ở một tổ chức tài chính khác so với tài khoản cá nhân của họ. Đôi lúc, chúng ta cố tình đa dạng hóa nó. Dù có thể mua tất cả quần áo ở một cửa hàng bán lẻ, nhưng có thể vì sở thích cá nhân, sự tiện lợi hay vì hoàn cảnh, có người mua giày ở một cửa hàng (thường là các cửa hàng khác nhau cho những loại giày khác nhau), áo sơ mi ở cửa hàng khác và áo khoác lại ở một cửa hàng khác nữa.

Đó có phải là một tình huống tương tự trong bộ phận Công nghệ thông tin (CNTT) của bạn không? Dựa trên động lực của tổ chức và nhu cầu hiện tại của khách hàng, bạn thường sẽ có một vài giải pháp cho bất kỳ vấn đề nào đó. Điều này cũng tương tự đối với các đám mây công cộng (public clouds), vì số liệu thống kê cho thấy hầu hết mọi người đang sử dụng nhiều hơn một nhà cung cấp.

Nhưng tất cả các đám mây công cộng không hề giống nhau. Chắc chắn có một điểm chung giữa chúng, chính là mọi nhà cung cấp công cộng đều cung cấp tính toán ảo, lưu trữ, mạng và các dịch vụ trung gian như nhắn tin. Tuy nhiên, mỗi đám mây sẽ cung cấp những dịch vụ riêng mà bạn không thể tìm thấy ở nơi khác, và hoạt động trong các khu vực địa lý khác nhau. Một số đám mây cung cấp khả năng bảo mật, chủ quyền dữ liệu và khả năng kết hợp với các đám mây khác. Và trải nghiệm người dùng – các công cụ dành cho nhà phát triển, trình duyệt web, khả năng tự động hóa của các đám mây là không đồng nhất và có thể thu hút các nhóm khác nhau trong công ty của bạn.

Việc sử dụng nhiều đám mây đang trở nên phổ biến, nhưng việc thực hiện nó không hề đơn giản. Có nhiều công cụ, kỹ năng và mô hình khác nhau cần phải được tiếp thu, nhưng bạn đừng lo lắng. Đừng bắt các lập trình viên đi tìm hiểu mọi sắc thái của mọi đám mây, hoặc không đoái hoài đến việc mang lại giá trị cho khách hàng. Thay vào đó, bạn cần chuẩn bị cho các nhóm kỹ thuật của mình để họ có thể tận dụng tối đa lợi ích của đa đám mây. Vậy bạn nên làm gì, với tư cách một trưởng nhóm kỹ thuật? Dưới đây là một số lời khuyên cao cấp bạn nên tham khảo khi nghĩ về cách tiếp cận đa đám mây. Và hãy nhớ rằng, không có giải pháp nào là phù hợp cho tất cả, chỉ có giải pháp phù hợp với tổ chức của bạn, ngay bây giờ.

Đặt những kỹ năng đa nhiệm là trọng tâm

Phần mềm của bạn không được xác định bởi sự lựa chọn đám mây của bạn. Đó có lẽ là một lời nói mang tính xúc phạm, từ một người làm việc cho một nhà cung cấp đám mây công cộng, nhưng lại là sự thật. Hầu hết những gì cần thiết để xây dựng phần mềm tuyệt vời đều vượt xa khỏi bất kỳ mục tiêu triển khai nào.

Kỹ năng phát triển phần mềm nào thật sự quan trọng?

  • Tìm hiểu sâu về một hoặc nhiều ngôn ngữ lập trình. Thật sự hiểu cách viết mã nguồn hiệu quả, có thể thay đổi và kiểm tra.
  • Tối ưu hóa môi trường phát triển của bạn, bao gồm IDE, khung thử nghiệm và luồng kiểm soát mã nguồn.
  • Học một front-end framework như Angular hay Flutter.
  • Tìm hiểu các trường hợp sử dụng (use cases) cho một cơ sở dữ liệu quan hệ và cơ sở dữ liệu không giản đồ.
  • Tìm ra các cách phù hợp để đóng gói (package up) ứng dụng, bao gồm cả cách sử dụng container.
  • Đầu tư vào kiến trúc hiện đại xung quanh microservice, micro frontend, xử lý luồng sự kiện, JAMstack, API và lưới dịch vụ (service mesh).
  • Biết cách xây dựng một quy trình tích hợp liên tục, hoàn chỉnh để cung cấp cho nhóm của bạn những phản hồi nhanh chóng.

Trên đây đều là những kiến thức có giá trị, đa nhiệm và không liên quan gì đến đám mây mà bạn sử dụng. Ngoài ra, bạn sẽ cần phát triển những kỹ năng về dịch vụ đám mây mới, vì các đám mây không giống nhau và có những khác biệt về cách xác thực, cung cấp và sử dụng dịch vụ. Một ứng dụng được thiết kế để chạy tốt trên một đám mây sẽ không dễ dàng chạy trên một đám mây khác. Bạn chỉ cần ghi nhớ rằng đó là tất cả về phần mềm và khách hàng của bạn. Các đám mây công cộng có mặt để phục vụ bạn, chứ không phải ngược lại.

Sử dụng “nền tảng khả thi mỏng nhất” trên các môi trường

Các tổ chức thường đặt ra những nền tảng nặng nề, không rõ ràng và hy vọng các nhà phát triển sẽ sử dụng chúng. Nhưng giờ đây, các công ty đang nhận ra một cách tốt hơn.

Tác giả của cuốn sách “Team Topologies” (Tạm dịch: Cấu trúc liên kết nhóm) đã thúc đẩy ý tưởng về Nền tảng khả thi mỏng nhất (Thinnest Viable Platform – TVP), nghĩa là một tập tối thiểu bao gồm các API, tài liệu và công cụ cần thiết để tăng tốc độ phát triển của các nhóm phát triển hệ thống và dịch vụ phần mềm hiện đại. Một TVP như vậy có thể nhỏ như một trang wiki xác định các dịch vụ của nhà cung cấp đám mây công cộng mà các nhóm khác nên sử dụng, cùng với cách thức sử dụng chúng. Trong nhiều tổ chức, Kubernetes được chọn là nơi bắt đầu TVP của họ. Nó cung cấp một API phong phú, nhất quán cho các khối lượng công việc.

Điều có sức mạnh thật sự ở đây chính là một nền tảng cơ sở được tạo thành từ mã nguồn mở tiêu chuẩn ngành. Không chỉ mã nguồn mở, mà còn là mã nguồn mở tiêu chuẩn. Hãy nghĩ đến các dự án mà một hệ sinh thái khổng lồ hỗ trợ và tích hợp, chẳng hạn như Kubernetes, Istio, Envoy, Tekton, và Cloud Native Buildpacks. Điều này cho phép bạn chạy một nền tảng giống hệt nhau trên các đối tượng triển khai của mình, tích hợp với cơ sở hạ tầng và dịch vụ tốt nhất. Các nhà phát triển có thể thoải mái coi hệ thống pipeline nền tảng là một điều đương nhiên, và hướng sự chú ý của họ đến tất cả các khả năng gia tăng giá trị có sẵn trong mỗi môi trường.

Lựa chọn đám mây (và các dịch vụ) phù hợp với nhu cầu ứng dụng của bạn

Sau khi tập trung vào các kỹ năng đa nhiệm và có một nền tảng giúp bạn dễ dàng thực thi phần mềm nhất quán trên mọi môi trường, bạn cần chọn nơi phần mềm sẽ thực sự chạy.

Các nhà phát triển của bạn có thể viết phần mềm hoàn toàn không có trên đám mây và có thể chạy được ở mọi nơi. Điều đó thật khó thực hiện, nhưng giả sử bạn đã làm được, thì các nhà phát triển của bạn không cần phải đưa ra bất kỳ lựa chọn khó khăn nào trước mắt. Khi nào bạn có thể cần những hiểu biết trước về môi trường mục tiêu? Trong một vài ví dụ sau đây:

Ứng dụng của bạn phụ thuộc vào các khả năng độc đáo cho AI, xử lý dữ liệu, IoT hoặc các API cụ thể theo chuyên ngành, như truyền thông hoặc chăm sóc sức khỏe.

Bạn cần lưu trữ ứng dụng của mình ở một khu vực địa lý cụ thể, do đó cần lựa chọn một đám mây, trung tâm dữ liệu hoặc cơ sở đối tác cụ thể.

Ứng dụng của bạn phải nằm cạnh nguồn dữ liệu cụ thể, chẳng hạn như hệ thống SaaS, trung tâm dữ liệu đối tác, người dùng di động, và bất kỳ máy chủ nào gần nhất.

Việc có sẵn một cây quyết định đã được kiểm tra kỹ lưỡng giúp nhóm của bạn quyết định khi nào nên sử dụng các dịch vụ mới thay vì dịch vụ thông thường, và cách lựa chọn đám mây phù hợp nhất với khối lượng công việc. Việc lựa chọn đám mây và các dịch vụ để sử dụng có thể cần đến sự giúp đỡ của chuyên gia. Bạn có thể liên hệ với các chuyên gia của chính Google để được trợ giúp hoặc làm việc với mạng lưới rộng lớn các đối tác tài năng của Google, những người sẽ cung cấp hướng dẫn đã được kiểm chứng cho hành trình của bạn. Sự lựa chọn là của bạn.

Nguồn: Google Cloud Blog