云计算成功的关键在于基础设施即服务(IaaS)的概念,以及它通过管理程序的API为虚拟机提供服务的能力。管理程序允许您在同一物理硬件上托管多个操作系统(即虚拟机)。大多数现代管理程序设计为模拟多个CPU体系结构,其中包括Intel (x86和x86-64)、ARM、PowerPC和MIPS。在云计算下,通过基于web前端,您可以完全控制所有分配的计算资源,并且能够在几分钟内获得并启动一个新的服务器实例。
试想您可以在几分钟内同时委托一台服务器或数千个服务器实例。所有这些都是由web服务API控制的,对于那些不太熟悉的人来说,API就是将服务、应用程序和整个系统粘合在一起的东西。通常,API通过公开业务功能和服务,充当公司或产品的公共角色。针对云的API可以从浏览器、移动应用程序或任何其他支持互联网的端点调用。
同样,对于每个部署的服务器实例,您都可以完全控制。换句话说:您对每一个都有root访问权限(带有控制台输出),并且能够根据需要与它们交互。通过相同的web服务API,您可以启动或停止任何需要的实例。云服务供应商允许用户选择(虚拟)硬件配置——即内存、CPU和带有驱动器分区大小的存储。用户还可以从多个操作系统(包括Linux发行版和Microsoft Windows Server)和软件包的列表中选择安装。最后,值得注意的是,选择的资源越多,服务器实例的成本就越高。
容器
在运行虚拟机时,容器几乎是光秃秃的金属。托管虚拟机的开销很小甚至没有。该特性限制、考虑并隔离一个或多个进程的CPU、内存、磁盘I/O和网络使用。从本质上说,容器将软件应用程序与操作系统解耦,为用户提供一个干净的、最小的操作环境,同时在一个或多个隔离的“容器”中运行其他所有操作。
这种隔离防止在给定容器中运行的进程监视或影响在另一个容器中运行的进程。而且,这些服务不会影响或干扰主机。能够将分散在多个物理服务器上的多个服务合并到一个服务器上的想法是数据中心选择采用该技术的众多原因之一。这种隔离方法通过限制安全违反或违反所造成的损害,增加了技术的安全性。如果入侵者成功地利用了在该容器中运行的某个应用程序上的安全漏洞,那么入侵者将被限制为该容器中的一组操作。
在云环境中,容器极大地简化了应用程序部署,不仅将应用程序从一个完整的操作系统(虚拟)中隔离出来,还能够部署最低数量要求的软件和硬件,进一步减少维护成本。
Serverlesscomputing
云原生计算或Serverless computing是描述部署和管理应用程序的最新趋势术语。这个想法很简单:每个应用程序或流程都被打包到自己的容器中,而容器又是跨节点集群动态编排(即调度和管理)的。这种方法将应用程序从物理硬件和操作系统依赖转移到它们自己的自包含的沙箱环境中,可以在数据中心的任何地方运行。云原生方法是关于分离应用程序交付的各种组件的。
这听起来可能与在云中运行任何其他容器相同,但云原生计算的独特之处在于,您不需要担心管理该容器(意味着开销更少)。这项技术对开发人员是隐藏的。只需上传您的代码,当启用了指定的触发器时,API网关(由服务提供者维护)将按照它打算处理该触发器的方式部署您的代码。
首先想到的是亚马逊的AWS Lambda。同样,在此模型下,不需要提供或管理物理或虚拟服务器。假设它处于稳定或生产状态,只需上传代码就可以了,您的代码只是部署在一个隔离的容器化环境中。在Lambda的例子中,Amazon为开发人员提供了一个框架来上载他们的事件驱动的应用程序代码和响应事件(如网站点击在毫秒内)。容器中提供了运行大量代码的所有库和依赖项。
至于应用程序类型的事件触发,亚马逊可以实现以下场景:网站访问或点击,REST HTTP请求API网关,传感器在物联网设备上读数,甚至向S3 bucket上传照片。
那么,这些组件是如何组合在一起的呢?首先,用户通过网站或移动设备上的应用程序访问服务。web服务器和它所依赖的各种组件可能来自本地管理的容器甚至虚拟机。如果web服务器或移动应用程序需要某个特定功能,它将接触第三方身份验证服务,如AWS身份和访问管理(IAM)服务,以获得访问API网关之外托管的无服务器功能所需的适当凭据。当被触发时,这些函数将执行必要的操作,并返回web服务器或移动应用程序所请求的内容。
安全
通常认为私有云和本地解决方案比公共云更安全,但最近的研究表明情况并非如此。公共云服务供应商花费更多的时间和资源咨询安全专家,并更新他们的软件框架,以限制安全漏洞。尽管这可能是真的,但在利用公共云服务方面真正的安全挑战是以安全的方式使用它。对于企业组织来说,这意味着应用最佳实践来采用安全云,尽可能减少锁定,最大化可用性和正常运行时间。
我们已经提到了身份和身份验证方法,当涉及到公开的服务时,这个特性变得越来越重要。这些身份验证服务允许用户管理来自其供应商的对云服务的访问。例如,AWS有一个叫做IAM的东西。使用IAM,您将能够创建和管理AWS用户/组,并具有允许/拒绝他们访问各种AWS资源或特定AWS服务API的权限。对于更大(甚至更小)的部署,这个权限框架简化了对组成云的各种组件的全局访问。它通常是由主要供应商提供的免费服务。