点赞
评论
收藏
分享
举报
全新开源的现代应用参考架构
发表于2021-09-13 16:30

浏览 823

过去几年,NGINX 一直在讨论打造真正的现代自适应(即可移植、云原生、弹性、可扩展和易于更新)应用的必要性。最近出现了两个新兴概念,大大方便了现代应用的创建和交付。第一个概念是“平台运营”,在该模式中,企业级平台团队将管理、维护、连接及保护开发团队和 DevOps 团队完成工作所需的所有工具。第二个是“左移”,是指在应用开发生命周期的早期阶段集成生产级安全性、网络和监控功能。开发人员最终将对原本由 ITOps 负责的功能承担更多责任,但与此同时也会在实施这些功能方面拥有更多选择和自主性。

虽然这些听起来很不错,但真正实施起来却困难重重。一方面,越来越多的应用以高度分布的方式部署在容器化环境中并使用 Kubernetes 编排引擎(各种类型的 Kubernetes 编排引擎数量不断增长)。公司还希望将应用部署在多个环境中,且不会被各个云之间以及云与本地环境之间的差异所干扰。


现代应用的“黄金镜像”

像之前一样,我们的客户和社区不断请求我们帮助他们解决面临的挑战,他们想将所有优势尽收囊中。然而,将安全防护、网络、可观察性性能监控、应用扩展等所有特性结合在一起并不容易。即使平台能够集成所有这些特性,但要完全满足生产环境要求还需要更多的工作。他们想知道:“为什么现代应用没有让我们可以从单个存储库启动的‘黄金镜像’?”

这个问题问得好。我们把它看作是自己的挑战,并积极思考解决方法。首先,我们把这个问题具体化。我们认为客户和社区的意思是:“你们能否帮助我们将不同的软件产品集成为一个更紧密的整体,调整堆栈以确定合适的配置和设置,并帮助我们减少工作和问题?你们能否简化不同云环境中应用的管理,且不必因底层服务和功能的不同而进行重大配置变更?”

我们认为,能够真正解决这些问题的解决方案将能惠及整个社区,而不仅仅是我们的几百家企业合作伙伴和所有主要云厂商,这是真正的互利共赢。理想情况下,这不应是一款随随便便得出的解决方案,而应该是稳定可靠、经过测试且可以部署到 Kubernetes 环境中运行的实时生产应用中的代码。坦白说,我们希望任何人都能直接从 GitHub 搬运我们的解决方案。

话不多说,今天我们将在 NGINX Sprint 2.0 大会上宣布推出我们的解决方案:现代应用参考架构的第一次迭代,这是现代应用的开源架构和部署模型。希望大家喜欢它,随便用、随便搬,要是能修改或拆分它进行改进或定制就更好了!本文介绍了我们构建的产品及其工作原理。

NGINX 现代应用参考架构


定义现代自适应应用

首先,我们来定义理想的现代自适应应用。它可能是由微服务组成的容器化应用 —— 并且可能遵循云原生设计原则(松散耦合、易于扩展、独立于基础架构),但这不是必要条件。现代应用架构的一大设计原则是,专门为利用基础架构抽象的优势而设计。这个定义虽然简单,但却十分重要,因为它为所有参考架构建立了基本模板。

现代应用架构的关键支柱包括可移植性、可扩展性、弹性和敏捷性。

    ●  可移植性 — 可以轻松将应用部署到多种类型的设备、基础架构、公有云中以及本地。

    ●  可扩展性 — 应用可以快速无缝地扩展或缩减,以适应世界各地需求的骤变。

    ●  弹性 — 应用可以顺利故障转移到不同的可用区域、云或数据中心中新启动的集群或虚拟环境。

    ●  敏捷性 — 应用可以通过自动化 CI/CD 流水线快速更新;在现代应用环境中,这也意味着更快的代码编写速度和更频繁的代码推送。


如何部署代码

如要安装和部署示例应用,您只需发出一个命令来调用 startup 脚本,之后以下 Pulumi 项目将按照指示的顺序执行。每个项目名称都映射到相对于存储库根目录的目录名称。如欲了解详细信息,请查看 README。

