cloud foundry

彼得·桑德高(Peter Sondergaard)说:“每家公司都是一家技术公司。” 但是,成为一家技术公司并非易事,进入门槛很高。 除了制定自己的业务主张外,公司还必须开发,维护和操作其业务(即应用程序)在其上运行的平台。

在云选项和“ X即服务”模型可用之前。 它主要从基础架构即服务(IaaS)产品开始,但是与所有事物一样,它一直在发展。

DevOps文化的兴起,自动化管道,容器技术,微服务等都为情况的改善做出了贡献。 所有这些仍在发展中,并且越来越受欢迎。 但是, 企业必须处理其特定业务主张发展之外的事情。

仍有工作负荷要承担。 现在,负担似乎已经转移到开发人员手中。 Cloud Foundry有助于消除这种操作负担,并消除对构建与业务主张无关的平台和实用程序组件的需求。 Cloud Foundry使得仅开发对您的利润有贡献的东西成为可能,其余部分则由它负责。 它允许开发人员进行开发!
Cloud Foundry(CF)是用于托管云本机应用程序的开源平台。

在CF上运行时,您只需管理应用程序和数据,而CF则负责其余的工作。 同时,它允许您选择基础架构,无论是AWS,Openstack还是您自己的。 CF不会限制您可以在其上运行的应用程序的种类。 它支持许多语言,例如Java,Go,NodeJS,Ruby和其他语言,但最重要的是,由于它是开源的,它允许社区开发并提供可能缺少的内容。

Cloud Foundry平台本身具有许多实现,并且已认证的提供商包括Pivotal,IBM,Atos和SAP。 作为用户,您将从抽象中受益。 您以相同的方式与所有这些平台进行交互。 如果您知道如何在其中之一中运行应用程序,则可以在所有这些应用程序中运行。 上面可以概括为Cloud Foundry,它是一种语言不可知的,多供应商,多云环境,用于运行云本机应用程序。
在展示它如何交付之前,让我们看看您从Cloud Foundry获得了什么:

  • 常亮 :确保您的系统拥有您指定的24/7资源
  • 容易弹性 :放大,缩小和缩小。 快速甚至没有停机时间
  • 语言不可知 :以适合您的语言和框架运行您的应用
  • 开箱即用的功能 :提供了任何应用程序中的共同需求,并且可以使用它们,因此您不必自己构建它
  • 分布式跟踪 :分布式应用程序可能难以分析日志和跟踪,但是CF也可以提供帮助
  • 防止级联故障 :一个组件的故障不会使系统的其他组件宕机
  • 没有供应商锁定 :多供应商,多云,您可以随时切换运行应用程序的位置。 无需更改实际的应用程序代码
  • 增强的安全性 :稍后将讨论使您的应用程序更安全的方式
  • 您只需要关心您的代码! 无需管理平台,只需描述您想要的内容,CF即可为您服务

通过检查平台本身,您可以轻松了解Cloud Foundry如何实现上述目标。 每个组件都有特定的用途。
每个Cloud Foundry提供程序都有自己的与实例进行交互的UI,但是所有CF实现都共享相同的API。 Cloud Foundry命令行界面(CLI)是使您能够与要在其中运行应用程序(目标)的CF实例进行通信的终端。 在下面,CLI对目标进行了一系列的REST调用。 通过CLI,您可以连接到平台,并指示Cloud Foundry部署您的应用程序,对其进行扩展,将其绑定到服务等等。

为了说明通过CLI和Cloud Foundry部署和管理应用程序有多么容易,假设我们要部署一个名为myapp的Java应用程序,使其在2个实例上运行,每个节点1G内存。 只需通过以下方式即可完成:
cf push myapp -b java_buildpack -i 2 -m 1G -p ./myapp.jar –随机路由
而已! 我们的应用程序将按照指示的规范运行,可在随机自动生成的端点上访问,并且CF将确​​保其始终保持在所需的状态。

Cloud Controller是Cloud Foundry的界面。 它提供了API,该API侦听CLI发出的请求,并启动用于部署,运行,扩展,监视和管理应用程序的过程。 云控制器负责跟踪您所需的应用程序状态,即每个应用程序在“推送”时指定的状态。 它在Cloud Controller Database上跟踪此类元数据。 还将上载的应用程序(上例中的jar) 存储Blob Store中

路由器是第一个组件(负载均衡器之后),它接收到给定CF实例的传入请求,并将请求定向到Cloud Controller或侦听请求中指定的端点的应用程序。 应用程序打开和关闭,它们的实例数改变以及它们“监听”的URI(称为路由)。 在所有这些事件发生时,路由器会小心地将每个呼叫定向到适当的接收器。 它使用路由表将路由映射到应用程序来实现。 路由通过nats消息总线发出。

一个应用程序可以绑定到零个或多个路由。 路由可以映射到零个或多个应用程序。 这为我们提供了极大的灵活性,例如,无需停机即可轻松制作新版本。 此外,在处理请求时,路由器会添加标头以启用分布式跟踪。 它使我们能够遵循平台内的逻辑请求并调用所有内部服务来处理该请求。
Diego使用一组具有特定用途的子组件来维护应用程序的生命周期和运行状况(请参见下图)。 它的“ 花园”组件可根据指示为应用创建容器,并跟踪其实际状态。

