Grab Experimentation Platform- Nền tảng thử nghiệm grab

Cách Grab xây dựng 1 nền tảng để nâng cao trải nghiệm khách hàng

Bài viết của Abeesh Thomas Stephen (technical writer tại Grab), cộng tác viên nội dung của Tech in Asia.

nền tảng thử nghiệm grab

Tại Grab, chúng tôi liên tục thử nghiệm để cải thiện trải nghiệm người dùng trên ứng dụng. Nhưng chạy nhiều thử nghiệm có thể gây lộn xộn, phức tạp và tốn kém.

Đây là lý do tại sao chúng tôi tạo ra Nền tảng thử nghiệm Grab (Grab Experimentation Platform – ExP), cho phép chúng tôi thử nghiệm để test một tính năng mới trước khi triển khai.

Mục tiêu của ExP là đảm bảo rằng các tính năng mới được triển khai mà không gặp bất kỳ trục trặc nào và các mối quan hệ nguyên nhân-kết quả được phân tích một cách chính xác.

Cổng thông tin nền tảng thử nghiệm grab

Cổng thông tin nền tảng thử nghiệm grab

Tại sao chúng tôi lại xây dựng ExP?

Trong những ngày đầu tại Grab, các thử nghiệm đã được thực hiện ở quy mô nhỏ. Mọi người xác định các số liệu, sau đó tính toán và đánh giá các số liệu đó cho một nhóm thử nghiệm nhỏ.

Quá trình đó khá nhiêu khâu. Khi product managers muốn chạy 1  thử nghiệm, cần phải tổ chức họp với product analysts, data scientists, and kĩ sư.

Phải thiết kế trước các thử nghiệm rồi xây dựng nên các luồng đăng nhập cho 1 nhóm nhất định, rồi các  services cũng cần điều chỉnh phục vụ cho mỗi thử nghiệm. Rất tốn thời gian và tiền bạc.

Để vượt qua những thách thức này, chúng tôi cố gắng xây dựng một nền tảng với các mục tiêu:

  • Tạo ra một nền tảng hợp nhất để tránh việc các thử nghiệm đồng thời xung đột lẫn nhau, cho phép kỹ sư và data scientists làm việc trên cùng một bộ tools.
  • Cho phép thực hiện các thử nghiệm đơn giản, nhanh chóng và hiệu quả về mặt chi phí.
  • Tự động hóa việc lựa chọn đại diện để thực hiện A / A testing.
  • Hỗ trợ ra quyết định các kiểm tra quan trọng.
  • Cho phép một đường dẫn dữ liệu hoàn toàn tự động mà ở đó dữ liệu thử nghiệm được truyền dẫn theo real time, sau đó được gắn thẻ và lưu trữ trong S3.
  • Tạo một nền tảng để bổ trợ cho các mô-đun phân tích tùy chỉnh.
  • Tạo kích hoạt / cảnh báo sự kiện dựa trên các số liệu kinh doanh quan trọng để xác định các tác động bất lợi khi thay đổi. 
  • Thiết kế centralized online UI ( giao diện người dùng trực tuyến tập trung) để tạo ra các thử nghiệm và quản lý chúng.

Kết quả, số thử nghiệm đồng thời đạt tới 25. Ấn tượng hơn, hệ thống xử lí tới 2500  metrics riêng biệt và 50,000 tổ hợp experiment/metric khác nhau.   

Tuy nhiên, ở quy mô này, chúng tôi lại gặp phải một số vấn đề. Và đây là cách tiếp cận mà chúng tôi sử dụng để giải quyết chúng:

Ngăn chặn, đẩy lùi hiệu ứng mạng

Grab luôn có 3 nhóm người dùng đồng thời : tài xế, hành khách và merchant. Không giống như hầu hết các nền tảng thử nghiệm khác chỉ quan tâm đến web visitor, tại Grab, các nhóm người dùng luôn tương tác với nhau, đôi khi dẫn đến hiệu ứng mạng.

Ví dụ, thử nghiệm về các chương trình khuyến mãi có thể dẫn đến sự gia tăng nhu cầu đột biến so với khả năng cung cấp.

Kiểm soát và xử lý assignment strategies

Các nhóm khác nhau tại Grab có các yêu cầu và cách thử nghiệm khác nhau. Một vài thử nghiệm đơn giản về giao diện có thể chỉ cần thực hiện ngẫu nhiên theo user ID, nhưng  thử nghiệm về thuật toán cần phải có chiến lược time-slicing và hạn chế tối đa nhận định chủ quan.

Do đó, chúng tôi phải tạo ra rất nhiều chiến lược khác nhau, ứng với các trường hợp  sử dụng khác nhau, cho phép thử nghiệm đồng thời theo hướng ngẫu nhiên hoặc chỉ định

Phân công thử nghiệm các cách khác nhau trong nền tảng grab

Bạn có thể xem thêm các bài liên quan:

Ngăn chặn sự trục trặc khi thử nghiệm

Chúng tôi cũng cố gắng ngăn chặn sự chồng chéo lẫn nhau của các thử nghiệm liên tiếp bằng cách cung cấp một cơ chế tương tự như Google’s Domains (tên miền) và Layers, kết hợp với một hệ thống chuyên gia để thông qua thiết kế thực nghiệm.

Một hệ thống geo-temporal segmentation áp dụng cho các thử nghiệm đồng thời, với những phương thức kiểm tra nâng cao và đề xuất cách tạo ra thử nghiệm

Bảo mật trong thử nghiệm nền tảng grab

Cấu tạo của ExP

