导读: 这不是一篇介绍云原生是什么的文章, 而是因对云原生的接触和认知引生出来的一些话题, 甚至涉及到职业方向的选择.
最近半年, 我们接触到了阿里的开发体系, 在参与合作项目的开发时才真正了解到了云原生开发体系 (cloud native) 是怎么样一个过程. 他们从需求到开发, 再到集成, 最后到发布, 整个流程基本上都有已经实现了自动化的流转. 其中有几项令人印象深刻:
(1)阿里体系内某个公司开发人员规模 2-3 千人左右, 但运维人员只有 4-5 个人. 相比之下, 我们的开发和运维人员配比已经远远超标.
(2)测试环境服务器用时申请, 申请即可使用, 使用完毕即可销毁, 不会闲置硬件资源.
(3)基于 AONE 及其他在线服务平台, 所有服务和硬件资源在线申请, 在线完成配置, 全程自动化.
(4)基础中间件非常丰富, 基本解决了应用开发中遇到的常规问题. 可以很好的让应用开发人员集中精力解决业务问题. 缺点是开发人员对于这些基础的技术栈离得越来越远, 就像他们自己说的, 离开了这个平台, 都不会开发了(没有基础设施的支持, 一切得从头在来).
从云原来的框架图谱来看, 阿里的开发体系已经与云原生非常接近.
作为小厂, 我们虽然没有大厂那样强大的基础设置, 但也在做一些局部的改造:
(1)代码库统一, 统一使用 Git, 从开发到发布统一一套代码库.
(2)配置信息从应用中抽离出来, 集中化管理.
(3)微服务化改造.
(4)通过改造运维基础设施, 实施滚动发布(之前是每 2 周定期发布一次).
(5)提高自动化测试的覆盖率.
至此, 我对云原生的总体认知是为了更好的支撑业务发展, 需要将研发体系的效率提升到极致, 所以一切都在朝着自动化的方向发展, 而未来的方向一定是 AI.
然而, 有一个方面在云原生里很少被提及, 那就是如何提升具体应用系统的质量和效率, 说白了就是如何让开发人员交付架构设计良好, 代码层次优秀, 可扩展性高, 稳定可靠的系统. 根据我的理解, 因为这一块涉及的知识面非常多, 比如面向对象, UML, 设计模式, 架构模式, 领域驱动, 测试驱动, 基础设施的合理搭配和应用以及复杂多变的业务领域等, 抽象出一套放之四海而皆准的方法论及体系, 非常的困难.
从与阿里合作的项目来看, 他们开发出来的应用系统在质量和可靠性上也不是很理想, 可以说与市场的平均水平相当, 没有什么优势可言. 但是拥有完善的基础设施可以让他们试错成本更低, 响应业务的速度更快.
综上, 云原生是在帮助我们更快更好的创造客户价值, 而如何创造客户价值是需要另外深入思考的问题. 所以, 没有进大厂的同学, 也不要气馁, 抓住自己发展的方向, 宁挖一口井, 不挖十个坑(冯伦语录).
来源: http://www.jianshu.com/p/8876d4780a96