2018 年,我决定利用业余时间帮助家人实现业务现代化。在此过程中,我想积累一些AWS 经验和了解。
最终,我发现我几乎所有的空闲时间都花在学习 AWS 云基础设施概念上。我只剩下一小部分时间可以专注于构建我最初设想的基于云的现代解决方案。当我为该应用计划更多功能请求时,我意识到我需要一种更好的方法。
2020 年初,我发现了Heroku。由于我不需要担心底层云配置,所以我可以集中时间添加新功能。
Heroku 生态系统非常适合我的简单用例,但我开始怀疑更复杂的用例。如果一组安全和私有服务需要相互交互以提供支付处理解决方案,那该怎么办?
这种用例会迫使我生活在三大云服务提供商之一的生态系统中吗?我会找出答案。
多年来,我很幸运能够在一个重视DevOps生命周期的环境中工作。DevOps 团队为我处理所有与云相关的事务,因此我可以专注于设计和构建微服务以满足客户的需求。
在我那段时间里,这种环境只是例外,而不是常态。我刚刚在浏览器中搜索了“缺乏云基础设施知识的公司”,结果得出了一些相当令人惊讶的结论:
搜索结果中排名靠前的原因是缺乏对核心云概念的理解,以及团队需要进行关键培训才能有效工作。大多数团队所需的培训通常会被搁置,因为客户需求和交付成果被放在了更重要的位置。
采用当前的方法,大多数云实施被迫以较慢的速度发展,并且经常面临未知的漏洞。
目前在云中保护微服务的状况并不令人满意。
云原生解决方案的理想状态应该遵循我几年前制定的个人使命宣言:
“将时间集中在提供能够扩展知识产权价值的功能上。其他一切都要利用框架、产品和服务。”
– J. Vester
在此背景下,那些有志于推动云原生解决方案的人应该能够以与企业目标一致的步伐前进。他们不应该因与底层云基础设施相关的学习曲线而放慢脚步。
那么,当我们面对包含多个微服务的云解决方案时,情况会是什么样子呢?所有这些微服务都需要与公众隔离,并遵守合规性法规(如 SOC、ISO、PCI 或 HIPAA)?
我的 2020 年 Heroku 体验很积极。所以我想看看它如何应对这种复杂的用例。就在那时,我发现了Private Spaces 。
私有空间是 Heroku Enterprise 的一部分。它们是用于在隔离网络内运行微服务的专用环境。这种方法允许团队将他们的服务部署到未暴露给公共互联网的网络中。从本质上讲,这些服务的功能与我的基本用例完全相同。我可以通过 Heroku CLI 设置它们,简单的基于 Git 的命令可以触发部署。
对于监管合规需求,我可以依靠Heroku Shield来帮助我遵守 PCI DSS、HIPAA、ISO(27001、27017 和 27018)以及 SOC(1、2 和 3)。
从高层次来看,Heroku 让我实现了一个安全的云原生设计,可以像这样说明:
在这里,我们有一个在私有空间内利用 Heroku Shield 的实现。这允许一组微服务(利用几种不同的编程语言)与所有主要和次要卡网络进行交互,同时遵守各种监管合规要求。此外,我还可以与 Salesforce 平台和 GitLab 进行安全通信。
使用 Heroku CLI,我可以启动并运行我的 Private Space 和 Heroku Shield。在 Heroku 中,这称为Shield Private Space 。以下是一些高级示例,可帮助您完成此过程。
要创建新的 Shield Private Space,我们使用spaces:create
并添加--shield
选项。
$ heroku spaces:create payment-network --shield --team payments-team --region oregon Creating space payment-network in team payments-team... done === payment-network Team: payments-team Region: oregon State: allocating
如果用例需要无类域间路由 (CIDR) 范围,我可以使用--cidr
和--data-cidr
标志。
您会注意到,我在俄勒冈州地区创建了我的私人空间。您可以在 10 个可用区域(美国、欧洲、亚洲和澳大利亚)之一中创建私人空间。要查看可用区域列表,请执行以下操作:
$ heroku regions ID Location Runtime ───────── ─────────────────────── ────────────── eu Europe Common Runtime us United States Common Runtime dublin Dublin, Ireland Private Spaces frankfurt Frankfurt, Germany Private Spaces london London, United Kingdom Private Spaces montreal Montreal, Canada Private Spaces mumbai Mumbai, India Private Spaces oregon Oregon, United States Private Spaces singapore Singapore Private Spaces sydney Sydney, Australia Private Spaces tokyo Tokyo, Japan Private Spaces virginia Virginia, United States Private Spaces
对于需要在payment-network
私有空间中运行的每个微服务,我只需在运行apps:create
命令时添加--space
选项:
$ heroku apps:create clearing-service --space payment-network Creating app... done, clearing-service
为了授予消费者访问payment-network
空间的权限,我可以维护受信任 IP 的允许列表:
$ heroku trusted-ips:add 192.0.2.128/26 --space payment-network Added 192.0.2.128/26 to trusted IP ranges on payment-network ▸ WARNING: It may take a few moments for the changes to take effect.
团队通常会收到上级的指示,要求采用云原生方法。但许多团队在部署安全云架构方面存在严重的理解差距。如果您使用的是三大云提供商之一,那么弥合这一差距将付出代价——很可能错过产品所有者预期的时间表。
有没有更好的安全云部署选项?我认为 Private Spaces 与 Heroku Shield 相结合代表了更好的选择。对我个人而言,Heroku 是 Salesforce 解决方案平台的一部分,这一点也很重要,Salesforce 一直致力于提供以客户成功为重点的云采用替代方案。所以我觉得这是一个值得考虑的长期战略。
祝您度过愉快的一天!