vpc - Defines and installs VPC and subnets to use with EKS
└─eks - Deploys EKS
└─ecr - Configures ECR for use in EKS cluster
└─kic-image-build - Builds new NGINX Ingress Controller image
└─kic-image-push - Pushes image built in previous step to ECR
└─kic-helm-chart - Deploys NGINX Ingress Controller to EKS cluster
└─logstore - Deploys Elastic log store to EKS cluster
└─logagent - Deploys Elastic (filebeat) logging agent to EKS cluster
└─certmgr - Deploys cert-manager.io Helm chart to EKS cluster
└─anthos - Deploys Bank of Anthos application to EKS cluster


版本 2 拥有更高集成度和灵活性

我们认识到,我们的第一个版本可能无法为您的 Kubernetes 环境提供所需的所有集成。平台运营的灵魂就是智能(但不是无限)选择。为了让平台运营、DevOps 和开发者团队能够更轻松地试用并采用我们的全新参考平台,我们计划在近期进行大量功能改进,包括:

    ●  建立 Digital Ocean、OpenShift、Rancher、vSphere 及其他 Kubernetes 环境

    ●  集成 NGINX Controller,以管理和监控 NGINX Plus Ingress Controller

    ●  为 NGINX App Protect 提供开箱即用的配置

    ●  集成 BIGIP、云服务和 Volterra 等 F5 产品和服务

    ●  集成 NGINX Service Mesh 和基于 Istio 的 Aspen Mesh

    ●  与 Terraform 及其他自动化工具原生集成

    ●  支持其他 CI/CD 选项

    ●  为基础架构和应用服务部署独立的集群或多个集群

我们希望我们的平台可以为其他参考平台提供一个框架,并成为构建各种不同类型的现代应用的首选。Kubernetes 是一种强大的机制,既可以用于构建现代应用,也可以支持平台运营和左移文化,因此我们的参考架构的可扩展性和可插拔性越高,效果就越好。我们很期待听到社区的朋友们对我们平台的看法以及您的成功案例。


开始使用参考架构

欢迎下载并试用我们的参考平台。如果您有任何想法或者对我们未来版本的开发有任何建议,请告诉我们。欢迎您发出 Pull 请求。非常期望与您携手开发下一代现代自适应且“可搬运”的应用,供社区和所有开发人员使用。




已修改于2023-03-09 02:25
本作品系原创
创作不易,留下一份鼓励
NGINX官方账号

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX官方账号
这家伙很懒还未留下介绍~
228
文章
21
问答
198
粉丝
相关文章
Nginx配置详解nginx概述nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。这里主要通过三个方面简单介绍nginx反向代理负载均衡nginx特点1.反向代理关于代理说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户正向代理说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进
点赞 5
浏览 18.1k
之前写了篇文章用openresty实现了一个动态路由,虽然说是动态的,但是实际上还是需要将upstream在配置文件中写好,还是相当于静态的。最近工作中有这方面的需求,upstream是完全动态,由客户端来指定,开始的时候有一些错误,最后通过resolver指定dns服务来完成,具体流程如下。1.开始踩坑nginx的配置如下:worker_processes1; events{ worker_connections1024; } http{ server{ listen8001; server_namelocalhost; location/{ set$upstream_host$http_upstream_host; echo$http_upstream_host; proxy_passhttp://$upstream_host;
点赞 1
浏览 2k
什么是HTTP缓存HTTP缓存可以说是HTTP性能优化中简单高效的一种优化方式了,缓存是一种保存资源副本并在下次请求时直接使用该副本的技术,当web缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,节省网络流量,并且由于缓存文件可以重复利用,降低网络负荷,提高客户端响应。所以,学会利用HTTP缓存是很有必要的在此,我会向大家系统的介绍HTTP缓存机制,期望对各位正确的理解HTTP缓存有所帮助。缓存策略在阐述HTTP不同缓存策略之前,我们需要知道用户刷新/访问行为的手段分成三类:在URI输入栏中输入然后回车/通过书签访问F5/点击工具栏中的刷新按钮/右键菜单重新加载Ctl+F5(完全不使用HTTP缓存)不同的刷新手段,会导致浏览器使用不同的缓存策略,我们下面会分析到HTTP缓存主要是通过请求和响应报文头中的对应Header信息,来控制缓存的策略。响应头中相关字段为Expires、Cache-Control、Last-Modified、Etag。HTTP缓存的类型很多,根据是否需要
点赞 1
浏览 696