DevOps的核心在于Delivery。尽早发布,频繁交付。
而不是说Dev+Ops,开发人员兼作运维,——后者不是正确的见解。
而为了做到“频繁交付”,意味着价值观的改变。
DevOps意味着项目参与人员相互之间的信任、客户价值的尽早交付、频繁交付带来的快速迭代,由此需要自动化的测试。
DevOps不是一种技巧、技术,而是文化、价值。
DevOps属于敏捷(Agile)的其中一支。
依我看来,DevOps适用于外包行业基于SaaS环境的Web项目。前后端分离。后端分层负载均衡,前端做到模块化、结构化。并同时解决前后端通过REST对接时的安全、可用性、性能等非功能性需求。
对于后端而言,传统的做法是分为3层架构:前端使用NginX反向代理负载均衡,中间使用高性能异步IO的Web服务器框架,再后端是数据库集群系统,从主从复制读写分离的架构,到主-主分离水平切分的大规模集群。
通常,后端的研发,微服务部分,建造在Web服务器框架上。我们有Java系的Spring Boot/Data/Cloud,PHP系,NodeJS系,Go系,以及更小众的Python、Ruby on Rails。通常的处理流程是一个HTTP请求响应为一个事务,但也有额外但基于消息队列的后台服务。
我们再仔细研究这个Web后端开发的话,就会发现,整个系统不过是为了:从用户那里收集数据,以供企业内部的BI(商业价值大数据分析)。因此核心的核心在于数据。数据存储的架构设计。为了适应大规模并发和可伸缩性需要做哪些特殊的设计,比如采用NoSQL(Key-Value、列族、文档),NoSQL相对于SQL系的优点在于以CAP/BASE代替ACID,由此提高了性能。