大家好,欢迎收看Go Go时间。我是Mat Ryer,我刚刚进入制作阶段。今天的Go时间我们谈论的是关心HealthCare.gov,事实上,我认为为什么简单很重要,特别是在赌注变得更高的情况下;向所有素食主义者道歉。
当然可以。你不必说明你的喜好,但你可以,欢迎你这样做。
我们也加入了--我是《改变日志》中的杰罗德·桑托。你好,杰罗德。
不管菜单有多大,你都会去那个地方。
是啊,杂食动物。今天我们还请到了一位特别嘉宾,你可能还记得他在2015年GopherCon大会上的闪电演讲。我是保罗·史密斯。你好,保罗。
你有一个非常有趣的故事,但也许在我们开始之前,你可以告诉我们一些关于你的技术背景。你最初是怎么开始接触电脑的?
好的。嗯,我想对于80年代长大的男孩来说,这其实是一个很常见的故事-得到一辆准将VIC-20,一架准将64砰的一声放在你的大腿上…。可悲的是,在那个时代,所有的女孩都不常见,这是一种悲剧,但…。是的,输入基本程序,从杂志中取出机器代码程序,花很多时间在我的Commodores…上。我想我们曾经有过一个阿米加,也是…。上世纪90年代初,在高中的时候,我在当地的一家实验室实习。他们在学习--一个生物实验室,他们实际上对它有数学上的了解。因此,他们正在研究dna蛋白结合位点,以及当蛋白质与dna…结合时在那里发生的信息保守。分子机器之类的东西。不管怎么说,那是我第一次接触Unix,我写了Perl和C,同时这个新生的网络也刚刚起步--94年,95年。所以我这辈子基本上都是在电脑上打字。
这其中有多少是围棋呢?你到底写了多少围棋代码?
嗯,我第一次了解围棋是在2009年围棋推出的时候,它似乎立刻就吸引了我。我一直在编写Python,主要是为了工作,就像我的工作一样。在这一点上,我已经从事了大约十年的专业工作,主要是网络应用程序开发。非常标准的东西,特别是那个时代的东西--所以关系数据库支持的Web应用程序;我喜欢Python,我仍然认为Python是一门伟大的语言,但我记得Go当时感觉真的很好。感觉就像是什么--我记得我在那个实验室里和C一起工作过,这也重新燃起了一些那种感觉。
在我的工作中,我还突破了Python的一些限制,特别是在性能和伸缩…方面。是的,马上就感觉很好。直到那之后的几年,我才真正有机会与围棋进行专业合作,但我要说的是,从最早的时候起,我就一直在使用围棋,而且是围棋的粉丝。
那么,你最初是在小型初创公司工作吗?因为我认为创业公司的心态和你在创业环境中必须做的事情有一些有趣的地方。这是非常不同的,它可以是一个非常不同的情况与更大的企业公司,和Things…。我认为这可能在这个故事中起到了一点作用,不是吗?
是的,确实如此。所以我的第一份专业网络开发工作是在芝加哥…的一家小型非营利组织工作。我们是一家环保非营利性组织,我基本上是那里为数不多的网络开发人员之一,所以我有很大的自由来挑选技术。当时我记得在堆栈…非常早期的时候,我使用了冷融合和PHP,甚至是一些早期的Ruby on rails。但2007年,我与Django的创建者之一Adrian Holovaty共同创立了一家名为EveryBlock的初创公司。Django是Django的网络框架,名叫阿德里安·霍洛瓦蒂(Adrian Holovaty)。EveryBlock是一家超本地化的新闻初创公司。所以我们会在网络上收集不同来源的信息,关于在你附近、在你的街区、在你的社区发生的新闻--如果它发生在城市的另一边,你不会在意,但如果它发生在你的街区,你会非常关心它。
[]所以很明显阿德里安是Django的创建者,所以我们用Django来做这件事。因此,这让选择变得很容易,但我在这段时间里确实经历了一系列有趣的因素,导致您选择不同的技术或不同的堆栈…。但对我来说,这是关于表现力,我能在其中发挥多大的生产力,以及它的表现是否足够好。当然,Django,Python检查了很多这样的框,EveryBlock后来是一个相当成功的初创公司,尽管相对来说是短暂的。
它于2011年被微软全国广播公司(MSNBC)收购。它实际上是美国全国广播公司新闻…的一部分。因为我们有那个新闻视角。如今,人们对像Nextdoor和Facebook这样关于他们社区的地方新闻理所当然地认为是理所当然的事情。所以我们可以说是…的早期先驱之一。我们卖掉了公司,并继续工作了一小段时间,但…。我们在EveryBlock上做了一些有趣的事情。事实上,我最自豪的事情之一就是我们建立了自己的地图堆栈。
当时,如果你还记得2006-2007年,JavaScript引擎和浏览器开始变得更快,谷歌地图(Google Maps)应运而生,突然之间,你就像是“哦,你第一次可以在你的浏览器里做这些原生桌面应用程序一样的事情了。”事实上,EveryBlock的想法有点像谷歌地图的混合体,取走谷歌地图,然后使用它的API,并在上面贴上数据点。
当我们创建这家公司的时候,我们认为这会很棒,因为这将是这个项目的核心部分-你想要能够看一看你所在社区的地图,深入你的街区,看看哪里有新闻发生,…。当我说新闻时,我说的可能是新闻中提到的你的街区,或者是已经颁发的建筑许可证,或者是餐馆检查,或者诸如此类的事情。公共记录。犯罪信息。我们会把所有这些汇总起来,放到地图上。
谷歌地图很棒,但我们希望能够控制外观和用户体验…。因此,我们当时使用开放的地理空间工具从头开始构建了一个地图堆栈。OpenLayers,Mapnik,其他类似的工具,然后把它和我们用来从数据库中提取数据的Django应用服务器结合起来,然后在浏览器上呈现出来。
我们与一位伟大的设计师威尔逊·米纳合作,为地图本身设计了我们自己的调色板和设计,我认为它们看起来真的很漂亮。所以这是一种可视化数据的方式。这是一项相当有趣的成就。
现在你已经有了像Mapbox这样的东西,而且在浏览器中定制地图和地理空间体验方面也有了更大的灵活性。
是的,有很多SDK和我们可以只使用…的东西。但我想,当你没有这些的时候,有时你确实需要建造一些东西。
我们只是有点想通了,…。同样,因为我们是一家初创公司,我们可以尝试并帮助自己脱颖而出。
我正试着在脑海中描绘出从初创公司到政府承包商的道路。我很好奇你能不能带我们去散步。
嗯。因此,在Everyblock之后,我发现自己在支持奥巴马总统2012年的连任竞选活动,该活动的总部设在芝加哥。围绕着这场运动,有一项巨大的技术努力。这是第一次--嗯,技术曾经是他最初的Office竞选活动的一部分,但他们实际上把它带到了内部;我们将构建许多我们自己的工具,不仅用于网站,还包括我们如何与志愿者互动,如何接触潜在选民,如何组织和协调竞选…。在内部编写定制软件。
[]所以在他连任期间,我是民主党全国委员会的技术副主任。所以我们支持这场运动,想出了所有这些工具,并建立了运行这场运动的技术。事实上,那是我第一次想到围棋可以真正做到规模化的地方之一。因此,这导致了这一切最终在政府中如何结束,但我们正在建立工具,以支持选举的最后几天,那时数百万人将参加投票。当时,提前投票和邮寄选票不像现在那么受欢迎,原因很明显,…。但是我们正在开发工具来帮助他们走出去投票,所以主要是人们查看他们的投票站,“我去哪里投票?”
这是BarackObama.com网站上一个非常受欢迎的页面,我们决定在这种后端服务中做一个关键组件来查找,某种程度上是把你的家庭地址转换成投票站的数据库,在那里你实际上会去投票站(Vote…)。这里有一个关键组件,我们决定使用Go for来做中间层。因为我们知道它会是大容量的,我们想要低延迟,它表现得很棒。我知道在这一点上,Go是可以通过关键任务服务投入生产的。这让我对这门语言本身有了很大的信心。
很显然,总统再次当选,我是如何涉足政府技术的,大约一年后,HealthCare.gov即将推出…。对于你的非美国听众来说,美国的医疗保健工作与许多国家的情况略有不同。这主要是关于你的工作为你提供的医疗保险。这是大多数人获得医疗保险的主要方式。如果你年纪大了,你可以享受医疗保险,如果你贫穷或有残疾,你可以享受医疗补助,医疗保险和医疗补助是政府项目…。但总的来说,大多数人是通过他们的雇主获得的。
嗯,总统和国会通过了一项名为“平价医疗法案”的法律,它做了两件大事。首先,它创造了一个新的保险市场,这样人们就可以在这个市场上购买保险。它有补贴,所以你可以负担得起,而且有关于保险覆盖范围的规定。因此,它确保,如果你真的出现了,需要进行程序或类似的程序,去看医生和去医院,那就不只是垃圾保险了;它实际上涵盖了这些事情。因此,这是一个受监管的市场,它扩大了医疗补助计划,即为穷人和残疾人提供的计划。
所以它做了这两件大事,然后HealthCare.gov是他们主要向人们提供这项服务的方式。总统谈到希望通过该网站获得类似亚马逊的消费者体验。这就是我们的抱负。
2013年10月,这个网站上线了,马上就可以看出它不起作用了。新闻上都有报道,人们都在谈论这件事。这几乎是所有人都在谈论的。和我一起参加竞选活动的那些人,我说过的那个技术团队,互相发短信,互相传递信息,就像是“怎么回事?”我们怎么会在竞选方面做得如此正确,但当涉及到执政的这个真正关键的部分时,它又怎么会变得如此糟糕呢?“。我们在集思广益,“到底出了什么问题?”
[]我们并没有真正了解它,没有人真正了解…。所以在那次…之后的几天内我就接到了一个电话。这就像是2013年10月中旬。这封信来自托德公园,他当时是美国的首席技术官。因此,他在白宫内部担任美国…的首席技术官。他们正在组建一个团队。
基本上,他们想找一些有技术经验的外部人士,找出哪里出了问题,因为他们自己不知道网站出了什么问题。他们询问了从事这项工作的人,承包商和政府机构,他们不知道;他们不能把这些信息送到白宫,信不信由你。
于是我立刻答应了,我们中的一小部分人加入了托德的行列。我说的是个位数的人。
你知道,人们称我们为科技大潮,因为这就是媒体…对它的描述。
他们是不是用红色手机给你打电话,比如“我们需要你。立即报告“?
我的意思是,老实说,在电影中有一种老生常谈的时刻,就像你的国家-我的意思是,它真的是这样的,就像你的国家需要你一样。感觉就是这样,因为我们知道其中的利害关系。赌注非常高,我们可以实时看到这件事有点失败。
所以,是的,我立即答应了,我想第二天,或者可能是后天,我早上6点在白宫西翼前,会见了这个团队的其他成员,这个团队已经组成了…。然后它就从那里开始。
嗯,我们中的一些人在竞选时就认识了。这就是我们如何把这个团队整合在一起的联系。嗯,让我们从那些在竞选技术上做得很好的人开始,然后我们就从那里开始。“。因此,我在竞选团队中认识了另外一个人,但我们都是相对陌生的。我们的背景是软件工程师,或科技公司的产品经理,或者只是在硅谷的一家更广泛的初创公司工作--尽管我自己并没有在硅谷初创公司工作过,但仅仅是私营硅谷初创公司…的想法。这就是我们从中汲取的技术人才和经验。
所以这支队伍被请来了,救援队,复仇者联盟,如果你愿意…的话。另一支队伍怎么样了?事情出了问题,…。所以总的来说,我脑子里有一个想法(一个疯狂的想法),如果项目出了问题,你去找团队,然后开始问问题,“嘿,出什么事了?”你能给我介绍一下吗?“。你让团队有机会做出反应,拿出解决方案等等,这些都是你希望在任何其他组织中做的事情。但这听起来像是引入了这个团队,而真正开发技术的团队却被抛弃了,他们走了…。所以你刚拿到这个东西,他们就会说“修好它”?那是什么过渡?
嗯,我们不太了解…。所以这是一个非常重要的部分--创建HealthCare.gov的团队还在那里,从我们对…的理解来看。我认为这里有一些重要的背景--只要记住每天对这件事有多大的压力就行了。这个签名,政治性的东西。这件事几乎每天都会出现在新闻中。我们走进发生这一切的大楼,CNN的大堂里,大平板屏幕上都有这一幕的报道。(美国有线电视新闻网,美国有线电视新闻网)。
[]压力很大。建造它的人--因为它不是我们建造的,我们只是出现在那里,想弄清楚是怎么回事--他们还在那里。问题是--嗯,在某些方面,他们不知道他们不知道的东西,我马上就会讲到这一点,我这么说的意思是。
所以他们不太知道如何修复它,他们也没有做他们需要做的事情,把正确的信息传递给像总统、白宫西翼的人,他们试图对此进行操作分析,试图了解哪里出了问题,并试图沟通,试图确定如何修复它的优先顺序。他们没有做正确的事情,比如没有监控。就像,有,但它是不可访问的;它可能隐藏在一些人可以访问的VPN后面,但真的很难弄清楚“网站是正常的还是关闭的?”哪些部分是向上的或向下的?性能下降的原因是什么,基准是什么?“。所以那是不存在的。这是第一个问题。
没有能见度。或者是有的,但它是如此分割,对于那些需要根据这些信息做出决定的人来说,无论出于何种意图和目的,都是无法访问的。
这听起来也像是一种文化方面的东西,但…。是的,继续走。
我说的是不知道他们不知道的东西--如果我要总结的话,HealthCare.gov最初推出的根本问题是他们建造了错误的东西。因此,当他们设计、设计和建造网站时,他们头脑中的需求模型是错误的。我的意思是,他们需要推出的是高交易量、类似消费者的网络技术…。像亚马逊一样,或者像一项消费技术--很多人同时使用它,你想要低延迟,你想要良好的用户体验…。它正在处理大量重要数据,因此请确保正确处理;良好的数据完整性…。诸如此类的事情。但从根本上说,良好的消费者体验,即网站与你互动良好,会对…产生很好的反响。
但他们开发的是企业软件。他们设计了一台庞大而复杂的机器,它有一些企业组件,如果你让一个分析师坐在他们的办公桌前,这些组件可能会运行得很好,也许有12个并发用户曾经使用过这个东西;也许这会运行得很好。但这些都是…的基石。然后将其部署到没有弹性扩展的数据中心。你不能轻易地增加容量。
仅仅是规模是问题所在,还是它实际上没有按照它需要的方式工作?
对于一个交易型网站来说,这两种模式都是错误的概念模型,就像它需要的那样;错误的模型。他们设计错了房子。
然后它就不能扩展了。因此,您可以潜在地使用Scale,您可以投入资源来克服这些限制,…。但它的设计真的很难做到这一点。以及一些物理现实。我们想当然地认为,我们可以在AWS、Google Cloud、Azure或其他任何平台上启动一个虚拟机。2013年,政府还没有为所有这些事情做好准备。所以HealthCare.gov被部署到一个数据中心--你知道,他们有VMware,他们有一些类似的工具,但从根本上说,那里有很多服务器,就像“这就是HealthCare.gov机架。”就是这样。就像附着在上面的沙子,用于网络存储,像这样的…。但就像我说的,当流量开始流入,而各个组件的架构没有以低延迟和低响应的方式设计时,你就会开始遇到这些瓶颈,这些堆积如山,没有好的缓存…。因此,所有这些组件都会变得紧张和紧张,然后就会一连串地失效。
[]最重要的是,建造它的团队--他们正在看录像带。他们还在造东西。他们已经筋疲力尽了。他们没有很好地跨团队沟通。所以他们只是有一个很大很复杂的东西,形状不太适合他们需要的东西,而且它不是在一个物理位置,你只需要打开水平缩放旋钮…就可以了。然后就是缺乏沟通和协调。
所以,是的,我们在第一天就走进了这种情况,坦率地想:“哦,也许我们会在这里呆上几天,给他们一些下一步该做什么的想法,…。”我们一点也不知道,我们将在接下来的2,5-3个月里,基本上每周7天来让这件事扭亏为盈,…。因为考虑到我们所经历的一切,我们知道这是需要付出的代价。
那么,这些人是不是习惯于建立流量相对较低的政府网站,他们通常就像手工表单一样,变成了Web…。我们这里的地方政府尤其如此;他们感觉不太现代。只是字面上说,建造它的人的经验只适用于这些类型的系统,他们从来没有真正遇到过这种高吞吐量的情况?
是的,我想那是前任。
.