Bài viết kể về hành trình phát triển Threads, mạng xã hội văn bản của Meta, ra đời sau khi Twitter gặp biến động dưới quyền Elon Musk. Nhóm phát triển tận dụng cơ hội này, tái sử dụng hạ tầng Instagram để rút ngắn thời gian ra mắt. Họ đối mặt với nhiều thách thức: mở rộng hệ thống, tối ưu hiệu suất, sao chép đồ thị người theo dõi, và điều chỉnh thuật toán hiển thị. Bài học quan trọng rút ra là sự đơn giản, giá trị của mã nguồn cũ, và cách xây dựng sản phẩm qua thử nghiệm thực tế.
Tags:Vào năm 2019, Meta đã quyết định rằng các các nền tảng của họ sẽ không còn tập trung vào việc chia sẻ, giao tiếp công cộng. Thay vào đó, Facebook và Instagram sẽ xoay trục để tập trung vào giao tiếp riêng tư giữa bạn bè. Theo quan điểm của Mark Zuckerberg, nền tảng giao tiếp riêng tư giữa bạn bè – sẽ là xu hướng phát triển mạnh trong thập kỷ tiếp theo. Điều này đồng nghĩa với việc Twitter nghiễm nhiên mặc định trở thành nơi để tranh luận và chia sẻ ý tưởng – một chức năng quá quan trọng đối với xã hội.
Nhưng kể từ khi Elon Musk mua lại và tiếp quản Twitter, ông ta đã đưa ra hàng loạt quyết định gây tranh cãi, khá tùy tiện. Cộng đồng mạng khi đó tin rằng Twitter sẽ sớm lụi tàn, khiến hàng triệu người mất đi nơi giao tiếp quen thuộc trên internet. Thực tế, nhiều nguồn tin cho biết số lượng người dùng Twitter đã giảm rõ rệt sau khi Musk nắm quyền. Meta đã nhận ra cơ hội này.
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com
Rõ ràng thế giới vẫn rất cần một dịch vụ như Twitter, bởi giá trị cốt lõi của một mạng xã hội không nằm ở sản phẩm, mà ở chính những con người trong đó. Khi nhiều người rời bỏ Twitter, họ sẽ tìm một nơi khác để “tụ tập”. Ban đầu, nhóm nghĩ rằng điểm khác biệt chính của Twitter nằm ở định dạng văn bản, nên họ quyết định thử nghiệm bằng cách giúp người dùng đăng bài dạng chữ dễ dàng hơn trên các sản phẩm hiện có. Trên Instagram, một tỷ lệ đáng kể bài đăng đã có yếu tố văn bản, nên nhóm tự hỏi: nếu người dùng có thể đăng bài chỉ toàn chữ thì sao? Liệu có ai dùng không? Nhưng thực tế, chẳng mấy ai quan tâm.
Lý do là gì? Mặc dù Instagram và Twitter có một số điểm chung về mặt cơ chế hoạt động và chức năng, nhưng mỗi nền tảng lại có một “văn hóa” riêng, lý do tồn tại riêng được hình thành ngay từ đầu vòng đời sản phẩm. Twitter là một nơi công cộng để thảo luận, còn Instagram là nơi cập nhật cuộc sống bạn bè hoặc giải trí hình ảnh và video ngắn. Điều đó có nghĩa là nếu muốn xây dựng một sản phẩm cạnh tranh, họ không thể chỉ thay đổi Instagram – mà phải tạo ra một sản phẩm hoàn toàn mới với những quy tắc và văn hóa riêng.
Nhưng nỗi lo lớn nhất khi bắt đầu từ con số 0 chính là: mất bao lâu để làm ra thứ này? Mọi người đều ý thức rất rõ rằng đây là cơ hội ngắn ngủi ngàn năm có một, có thể biến mất nhanh như khi nó xuất hiện. Quan điểm của cả nhóm rất rõ ràng: thời gian ra mắt là thứ duy nhất quan trọng. Và họ đã lấy điều đó làm kim chỉ nam cho mọi quyết định. Mọi lối tắt đều được cân nhắc, mọi phạm vi tính năng đều có thể bị cắt giảm, mọi yếu tố phức tạp đều là vấn đề cần giải quyết. Yêu cầu đặt ra là nhóm phải sẵn sàng tung ra sản phẩm trong thời gian ngắn nhất có thể.
Để bắt đầu dự án, họ bắt đầu bằng việc phác thảo những giá trị cơ bản của sản phẩm này – tổng cộng có bốn giá trị. Thứ nhất, sử dụng định dạng văn bản; mọi bài đăng đều phải bắt đầu bằng chữ. Trong khi Instagram ưu tiên hiển thị ảnh và video lên hàng đầu thì ở đây không như vậy. Thứ hai, nhóm mong muốn kế thừa ngôn ngữ thiết kế và tinh thần của Instagram – sự đơn giản, cảm giác thân quen của sản phẩm mà hàng triệu người trên thế giới yêu mến và quen thuộc. Thứ ba, team Meta nhận thức rằng một trong những giá trị giúp Twitter ban đầu tạo dựng được vị thế chính là sự cởi mở, tạo điều kiện thuận lợi cộng đồng được tự do tạo ra trải nghiệm của riêng mình thông qua API. Cuối cùng, cần ưu tiên các yêu cầu của các nhà sáng tạo nội dung. Mỗi mạng xã hội đều có một nhóm người sản xuất phần lớn nội dung cho mọi người, đặc biệt chỉ có một tỷ lệ nhỏ người dùng tạo ra phần lớn nội dung. Việc luôn lưu tâm đến nhu cầu của cộng đồng này là yếu tố then chốt cho thành công về lâu về dài.
Dựa trên những giá trị đó, họ đã phác thảo ra phiên bản sản phẩm với những tính năng tối thiểu và bắt đầu thực hiện. Họ đã xác định bốn mốc quan trọng (milestone) để dễ dang theo dõi tiến độ dự án. Mục tiêu then chốt là có được sản phẩm để phát hành càng sớm càng tốt.
Mốc đầu tiên chỉ đơn giản là dựng lên ứng dụng thô sơ. Chỉ cần có khả năng đăng nhập và đăng một bài viết. Mốc thứ hai là mang lại cho ứng dụng giao diện quen thuộc với các tab như bảng tin, thông báo và hồ sơ cá nhân; đồng thời, các tính năng cơ bản như khả năng chặn hoặc báo cáo một hồ sơ khác. Mốc thứ ba, tập trung vào việc phát triển những dịch vụ như công cụ tìm kiếm người dùng cơ bản, chế độ xem toàn màn hình cho ảnh và video, và bắt đầu tìm ra cách xử lý các bài thảo luận. Làm sao để xếp hạng bài đăng trên bảng tin? Tiếp đến là việc sao chép người theo dõi từ Instagram để khởi tạo hồ sơ cá nhân, và tính tắt tiếng (mute) các hồ sơ khác.
Mốc thứ tư, cũng là mốc cuối cùng, họ lên kế hoạch tích hợp Threads vào Fediverse—viết tắt của “federated universe.” Hiểu một cách đơn giản, Fediverse là một hệ thống gồm nhiều mạng xã hội khác nhau nhưng chúng có thể “trò chuyện” với nhau thông qua một giao thức mở gọi là ActivityPub. Nghĩa là, dù người dùng ở trên những nền tảng khác nhau, họ vẫn có thể tương tác, theo dõi và chia sẻ nội dung qua lại. Cả team kỳ vọng có thể hoàn thành tính năng này trong tháng cuối cùng, nhưng thực tế không kịp, họ phải dành thời gian mài dũa để chuẩn bị cho buổi ra mắt. Việc thay đổi liên tục như này khiến cả team vô cùng mệt mỏi.
Trong suốt mấy thàng cày cuốc, cả nhóm giống như đã phát hành ra ba sản phẩm. Mỗi lần như vậy, họ ngồi với nhau trong “phòng chiến lược”, thức đêm cày làm và nỗ lực để kịp đúng tiến độ. Sau đó, họ lại quyết định liệu đã sẵn sàng để tung ra thị trường hay chưa. Nhìn lại thì chiến lược này có một lợi ích lớn: nó đã ép buộc họ phải đơn giản hóa sản phẩm. Họ phải chắt chiu, chọn ra xem những tính năng nào thực sự cần thiết và mang lại nhiều giá trị cho người dùng. Cuối cùng, khi ra mắt, họ đã hoàn thành toàn được 3.5 mốc, tức là toàn bộ tính năng ở ba cột mốc đầu và một nửa tính năng ở mốc thứ 4.
Tất cả những điều đó, nếu xây dựng từ con số 0 trong vòng năm tháng, sẽ là một thử thách vô cùng tham vọng. Nhóm phát triển bắt đầu một cách nghiêm túc từ tháng Hai và đã hứa với ban lãnh đạo rằng xong vào mùa hè. Họ tư tin như vậy là vì họ không có ý định xây dựng lại mọi thứ từ đầu.
Họ nhận thấy Instagram vốn đã có những tính năng cốt lõi mà Threads cần, như khả năng theo dõi hồ sơ, xem bài đăng và tương tác để xây dựng cộng đồng dựa trên sở thích chung. Vì vậy, nhóm đã quyết định tái sử dụng các tính năng này cho Threads.
Họ đã đơn giản hóa quá trình phát triển bằng cách tái sử dụng nền tảng của Instagram. Phần backend thực chất chỉ là backend của Instagram với một số chức năng mới cho Threads. Các ứng dụng đều được fork từ mã nguồn của Instagram. Bắt đầu từ sản phẩm đầy đủ tính năng của Instagram, họ từng bước loại bỏ các chức năng không cần thiết. Ngay từ nguyên mẫu đầu tiên, họ chỉ chỉnh sửa bố cục (caption lên trên, media xuống dưới) để hiển thị bài đăng chỉ văn bản, giúp giảm đáng kể khối lượng công việc kỹ thuật.
Họ đã biến bài toán "xây dựng một mạng xã hội văn bản mới" thành "tùy chỉnh nguồn tin Instagram để hiển thị bài đăng văn bản". Dù cách tiếp cận này đơn giản, nhưng nó mang lại rủi ro lớn: dồn nợ kỹ thuật khi mà dùng nền tảng cũ cho một sản phẩm mới mà không được thiết kế cho nó. Điều này tạo ra rất nhiều vấn đề nhỏ cần giải quyết, và họ phải hiểu rõ hàng triệu dòng code cũ chỉ để thay đổi vài phần cần thiết.
Đọc code của người khác khó hơn việc viết code của chính mình. Bằng cách này, họ sẽ không thể làm mọi thứ sạch đẹp ngay từ đầu, nhưng bù lại mọi người biết cách giữ cho mọi thứ đơn giản, tận dụng triệt để những gì mà Instagram đã làm rất tốt. Sự tồn tại của Threads chính là nhờ nền tảng vững chắc mà đội ngũ hạ tầng và sản phẩm của Instagram đã xây dựng qua nhiều năm. Nhờ đó, Threads đã thành công và nhận nhiều lời khen nhờ sự đơn giản, sáng loáng, nhưng không thiếu đi những tính năng cần thiết nào.
Kế hoạch ban đầu là giữa tháng 7, nhưng khi thông tin lan truyền rằng Twitter sẽ hạn chế quyền truy cập nội dung đối với người dùng miễn phí, Meta nhận thấy đây là một cơ hội lớn. Nhóm phát triển quyết định đẩy nhanh ngày ra mắt lên sớm một tuần, dù điều này đồng nghĩa với việc bỏ qua một số bài kiểm tra tải và công đoạn chuẩn bị cuối cùng. Đến ngày 5/7, nhiều người nổi tiếng và những người dùng không phải kỹ sư đã có thể trải nghiệm Threads trước. Trong khi đó, đội ngũ kỹ thuật vẫn đang căng thẳng hoàn tất các khâu chuẩn bị, từ mở rộng hệ thống, lập kế hoạch phản ứng với tải lớn, đến xử lý các kịch bản có thể xảy ra.
Tuy nhiên, giữa trưa hôm đó, một data engineer bất ngờ phát hiện hàng chục nghìn lần đăng nhập thất bại từ ứng dụng. Điều này gây bất ngờ, vì chưa có ai—chắc chắn không phải hàng chục nghìn người—được phép truy cập vào Threads vào thời điểm đó. Khi kiểm tra kỹ hơn, nhóm kỹ thuật nhận thấy rằng tất cả các yêu cầu này đều đến từ các quốc gia Đông Á. Sau một thời gian phân tích, họ nhận ra nguyên nhân: vấn đề liên quan đến múi giờ.
Cụ thể, Threads đã sử dụng tính năng đặt trước của App Store, cho phép người dùng đăng ký trước và tự động tải xuống ứng dụng vào ngày ra mắt. Khi đặt ngày phát hành là 6/7, ứng dụng sẽ tự động xuất hiện trên App Store ngay khi đồng hồ điểm 0:00 theo giờ địa phương. Điều này có nghĩa là ở các nước như Nhật Bản, Hàn Quốc và Trung Quốc, người dùng đã có thể tải xuống Threads sớm hơn nhiều so với dự kiến. Nhưng vì hệ thống vẫn đang chặn quyền truy cập, tất cả các đăng nhập này đều thất bại.
Ngay lập tức, cả nhóm triệu tập một war room trên Zoom với gần 100 chuyên gia từ nhiều bộ phận khác nhau. Sau khi phân tích tình hình, họ nhận ra rằng khi đến nửa đêm ở các khu vực khác, nhu cầu tải ứng dụng sẽ tiếp tục tăng đột biến. Điều này đòi hỏi hệ thống phải được mở rộng quy mô ngay lập tức để tránh tình trạng quá tải. Nhóm đã quyết định lùi thời gian ra mắt chính thức sang 0:00 giờ Anh quốc, giúp họ có thêm vài giờ để chuẩn bị.
Tốc độ tăng trưởng người dùng sau đó là ngoài sức tưởng tượng. 1 triệu người tải Threads chỉ trong giờ đầu tiên, 10 triệu lượt tải sau một ngày, 70 triệu sau hai ngày, và 100 triệu sau năm ngày. Sau đó, sự hứng thú ban đầu bắt đầu giảm xuống, nhưng việc duy trì hệ thống trong năm ngày đầu tiên là một thách thức cực kỳ lớn.
Trong suốt thời gian đó, đội ngũ kỹ thuật liên tục đối mặt với các sự cố lớn nhỏ. Một trong những vấn đề nghiêm trọng nhất là việc tiêu tốn quá nhiều tài nguyên khi chỉ phục vụ một lượng nội dung tương đối nhỏ cho người dùng. Một ví dụ điển hình là dòng thời gian của Mark Zuckerberg gặp lỗi tải dữ liệu. Nguyên nhân xuất phát từ một truy vấn cơ sở dữ liệu không được tối ưu, khiến thời gian thời gian truy vấn dữ liệu tăng đáng kể. Sau khi xác định vấn đề, nhóm phát triển đã bổ sung index, giúp cải thiện hiệu suất hệ thống.
Một sự cố khác là quá trình sao chép đồ thị người theo dõi (follower graph) từ Instagram sang Threads. Khi người dùng đăng ký Threads, họ có tùy chọn tự động theo dõi những tài khoản họ đã theo dõi trên Instagram. Điều này ban đầu không phải là vấn đề, nhưng khi các nhân vật nổi tiếng—chẳng hạn như cựu Tổng thống Obama—tham gia Threads, hàng triệu tài khoản đã chờ sẵn để theo dõi họ ngay lập tức. Điều này tạo ra một lượng công việc khổng lồ mà hệ thống ban đầu không thể xử lý. Để giải quyết, đội ngũ kỹ thuật đã thiết kế lại hệ thống theo hướng mở rộng theo chiều ngang, đồng thời triển khai nhiều tác vụ xử lý song song để giảm tải.
Dù phải đối mặt với nhiều thử thách, Threads vẫn trụ vững trong giai đoạn khó khăn nhất. Đó là minh chứng cho khả năng thích ứng nhanh và chất lượng của các hệ thống kỹ thuật tại Meta.
Tóm lại, quá trình đưa Threads vào hoạt động là một trải nghiệm hiếm có đối với bất kỳ kỹ sư giỏi nào. Bài học lớn nhất rút ra được là sức mạnh của sự đơn giản. Điều này chắc chắn không dễ dàng. Có một câu châm ngôn nói rằng viết một bức thư ngắn mất nhiều thời gian hơn viết một bức thư dài, và điều này áp dụng cho bất kỳ quá trình sáng tạo nào. Khi xác định rõ giá trị cốt lõi mà sản phẩm muốn mang lại, nhóm các kỹ sư phần mềm có thể sử dụng nó như kim chỉ nam để đưa ra những quyết định khó khăn về những tính năng nào cần cắt giảm.
Một bài học quan trọng khác là mã nguồn mới và sạch hơn không phải lúc nào cũng tốt hơn. Tất cả những kinh nghiệm tích lũy từ một mã nguồn cũ nhưng đã được thử nghiệm qua nhiều trận chiến (battle-tested code base) đều có giá trị. Nếu có thể, đừng vội vứt bỏ nó.
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com