aws编写基础架构

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: aws编写基础架构

aws编写基础架构

AWS提供通过接口来控制的基础架构,叫作应用编程接口(application programming interface,API)。用户能通过API控制AWS的每一部分。用户可以使用大多数编程语言、命令行和更复杂的工具的SDK调用这些API。

在AWS上,一切操作都可以通过API来控制。用户通过HTTPS协议调用REST API来与AWS交互,如图


790b953904eb4bf3940916084c67dc6e.png


一切操作都可以通过API提供。例如,用户可以通过一个API调用启动一台服务器,创建1 TB存储,或通过API启动一个Hadoop集群。

前言

要列出S3对象存储里的所有文件,可以向API端点发送一个GET请求:

GET / HTTP/1.1
Host: BucketName.s3.amazonaws.com
Authorization: [...]


一、DevOps运作


DevOps(development operations)是软件开发驱动的一个方法,以便让开发和运维更加紧密地配合。其目标是能快速发布开发好的软件,并且没有损失质量。因而开发与运维的沟通与合作就变得必需了。


只有把代码修改和代码部署的过程完全自动化,才有可能在一天内部署多次代码。如果用户提交源代码到代码库中,源代码将被自动构建并使用自动化测试进行测试。如果构建结果通过了测试,它会自动安装到测试环境。接下来可能触发一些集成测试。集成测试通过后,这个更改会被传送入产品。但是这还不是流程的结束,现在用户还需要仔细监控系统并实时分析日志,以确保更改是成功的。


如果用户的基础架构是自动化的,用户可以为每一个提交到代码库的更改启动一个新系统,用来单独运行与同一时刻提交到代码库中的其他代码隔离的集成测试。任何时候有代码变动,将创建一个新系统(服务器、数据库和网络等)来单独运行这一变动。


二、使用步骤

1.开发一种基础架构语言:JIML

为了易于详细理解基础架构即代码,人们开发了一种新语言来描述基础架构:JSON基础架构标记语言(JSON Infrastructure Markup Language,JIML)。

础架构包含以下内容:

负载均衡器(LB);

虚拟服务器;

数据库(DB);

DNS域名入口;

内容分发网络(CDN);

静态文件存储桶。

为了减少语法问题,我们让JIML基于JSON格式。代码清单4-1所示的JIML程序创建了图4-2所示的基础架构。$表示指向一个ID的引用。

用JIML描述基础架构

 "region": "us-east-1",
 "resources": [{
  "type": "loadbalancer",
  "id": "LB",
  "config": {
   "server": {
    "cpu": 2,
    "ram": 4,
    "os": "ubuntu",
    "waitFor": "$DB"
   },
   "servers": 2
  }
 }, {
  "type": "cdn",
  "id": "CDN",
  "config": {
   "defaultSource": "$LB",
   "sources": [{
    "path": "/static/ *", "source": "$BUCKET"
   }]
  }
 }, {
  "type": "database",
  "id": "DB",
  "config": {
   "password": "***",
   "engine": "MySQL"
  }
 }, {
  "type": "dns",
  "config": {
   "from": "www.mydomain.com",
   "to": "$CDN"
  }
 }, {
  "type": "bucket",
  "id": "BUCKET"
 }]
}

2.最后的步骤

伪语言命令翻译成AWS API调用——这里省略了。我们已经学习了基础架构即代码所需的一切:都与依赖相关。

现在我们理解了依赖关系对于基础架构即代码有多重要,让我们来看看如何使用命令行创建基础架构。命令行是实现基础架构即代码的一种工具。


JSON是怎么被转换成AWS API调用的呢?

(1)解析JSON输入。

(2)JIML解释器将资源和它们的依赖项连接起来,创建一张依赖图。

(3)JIML解释器从底层(叶子)到顶层(根)遍历依赖图中的树,然后产生一个线性的命令流。这些命令由一个伪语言来表达。

(4)然后JIML运行环境将这些伪语言的命令翻译成AWS API调用。

总结

`基础设施即代码“基础架构即代码”表达了使用高级编程语言来控制IT系统的思想。在软件开发中,自动化测试、代码库和构建服务器提高了软件工程的质量。如果用户的基础架构可以当作代码来对待,用户就能够对自己的基础架构代码和自己的应用程序代码使用相同的技术。最终,用户将可以使用自动化测试、代码库和构建服务器来改善基础架构的质量。


不要混淆基础架构即代码与基础架构即服务(IaaS)的概念!IaaS指的是按照使用量进行付费的租用服务器、存储和网络的业务模式。


相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
3月前
|
Cloud Native Serverless 异构计算
Serverless 架构问题之AWS Lambda在容器镜像层面的进展如何解决
Serverless 架构问题之AWS Lambda在容器镜像层面的进展如何解决
45 0
|
11月前
|
JSON 运维 监控
云端部署:使用AWS Lambda与公司流量监控软件实现无服务器架构
在当今数字化时代,跨平台移动应用的开发已经成为企业推广业务的一项关键工作。为了更好地监控和分析应用程序的性能,公司流量监控软件的整合变得至关重要。本文将介绍如何使用AWS Lambda和公司流量监控软件,构建一个高效的无服务器架构,实现对跨平台移动应用的流量监控。
286 0
|
存储 前端开发 JavaScript
【微前端架构】AWS 上的微前端架构
【微前端架构】AWS 上的微前端架构
|
NoSQL 网络协议 安全
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
245 0
|
NoSQL 网络协议 安全
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
Linux系统:第十二章:AWS服务器X86架构安装配置Mysql与MongoDB
218 0
|
存储 数据采集 安全
在AWS上的架构部署与设计
本次分享主要介绍在 AWS 平台上构建 IT 基础设施的基础知识, 您将通过了解各项 AWS 服务及其如何融入基于云的解决方案来了解如何优化 AWS 云。涵盖最佳实践和设计模式,以帮助您在 AWS 云上构建最佳的 IT 解决方案。
在AWS上的架构部署与设计
|
存储 分布式计算 监控
基于AWS的广告服务应用架构
互联网广告服务需要在有限时间内完成定向广告,这是需要面对的技术挑战。AWS提供了在云端构建可靠的,容错的,高可用系统的基础设施和服务。
875 0
|
存储 应用服务中间件
基于AWS的文件同步服务系统架构
鉴于Web服务上的资源可以通过它们的URL就能识别,采用无状态的客户端 - 服务器架构,开发团队就可以为部门间,为企业,或者直接用于消费者自由地创建应用完成文件共享和同步。
710 0
|
存储 数据中心
基于AWS的媒体共享系统架构
媒体共享是互联网上最热门的市场之一。客户有强烈的欲望将照片和视频放在社交网站上,并在自定义的在线相册分享他们的媒体内容。媒体共享的日益普及意味着网站所有者面临着不断增长的存储和带宽需求,加快市场商用的压力,以及提供比竞争对手更快性能的问题。
784 0
|
Web App开发 分布式计算 监控
基于AWS的web日志分析系统架构
AWS提供的服务和基础设施能够在云环境中建设可靠,容错和高可用的Web应用程序。在生产环境中,这些应用产生大量的日志信息。这些数据是任何公司运营web应用程序的重要知识来源,分析日志可以揭示信息,如交通模式,用户行为,市场资料等。
1039 0
下一篇
无影云桌面