Tìm hiểu mô hình xây dựng website thành công - PlentyOfFish
PlentyOfFish (POF) là 1 website hẹn hò online rất nổi tiếng với 45 triệu khách mỗi tháng và hơn 30 triệu lượt truy cập mỗi ngày (500-600 trang được xem mỗi giây). Nhưng đó chưa phải là điều thú vị nhất. Tất cả được xây dựng chỉ bởi 1 người, 1 số rất ít server, làm việc 1 vài giờ mỗi ngày, nhưng lại có thể kiếm ra hơn 10 triệu đôla mỗi năm từ Google Ads.
Làm cách nào mà POF lại sử dụng ít tài nguyên đến vậy ? Trong bài viết này chúng ta sẽ tìm hiểu những điều thú vị về POF. Những phân tích về POF có thể chỉ đơn giản ở các mức giới thiệu chung, tuy nhiên là một bài học hữu ích cho các kỹ sư công nghệ nói chung.
Nền tảng POF sử dụng:
• Microsoft Windows
• ASP.NET
• IIS
• Dùng Akamai CDN để phân phối dữ liệu
• Dùng Foundry ServerIron để cân bằng tải
Thống kê
- PlentyOfFish (POF) có 1.2 tỷ lượt xem trang/tháng và trung bình 500.000 lượt đăng nhập khác nhau mỗi ngày (Số liệu năm 2009, đến bây giờ đã khác đi rất nhiều). Một điều đáng chú ý là tháng 1 là giai đoạn truy cập cao nhất (hơn 30% so với bình thường).
- POF chỉ có 1 người làm việc duy nhất, người thành lập và là CEO Markus Frind.
- Làm ra 10 triệu $ mỗi năm từ Google Ads, làm việc 2h mỗi ngày.
- Hơn 30 nghìn lượt truy cập mỗi ngày, ( 500-600 lượt xem/giây ).
- 1.1 tỷ lượt xem và 45 triệu người dùng mỗi tháng.
- Có 5-10 lần dùng từ facebook thì đến POF 1 lần.
- Nằm trong top 10 ở Canada và top 30 ở Anh.
- 2 máy chủ cân bằng tải với 2 Quad Core Intel Xeon X5355 @ 2.66Ghz), 8 Gigs RAM, 2 ổ cứng và chạy Windows x64 Server 2003.
- 3 máy chủ chứa cơ sở dữ liệu (chúng tôi không biết thông tin về cấu hình của các máy này).
- Gần 64.000 kết nối cùng lúc và 2 triệu lượt xem mỗi giờ.
- Có đường truyền Internet 1Gbps và chỉ sử dụng 200Mbps.
- 1 Tb/ngày phục vụ cho 171 triệu ảnh thông qua Akamai.
- Kho lưu 6Tb để lưu trữ hàng triệu ảnh được upload lên trang mỗi tháng.
Điều gì ẩn chứa trong đó
- POF kiếm tiền bằng cách sử dụng các quảng cáo từ hệ thống của Google Ads. Trong khi đó Match.com (1 trang web dating online khác) lại kiếm được 300 triệu $ mỗi năm từ việc thu phí người sử dụng. Sở dĩ POF kiếm tiền bằng cách này vì tận dụng các lợi điểm của việc với 30 triệu lượt truy cập bạn có thể kiếm tiền dễ dàng nhờ bán quảng cáo. ( giá từ 3-5 cent cho 1 CPM).
- Sử dụng Akamai để phục vụ các yêu cầu truy xuất hình ảnh. Tận dụng hệ thống CDN của Akamai xử lý đáp ứng hơn 100 triệu ảnh được tải mỗi ngày. Phần đa các bức ảnh này (chủ yếu là hình ảnh cá nhân của các thành viên khi đăng lên) đều bé hơn 2Kb và được cache trên Ram.
- Tất cả dữ liệu truyền nhận đều được nén, việc nén này chỉ chiếm 30% CPU nhưng lại tiết kiệm được rất nhiều băng thong.
- Không hàm cache nào trong ASP.NET được sử dụng. Bởi ngay khi dữ liệu được đưa vào cache thì nó đã hết hạn.
- Không sử dụng các thư viện sẵn trong ASP.NET, bởi vì các việc kỹ thuật lập trình chỉ đơn giản với các câu lệnh: if, then và vòng lặp for. Nguyên tắc kỹ thuật lập trình của POF đó là luôn làm nó rất đơn giản.
- Cân bằng tải :
+ IIS tự giới hạn số kết nối là 64.000, cho nên phải có giải pháp cân bằng tải để đáp ứng được nhiều hơn. Giải pháp phân tải bằng DNS đã được xem xét, tuy nhiên cuối cùng Markus lựa chọn ServerIron. Với ServerIron thì có thể cho phép ngăn chặn các truy xuất từ các BOT của search engine dựa trên cookie, session và ip.
+ Bên lề đây, tôi cũng muốn trình bày 1 giải pháp cân bằng tải khác trên nền hệ điều hành Windows là Windows Network Load Balancing(NLB). NLB sử dụng DB hoặc file để lưu các session của người dùng. Khi xây dựng giải pháp này thong thường sử dụng từ 8-12 NLB vào 1 farm. Và sử dụng phân tải DNS thì có thể sử dụng khoảng 70 webservers thì có thể đáp ứng 300,000 users cùng một lúc.
+ NLB cho phép 1 user luôn luôn hướng vào 1 server, có nghĩa là nếu 1 server nào đó chết thì user sẽ mất session của họ và họ cần đăng nhập lại. Giải pháp này khá thô sơ, tuy nhiên thì với 1 website hẹn hò thì nó lại là khá hợp lý (không phải thanh toán trực tuyến).
+ Chi phí của ServerIron rẻ hơn và đơn giản hơn sử dụng NLB, rất nhiều site lớn sử dụng ServerIron để gộp các kết nối TCP và nó có thể làm được nhiều hơn ngoài việc cân bằng tải như là firewall. Và nó là giải pháp mang tính chất phần cứng nhiều hơn.
- Có 1 vấn đề lớn là việc chọn máy chủ phục vụ cho việc quảng cáo. Tuy nhiên giá thành là khá đắt đỏ cho giải pháp quảng cáo đó là tốn khoảng vài trăm ngàn $/năm và hợp đồng dài hạn.
- Sự tăng trưởng của POF chủ yếu là qua truyền miệng, đầu tiên nó được sử dụng chủ yếu ở Canada, sau đó tới Anh, Úc và bây giờ là ở Mỹ.
- Database
o 1 database chính để lưu trữ dữ liệu cho người dùng.
o 2 database cho việc search. Cân bằng tải cho việc search dựa vào loại search mà người dùng sử dụng.
o Điều khiển tải và giám sát hệ thống sử dụng task manager . Vấn đề lớn nhất của Database đó là bị khóa và lỗi từ DB là lỗi mà POF chiếm nhiều nhất. POF được lập trình bằng ASP.NET nhưng không sử dụng 1 thư viện nào của .NET cho nên nó hầu như không gặp vấn đề nào lien quan đến .NET Framework. Theo Markus khi bạn sử dụng thư viện của .NET thì khi có lỗi lập trình xảy ra bạn rất khó dò ra lỗi ở đâu và cảm giác của lập trình viên sẽ rất chán nản.
o Nếu bạn gọi database 20 lần trong 1 lần tạo trang web thì có nghĩa là bạn đang bị say :P
o Nên tách biệt việc đọc và ghi DB. Cố sử dụng DB chỉ đọc nếu có thể!
o Không chuẩn hóa dữ liệu, nếu bạn đang cần lấy dữ liệu từ 20 bảng thì hãy cố gắng tạo ra 1 bảng chứa chúng và bảng đó được sinh ra chỉ phục vụ cho việc đọc mà thôi. Nếu sử dụng cả thao tác đọc ghi trên cùng 1 bảng thì vấn đề khóa bảng hay tắc nghẽn sẽ thường xuyên xảy ra hơn.
o Nếu bạn đang sử dụng CPU ở mức rất cao thì có nghĩa là bạn đã làm điều gì đó sai hoặc là nó chưa được tối ưu hóa. Hãy đưa DB lên RAM nếu có thể.
- Quy trình phát triển:
o Đưa ra ý tưởng.
o Code và thực thi nó trong vòng 24h.
o Theo dõi phản ứng của người dùng.
o Nếu người dùng không thích thì gỡ nó xuống.
- Thực tế hệ thống POF thường rất ít bị lỗi, lỗi chủ yếu xảy ra do các ISP không phân dải được domain về đúng IP. Nhưng thường lỗi xảy ra trong một thời gian rắt ngắn và người ta thưởng không để ý tới chuyện không truy cập được, đơn giản họ nghĩ là do họ.
- Từ 1 triệu người, đến bây giờ POF đã có tới 12 triệu người và hệ thống có thể chịu được 60 triệu người chỉ với 2 webserver.
- Thường xuyên quan sát đối thủ cạnh tranh để đưa ra những ý tưởng mới cho tương lai.
- Sẽ xem xét những giải pháp như S3 để cân bằng tải theo địa lý
Bài học rút ra
- Bạn không cần hàng triệu tiền để đầu tư, cơ sở hạ tầng tốt, hay 1 tòa nhà đầy nhân viên để tạo ra 1 trang web đẳng cấp thế giới thu hút người sử dụng và có thể kiếm tiền tốt. Tất cả những gì bạn cần là 1 ý tưởng hấp dẫn nhiều người sử dụng.
- Bạn phải phát triển mọi thứ thật nhanh khi cần thiết.
- RAM giải quyết mọi vấn đề khó khăn trước mắt mà kỹ thuật trước mắt chưa giải quyết được. Sau đó mới dùng đến các máy chủ có cấu hình mạnh hơn.
- Khi khởi đầu nên giữ mọi thứ đơn giản, và lắng nghe những người có thể đưa ra lời khuyên cho bạn.
- Giữ cho database luôn được truy cập nhanh nhất và ko có lỗi.
- Một lý do khiến POF có thể đáp ứng được nhiều người đó là thiết kế hệ thống sử dụng các hệ thống CDN sẵn có.
- Quảng cáo trên facebook ko mang lại hiệu quả. Với 2000 click chỉ có 1 người đăng kí. Với CTR là 0.04% , với 1000 lần quảng cáo ta có 0.4 click ( hay là 0.4 click/CPM ). Với 5 cent/CPM ~ 12.5 cent 1 click.
- Thật dễ dàng để bán 1 triệu lượt xem ở nơi có CPM cao. Nhưng khó hơn rất nhiều để bán hàng tỉ lượt xem ở những nơi phổ biến như Facebook.
- Nếu tự phát triển hệ thống quảng cáo riêng cho một website thì không cần thiết. Như thế sẽ tốn nhiều chi phí để duy trì hệ thống quảng cáo và kiếm tìm người bán quảng cáo. Hãy tận dụng các hệ thống quảng cáo có sẵn nếu có thể.
- Phát triển trang hẹn hò qua facebook ko hiệu quả. Phần lớn người truy cập Facebook từ bên ngoài nước Mỹ và bạn còn phải chia 5% CPM cho facebook.
- Bạn không cần thường xuyên phải lắng nghe phản hồi người dùng. Phần lớn mọi người luôn thích tính năng mới, 1 số ít thì ko. 1 số thì luôn phàn nàn.
http://socbayorigami.blogspot.com