我喜欢做操作,我真的做。 没有什么比设置服务器,选择我最喜欢的Linux发行版,升级这些服务器,确保它们可扩展,配置适当数量的打开文件限制,SSH授权以及安装所有必需的东西更重要的了。
哦,等等-现在有Docker。 只需编写一个Dockerfile,构建它,将其发送到docker存储库,然后配置自动伸缩组并将docker映像附加到它们,别忘了我们需要构建它并将其连接到CI。 一点点黑客攻击才能为开发人员运行它们-哦-我们还需要统筹所有这些对象。 好吧,一切都这么简单。 我不知道为什么我的同事们觉得困难,而我必须一直做所有的工作并不断解释。
现在认真。 我真的很喜欢做ops / dev-ops,它拥有我喜欢计算机的所有美好事物。 您有问题,可以解决,您的团队爱您,因为它可以使一切工作得更好。 这是开发人员和小型创业公司的问题,可能会占用您太多时间。
对于当前的初创公司,我决定尽可能多地禁止操作 。 为什么?
- 关注我们的产品,而不是运行它的基础结构。
- 无需进行任何扩展即可扩展的基础架构。
- 生活更加快乐 ,减少了服务器故障,流量高峰和安全问题的事件警报。
我曾经嘲笑使用诸如Heroku之类的服务的人-这些人对事情的运作一无所知...但是实际上,他们不一定总是必须这样做,至少起步时并非如此。
无操作基础架构有一些要素,第一个要素是使用静态Web应用程序,并删除网站的Node.js / Rails / whatever层。 托管静态文件时,操作空间较小。 第二个是使用FaaS解决方案来处理动态操作和API。 这些功能可以根据需要运行,因此它们可以无限扩展*,并且其成本应比24x7全天候运行的服务器少。
(* —无休止地如“ AWS可以处理此问题”中所述)
我们使用什么工具? 我可以推荐以下内容:
Netlify是用于静态Web应用程序的CDN。 Netlify连接到GitHub存储库,构建我们的静态站点并将其部署到世界各地。
AWS Lambda是一个FaaS解决方案。 我们将其用于后台处理作业-无需保持服务器正常运行。 它按广告宣传工作,但并非最容易使用。 一些开源项目旨在抽象化这种复杂性,例如Apex , Serverless等。 我们使用Apex和本地工具在本地运行代码。
现在 , zeit.co将代码部署到不可变服务器,并在需要时在内部对其进行扩展。 虽然我希望以FaaS的形式运行所有代码,但将其视为一个应用程序会更容易。 我们将Node.js API服务器部署到Now ,并且运行良好。 有一个选项可以将整个Node.js应用程序(由Hapi.js驱动)移动到一个FaaS,但是我们目前不使用它。
AWS RDS管理我们的关系数据库。 几乎不需要任何操作,但目前是dev-op的主要重点。
有些事情仍然没有解决:
- 静态Web应用程序可能需要花费更多时间来加载,因为首先需要加载所有JS。 基于服务器的解决方案可以是通用/同构/服务器渲染的应用程序,它打破了静态托管的想法。 Web Worker可以用于缓存数据和应用程序外壳,以提高性能。
- 静态Web应用程序上的身份验证不是很好 。 首先需要加载应用程序,然后由API服务器确定用户是谁,然后才可以向他们显示正确的页面:登录页面或应用程序本身。
- 在Lambdas上本地工作并非最简单 ,您可能需要编写自定义脚本才能在计算机上运行它们。 Localstack是一个模拟AWS环境的开源软件,但我认为解决方案应该是抽象出正在运行的Lambda,而不是模拟AWS本身。
我提到的服务都在幕后在AWS上运行,但是将开发人员抽象化了。 我想知道这种抽象是否可以永久存在或在某个时候成立,是否需要回到AWS本身。
如果您喜欢这篇文章,请单击❤并分享。
From: https://hackernoon.com/the-blueprints-of-a-no-ops-startup-e3cf0c9229d2