Khởi nghiệp

Bài học từ việc phát triển của Zalo

Bài học từ việc phát triển của Zalo

 Zalo là ứng dụng nhắn tin trên di động do Zing phát triển. Mặc dù ra đời sau nhiều ứng dụng tương tự của nước ngoài như Viber, Line, Kakao Talk hay Whatsapp, Zalo đã thu được nhiều thành quả rất đáng khích lệ. Với hơn 2 triệu người dùng, Zalo có thể được xem là một trong những ứng dụng có số lượng người sử dụng đông đảo nhất Việt Nam.

 

Tin liên quan: 

 

 

Tại sự kiện Mobile Day được tổ chức vào ngày 18/5 vừa qua, anh Đào Ngọc Thành, giám đốc Zing Mobile, phụ trách sản phẩm Zalo đã có bài nói về kinh nghiệm phát triển và vận hành sản phẩm chiến lược của VNG này. Với lượng người dùng lên đến hàng triệu người và mức tăng trưởng 500.000 người dùng 1 tháng, nếu không có hạ tầng và nền tảng kỹ thuật tốt, Zalo không thể đảm bảo được trải nghiệm tốt nhất cho người sử dụng. Sau đây là những bài học lớn nhất đúc rút từ quá trình xây dựng Zalo được anh Đào Ngọc Thành chia sẻ.

Nền tảng mobile và web khác nhau hoàn toàn

Khác với nền tảng web, được chạy trên trình duyệt trong các máy tính để bàn hay laptop, có cấu hình mạnh, mạng nhanh, ổn định, môi trường di động có những đặc thù khác biết khiến các công nghệ web không thể áp dụng hoặc áp dụng nhưng hiệu quả không cao.

Điển hình nhất của sự khác biệt đó là tính đa dạng ở phía client. Trên nền tảng web, mặc dù có nhiều loại trình duyệt khác nhau nhưng tựu chung lại vẫn có những chuẩn web được công nhận và áp dụng lâu đời, như HTML, CSS, javascript. Cách các trình duyệt xử lý tương đối thống nhất (trừ IE của Microsoft) nên việc phát triển ứng dụng web không vấp phải quá nhiều vấn đề về tương thích. Trong khi đó nền tảng mobile rất phân mảnh, cả về cấu hình phần cứng, nền tảng hệ điều hành, kích cỡ màn hình, lẫn đối tượng sử dụng. Với mỗi nền tảng lại có những hạn chế và các đặc điểm khác nhau đòi hỏi các cách thức xử lý khác nhau. Người dùng mỗi nền tảng cũng có những hành vi và thói quen sử dụng khác nhau, ví dụ như người dùng iPhone sẽ không giống người dùng smartphone giá rẻ của Nokia.

Điểm khác biệt thứ hai là tính hữu hạn về tài nguyên. Mặc dù các smartphone hiện nay đã có bước tiến dài về tốc độ xử lý và dung lượng bộ nhớ nhưng so với máy tính để bàn hay laptop thì vẫn còn khoảng cách rất xa. Chưa kể cơ chế của các hệ điều hành di động có cách sử dụng và quản lý tài nguyên khác đòi hỏi phải tập trung tối ưu từ phía client rất nhiều. Ngoài các hạn chế về tốc độ xử lý và dung lượng bộ nhớ, đáng kể nhất về sự khác biệt đó là mobile sử dụng nguồn năng lượng từ pin, vốn rất hạn chế nhất là trong hoàn cảnh có kết nối mạng wifi hay 3G.

Điểm khác biệt thứ ba có thể kể đến là ngữ cảnh sử dụng của người dùng mobile hoàn toàn không giống khi sử dụng máy tính. Khi sử dụng máy tính người dùng ngồi một chỗ, không di chuyển, kết nối mạng ổn định, có thể xử lý nhiều tác vụ đồng thời. Trong khi người dùng mobile rất đa dạng trong ngữ cảnh sử dụng, trong nhà, ngoài trời, lúc di chuyển, kết nối mạng chập chờn, không ổn định. Khi thực hiện một tác vụ, người dùng mobile kỳ vọng sẽ có phản hồi tức thì chứ không có thói quen chờ đợi hoặc chuyển qua tác vụ khác như lúc chờ trang web đang tải khi dùng máy tính.

Chính những khác biệt lớn kể trên khiến việc xây dựng ứng dụng mobile đòi hỏi phải có tư duy và chiến lược công nghệ rất khác biệt để xử lý các hạn chế và tình huống đặc thù.