Diego包含一个或多个称为Cells的虚拟机,并在其中运行应用程序的容器。 知道应用程序的实际状态并与Cloud Controller(谁知道所需的)合作,可以确保应用程序的运行状况符合预期。 公告板系统(BBS)监视应用程序的实时状态,并定期将其与所需状态进行比较(通过nsync接收)。 如果由于某种原因您的应用程序实例之一崩溃了, Diego Brain会丢弃它,并自动使用您的应用程序启动另一个容器。

这些容器是由操作系统,有关系统环境和应用程序小滴的信息组成的(将在下一部分中进行说明)。 当要创建应用程序的新实例时, Cell Rep将对托管该容器的单元进行拍卖。 Diego选择在不同的单元之间部署相同应用程序的实例,以提高弹性。 如果也启用了跨多个可用性区域。 始终开启,无需深夜致电Ops。

cloud foundry_开发人员将只是开发! Cloud Foundry的承诺

可能是您的应用程序需要运行时依赖项才能执行,例如JRE。 在暂存应用程序时,外部依赖项已添加到它们中,因此您的应用程序可以正常工作。 这些运行时依赖项称为Buildpacks

有用于不同类型语言的构建包,以及用于每种语言的不同构建包。 推送应用程序时,可以定义要使用的构建包,否则Cloud Foundry会尝试识别适当的构建包。 该应用程序与buildpack一起生成一个droplet,该droplet是在Diego单元中的容器内运行的二进制可执行文件。 液滴也存储在Blob存储区中。

应用程序生成日志,Cloud Foundry的组件也是如此(例如,Cloud Controller,Diego,Router)。 在应用程序生命周期中会生成许多指标,这对于运营至关重要。 顾名思义Loggregator负责聚合应用程序中的所有日志和指标(只要您将它们定向到标准输出和标准错误)。 可以通过CLI(临时)实时提供日志,但也可以将其流式传输到持久化,索引和搜索外部工具(例如Splunk)上。 重要的是要注意,日志可能会在Loggregator中丢失,这是设计使然。 如果存在Loggregator成为瓶颈的危险,则可以删除日志。

大多数应用程序都有共同的需求,例如持久化数据。 CF的这些需求可以通过使用服务来满足。 服务可以是数据库,消息总线或您为仅执行系统中所需的操作而构建的特定应用程序。 服务应被视为可以绑定到应用程序的资源。 Cloud Foundry维护了可在其市场中找到的随时可用的服务列表。 这些服务称为托管服务。 当您想在市场上提供服务时,您需要实现Service Broker API。 通过此标准化接口可以访问所有服务。 当应用程序请求绑定到服务时,服务代理负责创建服务实例并将凭据作为环境变量传递给应用程序。


一种特殊的服务是所谓的路线服务。 这些是绑定到路由而不是应用程序的服务。 它们的主要用途是解决交叉问题,例如在调用到达应用程序之前检查某些标头并执行一些验证。 我们可以创建一个执行此操作的应用程序,从中创建路由服务,然后将其放置到我们选择的应用程序的路由中。 然后,当路由器接收到请求时,如果路由绑定到路由服务,则首先通过路由服务,然后返回到路由器,最后返回到应用程序。


可以猜到,在安全性方面有很多事情正在发生。 详细描述超出了范围,但我们应该简要提及要点。 Cloud Foundry是一个供许多租户使用的平台,因此需要对用户进行身份验证和授权。 这样,组织(CF实例中租户的逻辑分离)和空间(组织的各部分的逻辑划分)之间可能存在隔离。 用户只能执行其指定角色允许的操作。 Cloud Foundry的用户帐户和身份验证(UAA)负责解决这一问题。 它是平台的OAuth2提供程序,但您的应用程序可以将UAA本身用作服务。 除此之外,还有其他原因可以增强您在CF中运行时的安全性。 您的应用程序位于负载均衡器和路由器之后,从而减少了暴露于潜在攻击的网络表面。

此外,“扔掉”并更换运行应用程序的容器的简便性使应用安全补丁程序变得简单快捷。 容器彼此隔离,并且对应用程序的所有通信都进行了加密。 标准化的构建包可以使您放心地运行应用程序。

显然,Cloud Foundry是开发人员的强大推动者。 它负责操作负载并确保我们的系统正常运行。 它使开发人员可以专注于最重要的事情:应用程序或更好的应用程序,对客户的业务主张

翻译自: https://www.javacodegeeks.com/2019/01/devs-will-just-dev-cloud-foundry-promise.html

cloud foundry

相关文章:

  • 2021-11-25
  • 2021-12-03
  • 2021-08-28
  • 2021-11-21
  • 2021-07-24
  • 2021-12-29
  • 2022-02-18
猜你喜欢
  • 2021-09-29
  • 2021-06-29
  • 2022-12-23
  • 2021-11-25
  • 2021-11-14
  • 2022-01-17
  • 2021-09-28
相关资源
相似解决方案