在现代本地环境中优化速度、灵活性和调试。
译自 The Fastest Cloud Development Happens Locally 。作者David Moore是Nitric的工程主管,是一位技术娴熟的软件架构师。他专长于创新产品开发和开源软件解决方案。David在领导重大金融科技和政府项目方面有着出色的记录,他曾领导UX框架开发,指导团队并建立最佳实践。在工作之余,David热衷于现场音乐、足球、远足,并探索澳大利亚悉尼令人叹为观止的海滩。
在我初涉云应用开发之时,努力高效编写、测试和调试代码遇到了不小困难。将代码推送到远程环境运行需要等待云端构建和部署,严重拖慢了开发效率,打乱了编码节奏。
随着时间推移,我意识到云开发者应该尽可能利用本地环境。相比远程云开发,本地构建和测试速度更快。作为Nitric的工程主管,我着迷于通过支持快速、灵活的本地编码来优化云开发工作流程。在开发我们面向云的应用程序框架过程中,我们不断追问自己:"如何让开发者在本地高效工作?"
本地开发的诸多优势
以下是本地开发对高效云开发极为重要的一些要点:
快速反馈循环
最重要的是快速验证更改,无需等待远程构建周期。我经常说:"迭代越快,开发体验越好。" 现代环境支持本地构建、测试和运行服务,缩短了反馈循环。我还清楚记得20分钟的云构建周期带来的无力感;它们导致上下文频繁切换,严重拖累生产力。亚秒级的本地执行可以保持注意力和效率。
在提供快速反馈方面表现突出的框架包括像Astro这样使用Vite实现快速模块热更新的新Web框架。无论应用大小,此速度始终如一。
节省成本
无需云账单!我常开玩笑地对财务团队说:"我们只需一些披萨就可以开发一整天,成本很低。" 我曾在一家创业公司工作,由于调试循环的云成本暴涨最终倒闭。通过本地优化,我们可以随心创新,不用担心预算,像Supabase这样的工具及其本地数据库驱动Web应用开发环境有助于控制开支。
容易调试
本地逐步调试可以更轻松定位Bug。我告诉初级工程师:"让调试器成为你的好朋友。" 不需要解析日志,我可以设置断点、检查变量并逐步跟踪执行路径来快速修复问题。早期我的首次Bug修复需要重新部署添加打印语句 - 本地调试改变了这一切。
在今天的开发环境中,Playwright端到端测试和Vitest快速本地测试等工具进一步增强了调试过程,使开发者可以高效发现并解决问题。
离线开发
您不需要始终联网才能编写代码。我在国外旅店遇到的不稳定Wi-Fi问题实在太多。本地执行支持在任何地方灵活编写代码。我告诉团队:"务必做好离线开发准备。" 我记得在长途飞行中调试连接问题而不是产品Bug。我们的本地设置意味着我现在可以在3万英尺的高空构建功能,世界上的任何地方。
利用本地资源
本地环境可以充分利用本地文件系统、CPU、内存和缓存获得速度优势。我提醒工程师:"你的本地机器功夫大,请善加利用。" 职业生涯早期,我仅限于小数据样本和受限的云资源。凭借高端笔记本强大的SSD、多核CPU和充足RAM,我们可以在本地构建复杂系统并快速迭代。
安全性
保持数据本地可以避免云暴露来提高安全性。我经常说:"本地数据保持本地。" 我见过太早复制敏感数据到共享云账户引入漏洞的情况。只要所有开发者和设备严格遵守最佳数据安全实践,本地开发可以加强整个生命周期的安全性,从原型到生产。
定制
调整工具和配置可以提升个人效率。我告诉新员工:"让本地开发环境个性化。" 刚开始,我不得不使用团队指定的IDE和混乱脚本。可配置工作流程让我可以根据个人习惯和状态调整本地设置。每位开发者的环境都不同,像VS Code这样可定制的代码编辑器成为自定义的典范,通过扩展、主题和配置开发者可以精确调整环境,以完全匹配偏好和需求。
本地与远程云开发之比较
并非所有团队都认可本地开发的优势。以下领域仍有积极讨论:
- 云仿真: 有观点认为本地开发不适合云开发,因为无法获得足够高保真的云模拟/仿真。如果不在本地开发,可以模拟更多云服务。我认为构建简单性的优势值得在本地构建,可以快速构建然后在高保真环境做端到端测试。那种保真度会拖慢活跃开发。
- 标准化: 有观点认为本地机多样难以控制标准。我认为合理指南、代码复审和流程审批就足够了。只要方便开发者遵循标准,适度自定义可以提高效率和满意度。
- 隔离: 有观点认为本地开发可能导致隔离,限制沟通带来误解和延误。我认为本地开发鼓励所有权、自主性和专注,促进创新和创造性问题解决,同时通过结构化协作可以解决潜在弊端。
- 数据集: 有观点认为本地开发无法获得某些项目所需的大数据集。我认为可以利用 ChatGPT、Faker、数据库补全和 Snaplet等工具模拟数据,无需大量真实数据也可以进行有效测试和开发。
- 集成测试: 有观点认为涉及集成时需要在云环境构建,以确保可以正常工作。我认为确实要在云中测试,但不需要在那里构建。本地集成更快,出现问题再修复,最后再做端到端测试。云构建比较慢。只测试的话会快很多。
本地云开发的未来
尽管现在本地云开发已非常高效,我对可能进一步优化本地工作流程的未来前景感到兴奋。
例如,先进的虚拟化和容器技术将实现在本地模拟云环境的更高保真度,同时不损失速度。开发者可以在本地验证面向真实云场景。
AI助手可以自动配置量身定制的本地设置,以优化每个开发者的需求和工作方式。智能工具可以分析我们的流程并自动自定义匹配环境。
改进的快照和分支功能可以更轻松地在本地隔离功能,同时跨团队协作。开发者可以封装工作不会引起隔离。
随着硬件发展,我们可以在本地机器上模拟乃至大规模云系统,并在本地运行强大的集成测试。整个平台可以本地模拟。
目标是为开发者提供无缝的编写、测试和调试工作流,只要本地环境正常,就可以专注构建。