Bài toán xử lý kết nối cho ứng dụng di động hàng triệu người dùng

Theo chia sẻ của anh Đào Ngọc Thành, điểm đáng chú ý nhất trong việc tối ưu và mở rộng cho ứng dụng mobile đó là vấn đề xử lý kết nối. Việc tối ưu hóa các kết nối không chỉ nhằm đảm bảo hệ thống có thể chịu tải được lớn hơn mà còn đảm bảo kết nối được ổn định và ít tiêu tốn tài nguyên cho điện thoại của người dùng. Ban đầu Zalo sử dụng công nghệ web http long polling vốn áp dụng khá thành công cho hệ thống webchat của Zing Me nhưng giải pháp này sớm bộc lộ nhược điểm trên nền tảng mobile. Điện thoại của người dùng phải tạo rất nhiều kết nối cho những tác vụ đơn giản như kiểm tra có tin nhắn mới hay xem tin nhắn gửi đi đã đến nơi chưa. Ngoài ra cấu trúc của gói tin http không tối ưu về dung lượng. Chính những điểm hạn chế này khiến ứng dụng ngốn pin do phải xử lý những tác vụ thừa thãi, chưa kể việc gửi nhận tin nhắn bị chậm trong môi trường sóng yếu chập chờn.

 

Anh Đào Ngọc Thành, giám đốc Zing Mobile phụ trách Zalo tại Mobile Day 2013

Để xử lý các vấn đề trên, đội ngũ của Zalo đã quyết định chuyển sang sử dụng giao thức TCP Long Connection. Với giao thức này, một kết nối có thể gửi nhận nhiều gói tin đồng thời, các vấn đề tiêu tốn tài nguyên được giải quyết. Hệ thống máy chủ quản lý kết nối của Zalo cũng được viết lại từ đầu sử dụng ngôn ngữ lập trình C++ để tối ưu hiệu suất và độ ổn định. Chính nhờ việc chuyển đổi công nghệ này đã giúp Zalo đạt kỷ lục 380.000 người truy cập đồng thời, xử lý trung bình 150 triệu truy vấn và gửi nhận 20 triệu tin nhắn mỗi ngày. Khi người dùng bật ứng dụng Zalo, một kết nối TCP được thiết lập với cụm máy chủ quản lý kết nối và tiến hành các bước xác thực, kiểm tra tin nhắn offline,... Khi tin nhắn được gửi đi, cụm máy chủ này sẽ nhận gói tin và gửi về cụm máy chủ tính toán chuyên xử lý các loại nội dung như tin nhắn, hình ảnh, thông tin địa điểm,... từ đó chuyển đến người nhận.

 

 

Sơ đồ hạ tầng kỹ thuật của Zalo

 

Một điểm độc đáo nữa đó là chiến lược cân bằng tải của Zalo áp dụng từ phía client. Đa phần các sản phẩm web dành phần việc này cho phía máy chủ nhưng do mobile quá đa dạng về thiết bị và các ngữ cảnh sử dụng nên Zalo đã dựa trên các thông số về tình trạng kết nối để tự điều hướng đến các máy chủ thích hợp từ phía client.

Ngoài những vấn đề về kết nối kể trên, sản phẩm mobile đòi hỏi hệ thống có khả năng chịu lỗi cao để đối phó với các tình huống bị ngắt kết nối. Hệ thống lưu trữ cũng cần được tối ưu cho từng loại dữ liệu (tin nhắn, ảnh,...), số lượng cực lớn và hỗ trợ truy vấn các thông tin địa lý nhanh.

Có thể thấy các bài toán kỹ thuật của sản phẩm mobile rất đặc thù, không thể bê nguyên các công nghệ web để áp dụng vào triển khai được. Zalo có thể coi là một ví dụ thành công điển hình khi đi sâu vào giải quyết tận gốc các vấn đề cơ bản của ứng dụng mobile, nhất là ứng dụng lớn phục vụ hàng triệu người dùng. Với nền tảng kỹ thuật vững chắc, Zalo hoàn toàn có thể kỳ vọng cạnh tranh với các đối thủ lớn đến từ nước ngoài trong cuộc đua ứng dụng nhắn tin di động hết sức khốc liệt đang diễn ra tại thị trường Việt Nam.

Đọc thêm: Đâu là công ty Internet số 1 Việt Nam ?  

Pandora.vn