
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网技术的不断发展,越来越多的企业都开始通过云技术来实现数据的云空间存储。今天,我们就一起来了解一下,零基础入门云技术都有哪些学习方法。
本文不是教你如何在AWS上开发网站。而是通过一个网站示例来介绍AWS提供给你的所有技术服务。通过概念的学习和实际操作,你能够对AWS有非常全面的了解。
本文将从基本的网页开始,后使用极其便宜的ASW构建Web应用程序。虽然网站很小,但是无所谓。它可以做任何你想做的事情,可谓麻雀虽小,五脏俱全。
示例网站名为“每日财富”,每次加载页面随机显示一个财富值,在页面底部提供一个输入框和一个按钮,通过这两个组件向随机财富列表中添加新的财富数据。
帐户相关的基础知识
创建一个IAM用户供你个人使用。
为root用户设置MFA,关闭所有root用户的API密钥。
设置帐单提醒,以便超过指定的价钱后你能够及时知道。
使用API凭证为你的用户配置AWS CLI。
本阶段目标:你可以使用AWS CLI查询你的AWS账户信息。
虚拟主机的基础知识
部署EC2虚拟机并显示一个简单的静态网页,页面上呈现“每日财富网站即将推出”的字样。
拍摄虚拟机快照,接着删除虚拟机,然后从快照中部署一个新的虚拟机,并选中基本的磁盘备份和磁盘还原功能。
本阶段目标:你可以查看EC2实例提供的简单HTML页面。
弹性伸缩配置
从虚拟机中创建一个AMI并将其放入弹性伸缩组中,确保至少有一个虚拟机在运行。
给虚拟机添加弹性负载均衡器,并在两个可用区域之间实行负载均衡。
本阶段目标:你可以查看来自两个EC2实例的简单HTML页面。你任意关闭其中一个,网站仍然可以访问。
数据库访问
创建一个DynamoDB数据库表,并手动执行数据插入和检索操作,然后通过本地计算机上的脚本执行相同的操作。
将你的静态页面重构为每日财富网站,使用Node、PHP或者Python都可以,对AWS DynamoDB数据表中的财富数据执行读取和更新操作。
本阶段目标:你的网站现在可以在用户和会话之间将数据加载并保存到数据库中。
虚拟主机PaaS
将这个简单的网站重新部署到Elastic Beanstalk上。
创建一个静态的S3 Bucket,上传一些静态的页面文件和图片,并将这些资源添加到你的Elastic Beanstalk网站。
注册一个域名,或者使用现有的域名,总之你得有一个。然后配置Route53域名服务。把www.<你的域名>.com指向你的Elastic Beanstalk,并配置static.<你的域名>.com从S3 Bucket获取数据。
为你的静态S3网站启用SSL,这很重要。
为你的Elastic Beanstalk网站启用SSL。
本阶段目标:你的网站现在通过HTTPS提供所有数据。除非你不必自己管理服务器、Web服务软件、网站部署或者负载均衡器,否则将会与从前一样。
微服务
对你的Elastic Beanstalk网站进行重构,使其仅仅提供API。只能通过POST和GET从DynamoDB数据库更新和检索特定的数据。使其成为一个简单的REST API,把api.<你的域名>.com 作为URL提供。
将你的Elastic Beanstalk网站的UI部分移到你的静态S3网站,当页面加载时使用Javascript从api.<你的域名>.com URL中检索数据。将数据发送到Elastic Beanstalk URL以使其更新DynamoDB数据库。将数据地址从static.<你的域名>.com改为www.<你的域名>.com。
本阶段目标:你的Elastic Beanstalk部署现在只是一种从数据库检索数据的结构化方式。所有UI和应用程序逻辑均通过S3 Bucket提供。由于你不再使用昂贵的服务器来提供网站的静态数据,因此你可以支持更多的用户。
Serverless
编写一个AWS Lambda函数,每天晚上定时将DynamoDB表中的所有财富数据通过邮件发送给你。可以使用Python 3的Lambda、Boto3、亚马逊 SES或者CloudWatch的预定功能都可以。
将上述应用重构为无服务器应用。这有点抽象,你需要自己做很多研究和实验。
架构:静态S3网站前端调用API网关,它执行Lambda函数来读取和更新DyanmoDB表中的数据。
使用启用了SSL的存储区作为包含静态内容的主域名登录页面。
创建一个AWS API网关,使用它将HTTP请求转发到AWS Lambda函数,该函数从DynamoDB查询与Elastic Beanstalk微服务相同的数据。
你的S3静态内容应该使用Javascript调用API网关,然后使用检索到的数据更新页面。
先提供“Get Fortune”API网关并确保Lambda函数能够工作,然后提供“New Fortune”API。
本阶段目标:你的API网关和S3 Bucket 由CloudFront通过SSL进行配置。你没有部署EC2实例。所有工作均由AWS服务完成,根据使用情况计费。
成本分析
熟悉AWS的定价方式,了解满足自己服务的低价。
当你构建服务时,问问自己下列问题:
每个月大概会花费多少钱?
将会进行怎样的扩展,成本会如何变化?
明确架构
基本虚拟主机:静态网页使用HA EC2实例即可
微服务:Elastic Beanstalk SSL仅适用于API + S3的静态网站,所有静态内容的静态网站还需DynamoDB 数据库表+ Route53 + CloudFront SSL
本阶段目标:使用API网关+ Lambda函数的无服务器网站+针对所有静态内容的DynamoDB + Route53 + CloudFront SSL + S3静态网站
自动化
这些技术在自动化时为强大。你可以在几分钟内创建一个开发环境,体验之后可以随意抛弃。这并不容易,只有真正熟练的人才擅长这样做。
将上述系统进行自动化部署。使用任何你想要的工具。比较流行的是AWS CloudFormation或者Teraform。将代码存储在AWS CodeCommit或者GitHub上。是的,你可以使用原生AWS工具将上述所有内容进行自动化部署。
我的建议是,当你手动完成与应用程序相关的部分时,就会返回并自动执行基础架构的配置。比如,自动配置你的EC2实例。在启用静态网站托管的情况下自动创建S3 Bucket。这并不容易,但当你看到它工作时,这一切都是值得的。
持续交付
当你对自动化部署足够熟悉之后,你应该去探索并实施持续交付。
开发一个CI/CD管道,以便在新代码发布时自动更新基础架构的开发部署,然后构建一个工作流程以在批准时更新生产版本。Travis CI是一款强大的SaaS工具,Jenkins的关注度也很高,如果你想坚持使用AWS特有的技术,可以试试CodePipeline。
作者:SpectralCoding
译者:安翔
节选:infoq
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!