May the Force be with your Startup
- 显示并可声明的方式,来完成自动化的工作,并使得这一过程对所有的参与者可见,可追溯。
- 画外音:程序猿都是一根筋的动物,要避免「 下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个」这样的事情发生。
- 形成明确的「契约」,在庞大的系统内,分层是前提而不是目标。越早形成分层的共识,并协同维护好分层间的「契约」。
- 画外音:I know this great UDP joke but you might not get it.
- 让开发者去定义基础架构,任何层面访问基础架构的过程都是影响效率的事情,一旦发生就要优先想办法「自动化」并「契约」它。
- 画外音:优秀工程师的普遍共性是「懒」。
- 持续的交付是开发生命线,互联网的能力描述就是迭代速度。不仅要交付组件,也要交付测试。交付过程无关基础架构。
- 画外音:问:程序猿最讨厌康熙的哪个儿子? 答:胤禩,因为他是八阿哥 「Bug」。
- 弹性扩展是多粒度的,不仅仅是架构能支持弹性,组件也能弹性。某一个节点秒起是起点,整个服务秒起是目标,这就要求自动化工具也具备弹性能力。
- 画外音:问:有没有存储系统能具备无限的弹性能力? 答:女朋友的衣橱。
Roby 的演讲以工程师文化结尾:
Empowering Your Engineers to Empower Themselves. Which Makes An Engineering Culture.
精益研发流程
持续交付一直是敏捷的终极目标。提高用户的持续交付能力,DaoCloud 拥有两大法宝,Docker 容器技术和最佳实践的自动化。以 Docker 为代表的容器技术自 2013 年起在IT领域迅猛发展,Docker 之所以受到巨大的关注一个重要的原因就是 Docker 不仅仅是一个容器技术,它还提出了应用的统一交付——Docker 镜像。
基于 Docker 镜像交付的应用,可以跨平台、无差别运行,这一点为持续交付奠定了重要基础。之前企业实施 CI/CD 很难,尤其是在应用微服务化的大背景下,企业应用是由很多个服务组件组成的,由不同开发部门开发的服务组件使用的技术框架都各不相同,对测试部署环境的要求也千差万别,这种差异性使得持续交付流程必须对各个服务组件提供专门的集成,这样不可避免造成实施持续交付非常难,需要企业持续的投入。
当我们的应用的交付方式都是容器镜像,运行方式都是容器,那我们就很容易的在多样化的应用组件中找到统一点,持续交付流程中针对不同技术栈的多条羊肠小道,都归结到仅面向 Docker 容器的康庄大道。
不同行业的应用,虽然它们解决的问题、所处的领域都不一样,但是应用的开发测试发布流程却差别不大。DaoCloud 便捷交付的一个关键是在于帮助用户实现 “Code to Cloud” 全流程自动化,包括代码托管、镜像构建、测试、版本控制、部署到云端等。这样一来,开发者能够把精力集中在核心的代码编写层面,从而实现更快速、便捷地交付应用。
郭峰还表示,DaoCloud 在自动化运维领域也有着丰富的实践经验。
随着 DaoCloud 平台规模的扩大以及提供服务的多样化,我们的部署规模已经由初期的几台服务器发展到了横跨 4 个数据中心的大规模混合云部署,这对 IT 运维管理,实施质量和响应速度都提出了很高的要求,传统的人工运维方式不仅运维质量不能保证,而且响应时间也不能满足平台动态弹性需求。
尤其是作为一个初创企业,人少事多不可避免,这也倒逼我们仅有的半个运维人员(一半时间是开发)摸索了一套标准化,自动化运维流程。
- 首先,DaoCloud 平台有超过 40 个微服务组成的,各个服务所使用的编程语言和技术框架各有不同,为了从各个语言的差异性中解脱出来,我们要求所有的 DaoCloud 平台组件都是 Docker 化部署的,组件的开发人员的职责延伸到组件整个生命周期,开发人员不仅要对代码负责,还要提供一整套支撑组件运行的配置,包括容器镜像,Docker Compose 描述文件等,这样运维能力仅需要围绕容器生命周期管理进行。
- 其次,平台弹性扩展过程完全自动化,对于一个云平台,平台的弹性扩展是平台运维的最常见的任务之一,扩展自动化不仅能够更快响应弹性需求而且还减少了人为操作失误的可能性,当然这个也对云平台的实现提出了挑战,支持弹性的组件以及其他相关组件,要支持服务注册和自发现。
Dockerizing Enterprise Apps
- 点融采取了基于 Docker 的开发测试流程,使用 Git 做代码管理,触发自动构建的工作,并在 Jenkins 中完成持续集成,提交 docker image 到 registry 保存。
- Git 中不同的分支,会对应不用的 docker image 和运行环境,让测试团队和运维团队可以快速得到他们所需要的交付件。
- TestEnv as a Services ,这是点融的另一个创新。把基于虚拟机镜像的测试环境,改为基于 Docker 的测试环境,这样对于频繁修改的环境,相比虚拟机, Docker 的镜像启动和变更都更加容易,根据新的 Dockerfile 重新构建, push 到 registry 即可。基于容器的开发测试环境,也降低了基础设施层的资源消耗。
- 点融开发了自动化的容器申请和使用的平台,这对于开发人员来说,极大地提高了资源获取的效率。
目前,点融的 Docker 化平台,已经承载了生产环境的流量和业务。谈到在生产环境使用 Docker , Tony 做了如下的总结:
- 在私有的场景和对应用有完全控制的情况下, Docker已经可以使用在生产环境
- Docker 的底层技术非常简单,所有依赖的技术存在已久,非常成熟
- Docker 自从 1.2 版本后,提供了监控、重启等功能,可以自动重启容器,提高了可用性
- Docker 1.6 版本,提供了标签功能,能够分组批量管理容器,会提高 DevOps 的效率
- 尽管存在安全考量,但是在私有云环境, Docker 提供的沙盒机制,不会因为一个应用崩溃,而导致整个系统的容器崩溃,已经满足需求
- API 和 Lib ,方便 Docker 平台与已有的系统整合,可以实现自动的弹性伸缩
在生产环境的场景, DockerMan 是点融开发的容器管理工具,基本工作原理是管理环境中的容器。监控系统查看各种指标, DockerMan 模块会根据监控指标,在高弹性场景下,根据预先制定的策略和脚本,完成容器的自动扩容,并自动修改负载均衡的配置。
传播「原力」
DaoCloud 将与更多孵化器和创业公司分享研发管理的「原力」,如您是孵化器负责人,或创业公司的技术管理者,并且希望与 DaoCloud 面对面交流,与您的团队分享、演讲,请与我们联系:info@daocloud.io
特此感谢为本次活动无私提供场地的 SOHO 3Q 孵化器
- SOHO 3Q 是 SOHO 运用 O2O 模式,即线上 Online、线下 Offline 的双向结合,和网上购物类似,从选房、订房、付款交易,每个环节都在网上进行,为流动人群提供 O2O 模式的办公场所。3Q 孵化器为初创团队提供市中心核心地段的便捷办公、会议和社交场地。
未经允许不得转载:DaoCloud道客博客 » DaoCloud 分享研发管理的「原力法则」