在今天的文章中,我整理出了大量当初曾经错过、而至今仍将我追悔莫及的Amazon Web Services(简称AWS)使用心得。在几年来的实践当中,我通过在AWS之上新手构建及部署各类应用程序而积累到了这些经验。虽然内容有些杂乱,但相信仍然能给各位带来一点启示。

从物理服务器向“云环境”转移的过程不仅仅是一项技术任务,同时也意味着我们的思维方式需要作出针对性的转变。总体而言,在物理环境下我们需要关注的只是每一台独立主机; 它们各自拥有自己的静态IP,我们能够对其分别加以监控。而一旦其中一台发生故障,我们必须尽大可能让其快速恢复运转。大家可以以为只要将基础设施转移到AWS环境之下,就能直接享受到“云”技术带来的种种收益了。遗憾的是,事情可没那么简单(相信我,我亲身尝试过了)。在AWS环境之下,我们必须转变思维,而且这方面的任务往往不像技术难题那么容易被察觉。因此,受到了SehropeSarkuni最近一篇帖子的启发,我将自己几年来积累得出的AWS 使用心得汇总于此,而且说实话、我真希望自己当初刚刚接触AWS时能有人告诉我这些宝贵经验。这些心得总结自我在AWS之上部署个人及工作应用程序时的亲身感受,其中一部分属于需要高度关注的“疑难杂症”(我自己就是直接受害者),而另一部分则是我听其他朋友说起过、并随后亲自确认有效的解决方案。不过总体而言,为了积累这些经验,我确实付出了相当惨痛的代价:)

应用程序开发

千万不要把应用程序状态保存在自己的服务器上。

之所以这么说,是因为一旦我们的服务器发生故障,那么应用程序状态很可能也随之彻底消失。有鉴于此,会话应当被存储在一套数据库(或者其它某些集中式存储体系、memcached或者redis当中)而非本地文件系统内。日志信息应当通过系统日志(或者其它类似方案)进行处理,并被发送至远程位置加以保存。上传内容应当直接指向S3(举例来说,不要将其存储在本地文件系统内,并通过其它流程随后迁移到S3)。再有,任何已经处理过或者需要长期运行的任务都应该通过异步队列(SQS非常适合处理此类任务)来实现。

编辑点评:对于S3上传内容而言,HN用户Krallin指出,我们可以彻底避免其与自有服务器的接触,并利用预签名URL保证用户的上传数据被直接发送至S3当中。

将额外信息保存在日志当中。

日志记录通常包含有时间戳以及pid等信息。大家也可能希望将实例id、服务区域、可用区以及环境(例如分步环境或者生产环境等)添加进来,而这些都能在日后的调试工作中作为参考。大家可以从instance metadata service当中获取到这些信息。我所采用的方法是将这些信息作为引导脚本的组成部分,并将其以文件形式存储在文件系统当中(例如/env/az或者 /env/region等)。这样一来,我就用不着持续查询元数据服务来获取这些信息了。大家应当确保这些信息能够在实例重新启动时得到正确更新,毕竟我们都不希望在保存AMI时发现其中的数据还跟上次完全一样,这肯定属于非正常状况。

如果我们需要与AWS进行交互,请在当前语言中使用对应SDK。

千万不要试图自己动手。我当初就犯过这个错误,因为我认为自己只是单纯需要向S3上传内容,但随着后续服务的持续增加、我发现自己的决定简直愚蠢至极。AWS SDK的编写质量很高,能够自动处理验证、处理重试逻辑,而且由Amazon官方负责维护与迭代。此外,如果大家使用EC2 IAM角色(大家绝对应该这么做,这一点我们后面会进一步提到),那么该SDK将帮助我们自动获取到正确的证书。

利用工具查看应用程序日志。

大家应当采用管理员工具、系统日志查看器或者其它方案,从而帮助自己在无需在运行中实例内使用SSH的方式查看当前实时日志信息。如果大家拥有集中式日志记录系统(我强烈建议大家使用此类系统),那么当然希望能在不使用SSH的情况下完成日志内容查看任务。很明显,将SSH引入正处于运行状态的应用程序实例会引发诸多弊端。

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2022-10-20 11:31:46
国际资讯 投资50亿,AWS将在泰国曼谷推出云区域
目前,AWS在亚太地区共运营着10个区域,包括新加坡、澳大利亚、印度尼西亚、日本、印度和韩国。它还在泰国曼谷拥有10个CloudFront边缘站点。 <详情>
2021-11-09 16:32:13
国际资讯 亚马逊AWS计划在加拿大西部新建数据中心
11月9日消息,当地时间周一亚马逊宣布将在加拿大西部建设数据中心,提升公司在加拿大市场的云服务连接速度和信息存储能力。 <详情>
2021-11-01 11:04:58
云资讯 亚马逊第三季度财报:AWS增长提速,收入达161亿美元
AWS的收入增长是由包括机器学习在内的广泛服务基础推动的。 <详情>
2021-06-29 09:57:00
云资讯 AWS和Salesforce宣布深化合作 集成双方云产品简化应用项目
AWS和Salesforce正在展开合作进行集成,未来将把双方各自的大量云产品相互连接起来。 <详情>
2021-06-09 09:31:25
大数据技术 揭开AWS的Timestream数据库的面纱
AWS因不断推出新的云计算服务而闻名业界,不过AWS云计算服务太多了,客户往往难以了解所有的服务,AWS的数据库也不例外。 <详情>