加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动 > 正文

我从高级软件工程师身上学到的那些经验与教训

发布时间:2019-10-10 21:02:49 所属栏目:移动 来源:核子可乐译
导读:副标题#e# 一年之前,我开始在彭博担任全职工作。从那时起,我就在构思这篇文章。我想象自己能够在时机成熟时,把自己的想法都倾诉于纸端。但刚刚过去一个月,我就意识到这并非易事:随着工作的推进,我忘掉了很多自己刚刚学到的东西。这些东西快速内化,使

我猜个人项目或者小型企业的情况可能有所不同,毕竟并不是每个人都有资源来设置自己的一套基础设施。但是,如果大家愿意使用 AWS 以及 Azure 等云服务,这里提到的方法仍然适合各位。大家可以为开发以及生产环境设置单独的集群。AWS ECS 利用 docker 镜像进行部署,因此各环境之间相对一致。比较棘手的部分,就是如果与其它 AWS 服务顺利整合。例如,我们是否从正确的环境中调用了正确的端点?

大家甚至可以更进一步:为其它 AWS 服务下载备用容器镜像,并利用 docker-compose 命令设置完整的本地环境。这样能够加速反馈循环。

如此一来,当我的附带项目启动并开始运行之后,我就能积累到更多经验心得。

消除风险

所谓消除风险,就是在部署代码的过程中尽可能降低风险水平的一种艺术。

那么,我们可以采取哪些措施来消除灾难性后果?

如果我们希望推出的一项突破性的变更,那么一旦出现问题,如果确保业务尽可能不受严重影响?

“我们不需要对所有的新变化进行全系统部署!”哦,是吗……抱歉,我没想到。

设   计

很多朋友可能会问,我为什么要把设计放在编写代码与完成测试之后?好吧,设计在实际流程中可能比较靠前,但如果没有在当前环境中进行编码与测试,我个人很难设计出一套能够与特定环境完美适配的系统。在设计系统时,我们需要考虑很多问题,包括:

资源使用量是多少?

存在多少用户?预计用户会以怎样的速度增长?(这将直接决定未来存在多少数据库行)

未来可能出现的陷阱是什么?

我需要把这些转化成一份名为“要求汇总”的清单。目前我还没有积累到充分的相关经验,根据计划,明年我的工作内容就是着力解决这方面问题。

这个过程有点违背敏捷原则——在开始实施之前,我们能够做出多少设计判断?这是个权衡问题,我们需要选择在怎样的时间点上做什么。我们什么时候该深入剖析,又该在什么时候退后一步进行规划?

当然,这里收集到的要求不需要也不可能真正全面。我认为把开发的过程纳入设计考量也是完全可行的,例如:

  • 本地开发将如何运作?
  • 我们如何打包及部署?
  • 我们如何进行端到端测试?
  • 我们如何对这项新服务进行压力测试?
  • 我们如何管理保密信息?
  • 我们如何实现 CI/CD 集成?

我们最近为 BNEF 开发出一套新的搜索系统,这方面工作也给了我们很大的启发。我们必须设计出本地开发流程、思考 DPKG 方法(打包与部署),同时确保敏感信息不致外泄。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读