云开发环境(CDEs)正在彻底改变软件开发。
CDEs 将编写代码、执行构建、运行测试和部署应用程序等关键开发流程转移到云中,为工程师提供了灵活性、效率和简便性。这让开发人员能够更好地协作,更快地发布更高质量的软件,而不会让环境成为障碍。
让我们来探讨一下 CDEs 到底是什么、有哪些优势、值得评估的选项、配置第一个云开发环境的简单步骤以及长期优化使用的技巧。
什么是云开发环境?
云开发环境是软件开发团队协作、构建、测试和部署应用程序的集中平台。
仅在 2020 年至 2022 年期间,就有相当一部分企业迁移到主要基于云的开发环境,因此我们认为您有必要了解所有细节,以防您也在考虑迁移。
CDE 将整个开发生命周期整合到一个集成的云工作区中,使开发人员不再拥有分散的工具链,也不再依赖于不同的个人和设备。集成开发环境(IDE)、运行时、基础架构配置、依赖关系、协作工具、测试框架和管道等核心组件被捆绑在一起,并可通过云浏览器访问。与传统开发环境相比,云环境托管在云上,可通过网络浏览器或应用程序访问。所有计算量大的过程,如编译代码、运行自动测试或构建容器,都在云中进行。开发人员只使用本地设备作为瘦客户机访问云工作区,从而降低了总体硬件成本。
云开发平台还提供预建模板,可快速为特定应用程序堆栈启动开发环境,或在需要时为高级自定义配置提供更多控制。有了这些,您就可以在各个团队中拥有一致的环境。
在许多方面,CDEs 代表了软件开发的下一个发展阶段–一个以云为中心的发展阶段。它利用了云计算的基本功能,同时允许本地环境的可控灵活性。
让我们进一步了解 CDEs 与本地环境的不同之处,以及这种设置的优势和局限性。
云开发与本地开发有何不同?
开发云应用程序不同于代码在开发人员设备上孤立存在的传统设置。
在高层次上,云环境允许工程师在远程托管的一致工具包上进行实时协作。
这种方法解决了团队在跨地点和跨设备配置、访问和同步开发环境时面临的许多难题。
本地开发 | 云开发 | |
开发环境的位置 | 开发人员必须在本地机器上手动安装编辑器和数据库等所需组件。这就导致跨设备的工具链变得复杂而分散。 | 云平台负责集中设置和托管开发环境,工程师可通过浏览器远程访问。 |
环境一致性 | 在开发人员的笔记本电脑上复制环境具有挑战性,会导致 “在我的机器上也能工作” 的错误。 | 标准化环境与集中式基础设施上的代码一起进行版本控制。 |
计算分布 | 构建和测试在本地运行,会降低机器的运行速度。 | 云按需分配计算能力,因此开发人员的设备不会成为生产力的瓶颈。 |
协作 | 在审核之前,代码会被保存在本地的独立分支中。 | 云集成开发环境可实现代码的实时多用户编辑、注释和可视化。 |
上岗培训和访问 | 配置新的本地机器既困难又耗时。限制开发人员访问。 | 开发人员可以通过任何设备即时登录预定义的环境。 |
云开发有哪些优势?
既然您已经了解了云开发环境的基本原理以及它们与传统设置的区别,那么让我们来看看 CDEs 的主要优势。
提高安全性
通过将开发整合到 AWS 或 Azure 等受监管的云平台,您可以最大限度地减少攻击面。
与丢失或损坏的开发人员笔记本电脑相比,所有敏感凭证、公司 IP 和个人数据都将受到保护。
云基础设施还提供加密、访问控制和合规性框架等安全功能,这些功能对于单个工程师来说,单独实施的成本过高。
协同工作
本地开发的代码在审查之前都处于孤立的分支和分叉中。云集成开发环境可以实现 Google 文档式的代码实时编辑和注释,因为现在的环境是共享的。
团队进度从一开始就可以可视化,根据环境配置的不同,任何有必要访问权限的人甚至可以在代码编写过程中看到代码。
提高生产力和入职效率
在本地设备上进行分散式开发的传统设置中,新开发人员的入职可能既困难又耗时。在开发人员开始工作之前,你需要从头开始配置新机器。
开发人员还要浪费大量时间,排除与编写代码无关的环境、依赖性和配置问题。2023 年的一项调查显示,50% 以上的开发人员时间用于维护、配置和操作任务。
然而,CDEs 可以集中处理这些复杂问题,让开发人员专注于构建产品,而不是与环境作斗争。它们通过在一个基于云的集成开发环境中分配工具来优化工作流程。与模板化的开发人员环境、自动化的基础架构管理和快速的测试执行相配合,它可以大大提高开发人员的工作效率。
可扩展性
在本地运行资源繁重的构建和测试流程会降低机器的运行速度,限制并行化的实现。
然而,使用 CDEs 的软件团队无需采购额外的硬件,就能更快地扩展。
启动新的云开发环境只需几分钟,因此可以更快地扩展团队。
例如,如果您临时需要高运算量来测试重负载下的应用程序性能,您可以增加云实例的资源,而无需超支。许多云开发环境会根据系统负载自动扩大或缩小。
避免配置偏移
在本地设置中,开发人员必须在本地机器上手动安装所有必需的组件,如编辑器、语言包、框架和数据库。配置这些本地化工具链既复杂又耗时。
随着时间的推移,这些组件还会在开发人员的设备上变得支离破碎。这就是所谓的配置漂移,通常会导致可怕的 “能在我的机器上运行” 的错误。
另一方面,云开发平台会在一个集中的位置进行设置和托管。工程师通过网络浏览器访问远程环境,无需配置本地工具。所有团队成员在云中使用相同的完全打包、最新的工具集。
虽然云开发环境有许多优点,但也有缺点。
使用 CDE 有哪些弊端?
采用任何新技术都会带来进步和危险。以下是利用 CDE 的几个潜在弊端:
- 复杂的初始设置:构建 CDE 需要大量的云计算和 DevOps 专业知识,以及与 SSO、安全控制、用户界面、协作工具等众多服务的复杂集成。如果您不具备所需的资源,那么在实施 CDE 之前提高技能或雇佣新人可能是个不错的主意。
- 供应商依赖性:选择托管 CDE 解决方案往往会导致供应商锁定。如果需要迁移平台,可能会遇到困难。
- 陡峭的学习曲线:采用基于云的工作流程会迫使团队学习新的概念、实践和工具。这在开始阶段可能会耗费大量时间。
- 依赖连接:当互联网访问中断时,开发人员就会断开连接。此外,CDE 的响应延迟比本地环境高得多,这会影响用户体验。本地环境可避免这些问题。
- 持续开销:云基础设施、强大的 CI/CD 流水线、自动化功能和安全保障–所有这些都有相关的经常性维护开销,如成本、升级、故障排除等。提供的功能越多,运行负荷就越大。例如,众所周知,AWS 是非常昂贵的。
如何建立自己的云开发环境
如果您确信云开发环境适合您的组织,那么让我们快速了解一下如何建立自己的 CDE。
第 1 步:选择 CDE 提供商
有多种云开发环境可供评估,比如:
- Gitpod – 与 GitHub 代码库集成的基于浏览器的 CDE
- AWS Cloud9 – 与 AWS 服务紧密结合的全面管理的云 IDE
- Microsoft Visual Studio Online – 与 Azure 相连接的云版 Visual Studio IDE
花时间比较各种选项,如语言支持、协作、安全性、集成、定价和学习资源。注册试用账户,并在可用的地方建立开发环境。尽量寻找有开源社区支持的解决方案,以免出现问题时陷入困境。
第 2 步:建立云账户
选定平台后,如果还没有账户,请在相应的云提供商处创建一个账户。例如,Gitpod 依赖于 GitHub,而 AWS Cloud9 等解决方案则需要 AWS 账户。
在初始云账户设置过程中,浏览仪表板,找到可以访问平台提供的各种计算、存储、网络和其他服务的位置。在试用过程中,在这方面花点时间将有助于你了解在全公司范围内采用它的难易程度。
第 3 步:创建第一个虚拟机
创建账户后,在所选 CDE 平台中设置初始开发环境或 “dev box”。大多数 CDE 提供预配置模板,可在几分钟内启动虚拟机或开发容器,并提供代码编辑器和终端等所有基本工具。
如果存在模板配置,可从 CDE 供应商为 Node.js、Python 或 Java 等流行语言提供的官方映像开始。这些准备好的环境虽然必不可少,但可以让初次使用的用户快速体验云开发。然后,您可以将其作为基础镜像来构建自定义环境。
第 4 步:配置安全性和联网
在允许团队广泛使用之前,请考虑围绕新的 CDE 部署定义安全防护栏和网络规则。考虑:
- 要求多因素身份验证才能访问环境
- 限制创建/删除云资源的权限
- 启用敏感工件的加密存储
- 在私有云网络中隔离团队开发
- 记录用户操作和基础设施变更
在后期阶段,您可能需要在 CDE 管道中实施机密管理、基础架构安全扫描等,以提高共享环境的安全性。
第 5 步:安装您最喜欢的开发工具
现在,基本环境和环境变量已经设置完毕,并确保了团队使用的安全性,可以通过安装其他开发工具来进一步自定义环境和环境变量。对于建立开发环境,下一步显然是安装编码编辑器、编译器、数据库、网络服务器和其他软件,以创建一个编程工具箱。
所有 CDE 都允许你自定义服务器上的工具链。在 Linux 上使用本地软件包管理器安装所有工具。对于 Windows,可直接从互联网下载安装程序到云实例。
在整个过程中,切记记录所有步骤、运行的命令和配置的工具,以便将来轻松重现环境。您希望这些文档成为 CDE 的唯一真相来源 (SSOT)。
第 6 步:构建、测试和部署
最后,开始测试云开发环境,利用云驱动的工作流来编码、构建、测试和部署应用程序。了解如何跨机器快照持久状态,以保持连续性或重现问题。
通过配置自动版本控制以及在代码提交时触发自动构建和测试,提高团队的工作效率。
随着云开发的成熟,应定期完善和优化环境,在标准化和定制化之间取得平衡。CDE 应成为开发人员的自然选择,而不是被迫使用的限制性环境。
使用云开发环境的技巧
除了初始设置外,以下是长期使用云开发环境获得额外优势的五个技巧。
连接其他云服务
CDE 平台可与同一供应商管理的互补云服务紧密集成。例如,AWS Cloud9 keypair 身份验证提高了亚马逊 EC2 基础设施的安全性。
探索无服务器数据库、存储、消息传递和 API 等云服务简化构建的方式。查看相关架构图,详细了解产品如何相互交叉,然后有选择性地将它们纳入其中。有疑问时,调查开发团队成员,询问他们希望添加或删除哪些工具链。
拥抱自动化
想方设法尽可能多地应用基础设施即代码技术和 CDE 配置。使用 Dockerfiles、Terraform、Ansible 或其他方法将环境模板化,并简化开发人员的配置,以便他们在安全防护范围内工作。
越早实现环境配置自动化,就能越快地部署全新的开发环境并创建易于移植的环境。
关注使用情况
云计算的可变成本模式可能会导致未优化开发带来的贴纸冲击。利用 AWS Cost Explorer 等工具持续监控环境使用情况,识别闲置资源、臃肿权限或区域配置错误造成的浪费。
将云成本可见性整合到现有仪表板中,重点关注环境扩展时的支出异常。此外,还要制定严格的预算,在不影响工作效率的情况下为每月的开发基础设施支出设定上限。
只迁移所需的数据
在将长期项目过渡到 CDE 时,要评估缓存、文件库或本地数据库是否需要云迁移。看看是否可以通过符号链接到原来的内部部署位置来满足开发需求。
数据传输的成本可能会很高,这往往也是企业向云提供商支付高昂月费的原因。因此,请确保您挑选的是最关键的数据。
遵循共同责任模式
所有主要云提供商都遵守 “责任共担模式“,该模式规定了客户和供应商之间的安全控制所有权。花点时间了解负责确保各环境层安全的实体的界限。
例如,亚马逊负责保护较低层次的云基础设施,但客户必须适当配置身份、权限、加密和网络安全层。分析并坚持自己的责任分担协议。
小结
您已经使用新的 CDE 创造了下一个大事件。恭喜你!但现在您需要一个地方来托管您的网络应用程序,以便真实用户可以在开发环境之外访问它。设置和管理托管服务器是一件麻烦事,尤其是在大规模部署时。
评论留言