如何将精益方法应用于企业IT?(2)
至少有一件事是肯定的,我们想要避免以激进的方式从上到下设计和实现一个大系统的方法.这种方法会导致巨石架构、延期、缺少对最终用户真实需求和期望的充分沟通以及因为大量的任务和向遗落战境不可避免的死亡行军丧失了开发生产力. 通过掌握定义最小可行产品的技能,我们可以实现有用且简单的产品,以便我们尽快让用户参与进来,获取反馈、验证我们的想法并且在撞到南墙之后快速失败. 比如,比想要验证微服务架构是未来项目的正确方向.不是每个人都相信并正在学习一个传统的巨石架构,但他们有兴趣看看这种方法是否有效.最小可行产品就可能是以一个或几个 API 定义一个微服务并基于如下的公共能力实现它
一旦你构建成功之后就部署到生产环境,让团队(客户)去玩一玩 API,如果使用了?API 管理,可以获得实时的分析.
第一眼看起来好像有很多事,但是通过分切关注点和不考虑太多服务业务逻辑方面的因素,你可以进行微服务良好的 API 设计和常见的错误处理,日志记录和报告能力等等将是整个项目的可行方向,而不仅仅是这一个服务的验证学习. 七、精益工程(LEAN ENGINEERING)精益工程利用精益创业中的持续创新的构建-度量-学习循环并应用在企业级产品开发中.注意术语“产品”的使用,这是一个重要的差别.作为工程师,我们习惯于根据项目进行思考,项目拥有起始日期,任务,里程碑,而且往往不是永久持续下去的. 简单改变一下我的思维,“我们在创造产品“,我们可以超越我们的条件并且成为快速地为市场带来高质量产品的专家级企业家. 我的市场是我们支持的企业的员工和伙伴.我们的基础设施和应用产品提供了运转一个公司的基石 .我们是企业级的企业家. 1. 持续交付(CONTINUOUS DELIVERY)为了实现高效率高质量的目标,我们有必要频繁地自动化发布.在构建阶段,我们定义了最小可行产品,这个版本的产品允许团队以最小的努力收集大量的经证实的认知(Validated Learning).我们通过定义部署流水线自动化我们的软件开发生命周期(SDLC). 部署流水线包括持续集成,开发者使用自动化源代码控制、构建和单元测试.部署流水线是将代码从代码库交付到测试人员手中的自动化过程,包括从测试环境到预发布环境,再到生产环境. 更广泛的是自动化从创意到最终用户手中可使用的服务的全过程,以驱动反馈环. 部署流水线既定义了部署计划又定义了发布计划.这两者的区别在于:
自动化的主要优点是它创造一个可重复的、可靠的、可预期的过程.自动化可以防止混乱,如果结合一个完善的反馈机制,可以洞察团队的绩效. 2. 持续分析(CONTINUOUS ANALYTICS)为了给持续学习试验提供输入,无论是通过自动化部署流水线还是生产环境.我们想要利用每一个优势去收集数据.我们的目标是将分析结合到流程的每个部分,以便生成可以合成为信息并作为学习过程的一部分的数据. 为了从代码库中获取实时数据,在代码、日志和异常处理的级别引入度量是非常重要的.我们也会使用已有的运维工具度量负载、服务和进程健康状态,数据库指标等等.如果有必要,团队可以考虑构建一个面板将所有信息合并到一个视图中便于展示和阅读 3. 持续反馈(CONTINUOUS FEEDBACK)我们经常地发布并让我们的客户参与到反馈中来,这些反馈可以帮助我们定义下一阶段的 MVP 开发. 随着 MVP 产品的功能增长,产品从早期采用阶段成长为你可以从之收获利润的产品.由于你在最开始就已经将产品发布到生产环境,你无须担心产品会在发布的时候失败,因为你从第一天开始就已经将产品发布了. 4. 精益工程和云计算(LEAN ENGINEERING AND THE CLOUD)精益工程在小且机动性高的跨职能团队中效果最好.精益工程的目标是通过自动化和频繁地发布以实现快速且可靠的方式高效率地交付高质量的、有价值的软件. 使用商业云平台可以创建高度自动化的按需提供流程并基于构建-度量-反馈循环快速迭代.引入云平台的持续集成和部署流水线并使用构建于云平台中的分析工具. 商业云平台提供一键式基础设施和通用应用和数据服务.通过利用这些服务的优势,开发者可以专注于为他们的客户创造真正的价值. 八、总结(SUMMARY)精益工程是精益方法在低风险地交付高质量软件方面的应用.它吸收了精益制造、精益创业、持续交付的思想.特别感谢 Jez Humble(http://jezhumble.net/),他在这个领域里非常有影响力并且一直处在宣传这些思想的最前沿. 推荐学习(RECOMMENDED LEARNING)
|