Grab ExP cho phép người dùng nội bộ (engineers, product managers, analysts,..) chuyển đổi các tính năng khác nhau, điều chỉnh ngưỡng và thay đổi cấu hình một cách linh hoạt mà không cần khởi động lại.

Để đạt được điều này, chúng tôi xin giới thiệu một vài khái niệm trong UI và SDKs:

Software Development Kit là các công cụ và phần mềm dùng để phát triển ứng dụng thông qua một nền tảng nhất định. SDK đóng vai trò như một tập hợp các công cụ. Chương trình khác nhau có thể dùng để phát triển các phần mềm/ứng dụng mới trên một nền tảng cụ thể.

Biến và Metrics

Cấu tạo cơ bản của mọi nền tảng thử nghiệm là các biến và Metrics.

Biến là thứ chúng ta có thể thay đổi (ví dụ: cho phép các phương thức thanh toán khác nhau cho một người dùng hoặc thay đổi thành phố).

Metrics là thứ chúng tôi muốn cải thiện và tiếp tục quan sát (ví dụ: tỷ lệ hủy hoặc doanh thu).

Giới thiệu tính năng (Rollouts)

Trước tiên, chúng tôi triển khai một tính năng cho một phần nhỏ người dùng, sau đó dần dần chuyển sang các nhóm lớn hơn cho đến khi tiếp cận được tất cả người dùng mục tiêu.

Đích đến của Rollouts  là làm cho việc triển khai tính năng trở nên ổn định và đáng tin cậy nhất có thể, bằng cách kiểm soát mức độ tiếp xúc của người dùng trong giai đoạn đầu và theo dõi tác động dựa trên các số liệu kinh doanh chính.

Groups

Cho phép người dùng nội bộ xác định các nhóm tùy chỉnh (còn được gọi là phân khúc). Một nhóm là một tập hợp các mã định danh, chẳng hạn như ID hành khách, Geohash (hệ thống mã địa lý phạm vi công cộng), thành phố,…

Chúng tôi sử dụng điều này để tập hợp những thứ có thể tiến hành triển khai và thử nghiệm.

Thử nghiệm

Chúng tôi đã chính thức đưa “experiment definition” vào, về cơ bản là cấu hình thời gian hoàn thành có thể được phân chia giữa kiểm soát và xử lý cho một hoặc nhiều biến. Cấu hình này được lưu trữ dưới dạng dữ liệu JSON và chứa toàn bộ thiết lập để thử nghiệm

Lợi ích mang lại:

  •  Máy móc có thể hiểu nó
  •  Trao đổi giữa các team được đơn giản hóa

Structured experimental design

Với định nghĩa chính thức về thử nghiệm, Grab đã cung cấp SDK cho  Android, iOS, và Golang

Thiết kế  thử nghiệm cấu trúc trên platform grab

Định nghĩa thử nghiệm cho phép SDKs triển khai các thử nghiệm nhanh chóng mà không cần phải tốn kém cho việc gọi đến network.

Thử nghiệm được phân phối trên SDKs through thông qua cấu hình và quản lí trên platform, cho phép tái cấu hình động . SDKs có rất nhiều thuật toán giúp experiment designers khởi tạo, xác định assignment strategy (thuật toán), đặt ra kết quả sẽ nhận được cho từng nhóm biến số và user.

Tổng thể, chúng tôi hỗ trợ 2 chiến lược chính và phổ biến: ngẫu nhiên hoặc có trọng số. Điều này rất hữu ích . Ví dụ nếu muốn 50% hành khách nhận 1 giá trị, phần còn lại sẽ nhận các giá trị khác ứng với 1 biến số cụ thể.

Các Thử nghiệm mẫu trông như thế nào

Kể từ khi ra mắt, ExP đã chứng tỏ rằng nó là thứ không thể thiếu đối với việc triển khai các tính năng tại Grab. 

Lấy GrabChat làm ví dụ. Hủy chuyến là một vấn đề quan trọng và nhóm nghiên cứu tin rằng với các biện pháp can thiệp đúng đắn, số lượng cuốc bị hủy sẽ giảm xuống.

Một trong những ý tưởng, đó là sử dụng GrabChat để thiết lập cuộc trò chuyện giữa tài xế và hành khách bằng cách gửi tin nhắn tự động. Việc này giúp giảm thời gian chờ đợi và khiến cho hành khách và tài xế trở nên kiên nhẫn hơn, chấp nhận các nguyên nhân chậm trễ không thể tránh khỏi.

Khi chúng tôi triển khai tính năng mới này trong một khu vực cụ thể, chúng tôi nhận thấy việc hủy chuyến giảm xuống đáng kể. Để xác thực, chúng tôi đã tiến hành một loạt các thử nghiệm lặp đi lặp lại bằng ExP. Sau đó thì chúng tôi đã  triển khai tính năng này trên toàn Đông Nam Á.

Xây dựng 1 platform (nền tảng) thử nghiệm không hề đơn giản, nhưng điều đó đã giúp cổ vũ văn hoá thử nghiệm trong tổ chức. Nó cho phép data scientists và product teams phân tích chất lượng của  features mới và cải tiến liên tục.

Tương lai, sẽ có rất nhiều cái để làm với ExP. Chúng tôi đang muốn xây dựng 1 hệ thống Dashboards tự động, real-time, cùng với các phễu có chức năng slice-and-dice.

Chúng tôi cũng muốn nâng cao năng lực  thử nghiệm mà vẫn đảm bảo tính hiệu quả. Thực sự, nếu muốn phát triển, cần phải luôn luôn thử nghiệm.

Bạn có thể quan tâm:

Nguồn: techinasia.com