设为首页 - 加入收藏 湛江站长网 (http://www.sieduca.com)- 中小站长们必上的网站 - 聚焦湛江站长前沿资讯!
热搜: 网站 站长之家 什么 平台
当前位置: 首页 > 业界 > 正文

使用无服务器架构的六个月里,我学到的六件事

发布时间:2018-11-08 00:08 所属栏目:[业界] 来源:Docker
导读:副标题#e# 在十月份的Serverlessconf巡讲之后,我决定领导整个公司走向无服务器架构。最初我花了几个月时间来尝试将Python Flask应用程序[1]迁移到Lambda,这些经历帮助我后来找到更好的方法。 在六个月之后,我们已在无服务化地部署我们的第四个主要项目。

在十月份的Serverlessconf巡讲之后,我决定领导整个公司走向无服务器架构。最初我花了几个月时间来尝试将Python Flask应用程序[1]迁移到Lambda,这些经历帮助我后来找到更好的方法。

在六个月之后,我们已在无服务化地部署我们的第四个主要项目。以下将讲述我们在此过程中学习到的经验以及对此的一些强烈建议。

#1-抛弃Python

Flask是一个挺不错的小框架,用于由服务器管理会话的站点,使用旧式的请求-响应方式。在交互式网络的新世界中,这就像是用橡皮筋和橡皮刮板来试图建造一个房子一样,非常古怪。

使用无服务器架构的六个月里,我学到的六件事

使用无服务器架构的六个月里,我学到的六件事

旧式的部署架构

当你开始将更多工作转移到客户端这边以支持交互时,你没有其他选择只能选择JavaScript。这通常会导致(很多奇怪的东西)内嵌到Python模板里,而技术债务则越积累越多。

Flask的解决方案逐渐成为不同语言的集合体。很快我就得出结论,这种方法将会造成一些可怕的混乱,导致我开始怀疑我为何要再使用Python了。

在切换到Node之后,很多东西都变得可维护且合理,并且也不再需要使用多种语言。通过Webpack上简单的Node/Express配置,你还可以使用ES6来消除Python开发者带来的糟糕的JavaScript的代码结构。

在Zapppa/Flask尝试做同样的事情简直比登记纳税更不友好。在5分钟内,你可以构建一个可以在Lambda上运行的完全成熟的Node/Express应用程序,就像1040EZ那样,这非常简单。所以我们放弃了Python并加入了JavaScript的阵营。

使用无服务器架构的六个月里,我学到的六件事

将Lambda函数作为整体

为此我们放弃了什么呢?Python支持者们会声情并茂地向你推荐所有酷炫的语言特性,但与JavaScript的实际异步魅力相比,这些仅仅只是玩具。而且我们现在也不需要再担心使用Python 2还是Python 3了(也不知我们到底有没有升级过……)。至少在我们的项目上,我们很容易就完成了转换。

当然,Ben Kehoe还抛出了一项引人注目但同时令人震惊的[2]观点:在无服务器架构中利用Python替代Node。

使用无服务器架构的六个月里,我学到的六件事

#2-推翻掉之前的架构

我们花费了大量的时间才意识到无服务器架构的明显好处,可能是因为我们一直是在构建Web应用程序(闭门造车),或者也有可能只是因为我老了。

我们最初的一些Web应用程序仍然有一个Node Express层来记住会话状态,(1)希望用户能总是请求到同一个Lambda容器,(2)悲剧的是在设计中也滥用了DynamoDB来保持会话ID。我们到底在做什么?!

在过渡时期的第一阶段,我们做了错误且可怕的就是我们的中间层跟Lambda上的Web服务器一样,导致我们最终得到了到处是JavaScript去调用REST API的html页面。这种做法非常原始,极度难以维护,并且很快就变得脆弱,但我们已经移除了中间层。在无服务器架构中,中间层必须去除。

使用无服务器架构的六个月里,我学到的六件事

应用状态移到客户端,业务逻辑迁去Lamdba

#3-尽情享受Vue

能够将所有东西都塞进前端感觉非常棒,但它很快就发展成一个令人震惊的混乱局面。你最终停止代码审查,因为你觉得分享你一直在开发的那些华而不实的机器语言黑魔法太尴尬了。并且“不审查代码”对开发人员来说不是一个很好的工作目标。

我在了解单页应用(SPA)领域时接触到了React,它是当前最流行的构建用户界面的方案。React很棒,但是它的学习曲线陡峭,有很多Webpack/Babel相关的设置,并且引入了JSX。虽然它可能是我们最终使用的东西,但它对于我们的当前需求来说太重了,所以需要调研其他替代方案。

幸运的是我很快就发现了Vue.js,我的无服务器生活开始走向极乐。事情是这样的:你甚至可以在一天内就学完Vue!

Vue的设计方法非常适合我们的设计模型,一切都是能自管理内容,设计和代码的组件。这使得管理我们的多个客户端项目和分散的团队变得非常容易,并且非常适合无服务器的思维模式。

这个开源的JavaScript框架为你提供强大的调试工具,出色的组织以及能为你节省数小时的开箱即用的Webpack构建。尤其是路由和商店管理插件,你可以像Facebook工程师那样制作实时有趣的应用。谁能想到制作单页应用可以这么简单?

从无服务器的角度来看,Vue将你的所有实现代码编译成index.html和bundle.js文件,并可上传到S3。新的编译命令仅需简单运行npm run build。

仔细想想,在以前,我们通过Elastic Beanstalk部署应用并监控利用率,在需要时进行自动扩展以及还需要管理合理的基础架构。

SPA真正的神奇之处在于,当你部署应用程序时,你只需将index.html,bundle.js和少量文件依赖项复制到由CloudFront分发前端的S3存储块中。这为你提供了稳定的分布式和加载行为,并且还支持多版本管理以及任何你想要的部署方法,可能只需管理文本文件。

理论上来说我们能将规模扩展到无限,同时只对我们已使用的服务付费,其中完全没有应用程序基础设施管理成本。

使用无服务器架构的六个月里,我学到的六件事

Vue本质上允许你在浏览器中构建桌面应用程序,这意味着你可以显著改善用户体验。所有状态都可以在这里进行管理而无需无休止的请求/响应,你可以使用标准UI技巧(如过渡效果)来隐藏延迟,并且整个应用程序仍可以正常运行。

#4-爱上DynamoDB

从很多方面来看,实现无服务器最难的部分是真正掌握DynamoDB。你肯定会在前几次迭代中犯一些错误,且会很轻易放弃所有并重新回到RDS,毕竟曾经在这个舒适圈里都很熟悉这些。

SQL在很长一段时间都是我所依赖的,我承认我将过多的业务逻辑放入数据库中。但RDMS系统只是另一个整体,它无法很好地扩展且不能支持有机发展敏捷系统的需求。

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章
金亚洲投注