Pinterest 在扩展时面临哪些工程挑战?

垃圾邮件对他们来说是一个巨大的挑战。基于图像的垃圾邮件比基于文本的垃圾邮件更难检测,因为您不能简单地查找某些词(“减肥药”)。其次,Pinterest 的大部分内容都包含聚合用户活动的公共页面。这使垃圾邮件发送者更容易将他们的内容呈现在观众面前(与只有您的关注者才能看到您的内容的 Twitter/FB 相比)。第三,围绕 Pinterest 大肆宣传的是它是一种销售驱动力,因此它会比 Tumblr 更能吸引垃圾邮件发送者。第四,Pinterest 非常直观,垃圾邮件真的很突出并影响体验。因此,防止它对他们来说至关重要。
上周实际上有人入侵了我的帐户并发布了一些垃圾邮件,而且我不是唯一一个。我相信他们会很快控制住这种情况,因为他们有很多可用的资源,而且看起来像是一群聪明的人。
同意上述作者的部分观点:特定的浏览器功能和限制包括偶尔让我讨厌的无图像。破坏交易并不常见,但它很普遍。

其次,Sex.com 已经复制了它(NSFW)。如果 Pinterest 不能改进其功能集,并使自己对 iPhone5 非常友好,其他模仿者将不可避免地削弱其客户群。我们已经在这里刮到桶底了!

另一个挑战是检测受版权保护的图像。现在它可以隐藏在服务条款和使用协议的后面,但第一次停止和终止将挂起移动的开发工作……一个巨大的潜在用户群。

在不讨论应有的论文的情况下,我可以重复典型产品生命周期和设计的一些挑战。

1)开销……开发人员免费工作一段时间,然后他们必须得到补偿。他们为一个项目付出了鲜血、汗水和流动。 Pinterest Plus 会是一个残酷事实的答案吗?

假设:他们已经拥有一两轮沉默或潜在的风险投资。从工程的角度来看,他们已经在用户中打出了本垒打——现在它需要扩展 FAST 和 HARD。
—–
在房地产热潮期间,我的公司创造了一种产品,让用户可以轻松查看整个休斯顿的家庭市场。我们只有一个 SQL 服务器实例,每月向代理收取 15 美元/用户的费用。
—–
开源还没有流行,否则我们会走那条路。但是,还没有考虑到集群 LAMP 网站的方法,因此我们正在研究 Windows Server 2000 和 SQL Server Enterprise。

仅此一项就意味着我们需要约 200 名付费客户才能实现盈亏平衡。如果今天有 10,000 人想要 Pinterest Plus,并且他们预付了 10 年的费用,那么您可以只雇用一名高级开发人员来处理技术支持、浏览器问题、服务器维护、移动开发,以及可能的 2.0 主干。

因此,找到一个人(或两个大三学生)可以成为下一个 Twitter。如果不是这样,它可能会满足于成为 Digg 2.0 – 一个代价高昂的胜利。

2)安全。如果 Pinterest Pro / Plus 有支付方式,它需要符合 PCI-DSS,这本身就是一种职业。这不仅仅是购买 SSL 证书,而且超出了密码强制执行的范围。

我设计的第一个网站是合规的,我花了 300 美元建立了它,这对于一个没有建立网站经验的大学生来说是一大笔钱。但是,它无法满足可扩展环境的流量类型和要求。

这些天来,黑客、网络钓鱼者和诈骗者更加绝望——如果 LinkedIN 可以被黑客入侵,并且他们有一个完整的安全团队,Pinterest 已经完成了它的工作。它只是在等待浏览器承载的漏洞或社会工程,因为它是如此直观和令人上瘾。

3)安全!简单的基于 cookie 的登录由加密密钥(哈希)和用户 ID/密码组成。在强制执行中等到复杂的密码时,它本身几乎是牢不可破的,而且密码甚至不存储在数据库中。

