在AWS现代应用

||评论(

创新一直是亚马逊DNA的一部分,但大约20年前,我们通过一个激进的变革去与使我们的迭代过程 - 的目标。”发明,发射,彻底改造,重新开张,重新开始,冲洗,重复,一遍又一遍“ - 甚至更快。我们做了受影响的同时改变我们如何构建的应用程序,以及我们如何组织我们的公司。

当时,我们只有亚马逊今天的客户提供服务的数量的一小部分。但是,我们知道,如果我们想扩大产品,我们提供的服务,我们不得不改变我们走近应用架构的方式。

巨人,铁板一块“书店”应用和巨大的数据库,我们使用的电力Amazon.com限制了我们的速度和敏捷性。每当我们想添加一个新功能或产品为我们的客户,如视频流,我们不得不修改和重写的,我们会为我们的第一个产品,书店专门设计的应用程序大量的代码。这是一个很长且复杂的过程,需要复杂的协调,这限制了我们的创新速度快,规模化的能力。

我们用我们的“分布式计算宣言”为变革创造了蓝图。这是一个描述新架构的内部文档。有了这个宣言,我们开始将我们的应用程序重组为更小的部分,称为“服务”,这使我们能够大幅扩展Amazon。

但是,改变我们的应用架构是只是故事的一半。早在1998年,亚马逊每一个开发团队制作的相同的应用程必威体育精装版app官网序,并且该应用程序的每一个版本必须跨越每一个团队进行协调。

为了支持这种新的方法来架构,我们打破了我们的功能层次和调整我们的组织成小的,自主团队,足够小,我们可以养活每队只有两个比萨饼。我们针对每个特定产品,服务或功能集这些“双比萨团队”的,让他们在应用程序的特定部分更多的权力。这把我们的开发人员投入到产品的业必威体育精装版app官网主谁能够迅速地做出影响其个别产品的决定。

分解我们的组织和应用程序结构是一个大胆的想法,但它成功了。我们能够以更快的速度为客户进行创新,随着亚马逊的发展,我们每年部署的功能从几十个增加到数百万个。也许更引人注目的是,我们在构建高度可伸缩基础设施方面的成功最终导致了新的核心竞争力的开发,并促成了AWS在2006年的成立。必威体育精装版app官网

而今天我们继续工作,两个比萨队。

在寻求快速创新方面,我们并不是唯一的。为了保持竞争力,公司必须提高他们的灵活性,这样他们才能不断发现新的机会,创造更好的产品。这就是为什么越来越多的客户开始了和亚马逊一样的旅程现代应用程序开发必威体育精装版app官网。尽管这种新方法需要从整体架构,组件或_microservice_s转变,为现代应用程序的最佳做法涉及的不仅仅是改变你设计和建造技术的方式更多。您还需要重新考虑如何管理它。

为了成功地使用应用程序开发来提高敏捷性和创新速度,组织必须采用5必威体育精装版app官网个元素,无论顺序是什么:微服务;专用数据库;自动化软件发布管道;无服务器操作模型;以及自动化、连续安全。

建筑模式:微服务

大多数公司,像亚马逊,开始他们的业务整体的应用,因为它是发展最快的,最简单的系统。必威体育精装版app官网然而,有紧紧结合流程和运行它们作为一个服务的问题。如果应用程序的一个过程经历需求激增,整个建筑有扩大规模来处理一个处理的负荷。

此外,添加和改进功能为一体的代码库的增加,使其与实验困难和实施新的思想变得更加复杂。单片式架构,也增加对应用程序的可用性风险,因为许多依赖紧耦合的过程增加单进程故障的影响。

这就是为什么出现微服务随着企业成长。用微服务架构中,应用程序是由运行每一个应用程序的进程作为服务独立的组件组成。服务是专为商业功能,如在线购物车,每个服务执行单一功能。它独立运行,并通过一个单一的开发团队进行管理,所以每个服务进行更新,部署和缩放,以满足应用的特定功必威体育精装版app官网能的需求。购物车,例如,可以支持用户的体积大得多时,有销售。

随着组织从庞然大物转向微服务,许多开发人员发现他们希望通过管道管理每个服务中的依赖关系——因此他们不得不创建打包应用程必威体育精装版app官网序和运行代码的新方法。由于这些创新,实例不再是您唯一的计算选项。

您还可以使用容器或AWS Lambda函数。容器是打包代码的最流行的选择,也是对遗留应用程序进行现代化的伟大工具,因为它们提供了优于应用程序设置的极佳的可移植性和灵活性。使用Lambda,可以得到最简单的结果。您编写的惟一代码是业务逻辑。

用微服务的另一个考虑是,他们需要一种方式互相沟通。许多应用程序继续使用API​​的连接,但也有服务之间发送数据的其他几个选项。这些措施包括流媒体的实时数据处理,触发数据的变化,并为应用级通信和可观察性服务网回应事件。您可以选择最能满足您的应用需求的集成方法。

数据管理:专用数据库

现代的应用程序与去耦数据存储内置其中有一个一到一个映射数据库和微服务的,而不是一个单一的数据库。这是从传统的应用程序体系结构的一个重要转变,因为只是作为一个整体应用姿势缩放和容错能力的挑战,因为它增加,有一个数据库。另外,单一的数据库是单一故障点,并且很难对一个单一的数据库,以满足一系列变化,微服务的具体需求。通过与微服务一起去耦数据,你中解脱出来,以选择最适合您的需要的数据库。

对于许多应用,最好的选择仍然是一个关系型数据库,但许多应用程序有不同的数据需求。例如,如果您运行的应用程序,与高度关联的数据集,诸如推荐引擎的工作,你可以选择一个图形数据库,像亚马逊海王星器,存储并浏览关系。

或者,如果您的应用程序需要实时访问数据,你可以选择一个内存数据库,如亚马逊ElastiCache,这是常用于游戏和物联网应用。在一般情况下,最好的数据库是不正是你的微服务需求的数据库。

软件交付:自动化的发布管道

当我们从在Amazon.com单片架构搬走,并重组为两个团队的比萨饼,我们停止使用单一的发布管道,并开始让每个团队独立释放。

虽然这种去除制作和提供更新,下放的协调方面的挑战我们的开发和发布过程提出了新的挑战。必威体育精装版app官网维持释放过程并在所有团队质量一致性变得困难,特别是当释放过程的每个步骤是手动,其创建人为错误的可能性。

我们的解决方案是双管齐下的:标准化和自动化。首先,我们将软件交付过程定义为最佳实践模板,它为在云环境中建模和提供所有基础设施资源提供了标准。这些“代码基础结构”模板帮助我们的团队以正确的方式开始,因为模板通过代码为应用程序提供了整个技术堆栈,而不是使用手动流程。在Amazon,这确保了团队根据我们的需求配置他们的流程和部署。

其次,我们已经开始使用自动删除从软件交付流程的手动流程。随着自动释放管道,包括持续集成和持续部署(CI / CD),我们迅速测试和发布大量的代码,同时尽量减少错误。随着CI,我们的团队会定期合并他们的代码更改到一个中央存储库。然后,我们运行自动构建和测试,以便我们及早发现问题。随着CD,我们的团队提交的更改流出到生产没有任何人情味一天多次。

起初,我们发现,无需人工干预部署是可怕的。但是,当我们在写正确的测试和故障保险投资的时候,我们发现,它不仅极大地提高我们的速度和敏捷性,同时也提高了代码的质量。

运营模式:由于无服务器尽可能

现代的应用程序有很多的运动部件。而不仅仅是一个单一的应用程序和数据库,一个现代的应用程序可以由数以千计的服务,每一个专用的数据库和团队不断推出新的功能。

这些运动零件可分为两大类:

  • 这些活动是公司在市场上成功的“秘方”的一部分,比如创造独特的用户体验和开发创新产品。必威体育精装版app官网
  • 我们通常称之为“无差别的繁重工作”的活动,这些任务必须完成,但不能提供竞争优势。对于大多数企业来说,这些任务包括服务器管理、负载平衡和应用安全补丁等。

我们推出的“无服务器”的概念在2014年推出AWSλ,一个计算服务,让您无需设置或管理服务器上运行的代码。这支持了我们帮助客户优化他们的周围秘密武器资源通过卸载其未分化的任务AWS的总体目标,并已成为现代应用程序开发的关键要素。必威体育精装版app官网去无服务器使您专注于,除了设置你的公司,如产品创新活动。

当我们说“无服务器”,我们指的是服务,而无需对基础设施的配置和缩放运行,具有内置的可用性和安全性,并使用支付为valuebilling模型。无服务器不仅是λ-它是整个应用程序堆栈。

应用程序堆栈通常由三个部分组成:

  • 甲计算服务等AWS Fargate运行应用程序逻辑
  • 数据存储装置,如MySQL和PostgreSQL关系数据库或亚马逊极光坚持数据
  • 像事件总线亚马逊EventBridge集成层来移动数据

这些无服务器构建模块使企业能够构建最大限度的无服务器模式的好处应用。

在亚马逊,我们不是完全无服务器自己,但我们正在朝着这个方向努力。等都是我们的许多客户。事实上,我们预计很快就会有整整一代人从来没有谁碰过服务器和只写业务逻辑的开发。必威体育精装版app官网原因很简单。无论你正在构建网络新应用程序或迁移遗留,无服务器使用为基元计算,数据和集成使您能够受益于最敏捷,云计算所提供的。

安全性:每个人的责任

在过去,许多公司把安全性看作是魔法粉尘——在准备发布时撒在应用程序上的东西。在连续的发布周期中,这并不能很好地工作,因此组织必须采取一种新的安全方法,在整个应用程序周围构建防火墙。但这也带来了挑战。同样的安全设置应用于应用程序的每个部分,如果应用程序是用独立的微服务构建的,可能需要不同的设置,那么这就会产生问题。

出于这个原因,在现代的应用程序,安全功能内置到应用程序的每个组件和自动测试,并在每个版本中部署。这意味着安全不再安全团队的责任。相反,它深深地融入了开发生命周期的每一个阶段。必威体育精装版app官网工程,运营,合规小组都可以发挥作用。

安全性集成在工具中,如代码存储库、构建管理程序和部署工具。它既适用于发布管道本身,也适用于通过该管道发布的软件。对于没有服务器的服务,安全状态甚至更容易维护,因为底层基础设施安全(如操作系统版本更新、软件补丁和监控)内置于每个服务中。

旅程

如何对客户实际上做了这些改变,以更新其应用程序?虽然没有单一的路径,有几个共同的模式,包括我们采取了在亚马逊的做法。

当我们提出要注重创新,并大大扩展Amazon.com的决定,我们重构单片应用,重组我们的组织,然后通过自动化和抽象的云优化。一些客户,如喊叫,已经采取了类似的路径。

对于客户开始使用应用程序托管在该处,最常见的方法是重新主机,“吊装移位”的应用程序到云中。许多客户然后开始在云中利用托管服务,卸载之类的数据库API管理AWS专注于自己的业务逻辑。

今天,越来越多的客户走上了再造之路,将新的应用程序构建为无服务器的微服务,使他们的组织能够充分利用云。现代化没有正确的方法,因为在AWS平台上,应用程序可以在所有状态下共存,并在任何路径上成功交互。

我们已经看到了平常的事,不过,是谁打造现代应用客户看到他们整个企业的利益,尤其是在如何分配时间和资源。他们花费在定义自己的业务逻辑更多的时间,轻松扩展系统,以满足高峰客户需求,增加灵活性,并提供新的功能,以市场更快,更频繁。

例如,Edmunds.com该公司向购车者提供最新的汽车信息,将推出新网站功能所需的时间从六个月缩短到一周。启动Bynder也减少了需要把产品推向市场从一年到短短一个月的时间。通过改变他们的做法技术​​的方式,企业可以提高他们做生意的方式。

这是现代应用程序的能力。

评论

博客评论由Disqus