但是,一旦您开始连接到社交媒体网站,您就可以发送 Auth ID 和密钥,或者只使用 OAuth——一个对工程师非常友好且通用的系统。这就像从训练轮毕业,Pinterest、Instagram、StumbleUpon、Google Plus、ShareThis、Disqus 和几乎任何其他流行的共享应用程序都优雅地完成了。

4) 用户信任 – 你如何摆脱巨魔和垃圾邮件?

a) 定义犯罪者。您有一个评分系统,可以对答案进行分类,例如 Yahoo Answers 或 Quora Upvotes。那些不回答问题或不相关的问题会很快得到分类。然而,Pinterest 进退两难,因为它非常主观。

你会在 Reddit 甚至亚马逊等网站上看到巨魔。这是一个仁慈的巨魔,对一件 T 恤进行了非常有趣的评论:http://www.amazon.com/The-Mountain-Three-Short-Sleeve/dp/B002HJ377A(工作安全)

它与 T 恤无关,甚至提到了枪支和毒品交易。我会买这件衬衫,除了我有太多的T恤。值得称赞的是,亚马逊对审查没有采取任何行动。

b) 客观地诱捕攻击性网站。这就像万有引力定律——它们不会弯曲或改变。

-SPAMCOP IP 地址检查失败 = 阻止
– 为受版权保护的图像添加数字水印 = 块
– 图像尺寸/质量太粗糙 = 块(无论如何图像识别都会失败)
– 超过 256 个 OCR 字符 = 块(垃圾邮件)
– 用户报告为恶意或垃圾邮件 = 阻止
内存、最大连接数、自动化和资源。没有特别的顺序。
这是模糊的,我道歉。内存问题是任何时候我们扩展站点以处理更多人,对我们的购买量是有限度的。在某些时候,一些系统内存不足(因为我们的大部分数据都在内存中),我们被迫做一些不同的事情。不幸的是,这并不总是可编写脚本的。这些“做不同的事情”阶段每次都更加困难,但相距甚远。做一些不同的事情可能意味着不同的分片或将数据存储在新系统中。
我们有很多服务器,在后端系统上最大化连接总是一个问题。我们可以利用代理和池来提供帮助,但就像内存问题一样,在某些时候我们会不断地遇到这个问题。
我们做了很多救火工作,因此在扩展方面还有一些工作可以更加自动化。这涉及在做正确的事(自动化)与快速做事(灭火)之间取得平衡。
最后是资源。我们的工程团队很小,有很多高优先级的任务需要完成。许多关键团队可以使用一两个优秀的工程师。因此,在不受到文化冲击的情况下快速增长是一项挑战,更不用说现在每个人都在招聘。
我不能谈论 Pinterest,但可以给你一些 Fashiolista 面孔的见解。 Fashiolista 是一个类似 Twitter 的时尚平台,因此在技术方面与 Pinterest 非常相似。此外,我们的堆栈看起来也很相似。我们是全球第二大时尚社区,因此虽然不是 Pinterest 规模,但我们面临许多相同的问题。

我们正在使用
– Cloudformation & Puppet 自动化我们的基础设施管理,这在您的团队规模较小时很重要
– 我们对所有内容进行非规范化(通常通过数据库触发器,有时通过应用程序内的多个数据库)
– 使用主键 where 子句而不是传统的基于偏移量的方法来完成分页
– 我们将 Redis 用于自然映射到列表的所有内容(总体上最新的爱,某人个人资料上的最新爱,活动流等)
– 我们使用 SOLR 进行基于标签的搜索,因为使用 DB 查询很难扩展
– CDN 性能对我们来说很重要,我们测试了几个并最终坚持使用 Cloudfront
– 服务器的所有配置都在 Github
– 我们使用 NewRelic 和 Graphite 来保持加载时间,请参阅我的新闻:
http://www.slideshare.net/thierryschellenbach/performance-metrics-for-a-social-network-v4
– 招聘确实是一个主要瓶颈,尤其是在欧洲
– 我们使用 Nginx SSI 使用两阶段模板缓存(以个性化边缘附近的页面)
即将发布更多信息的博文!