前言
过去几年中,一直从事微服务架构、DevOps以及持续交付的咨询和交付工作。
在这个过程中,感觉到虽然微服务架构的优势被许多组织所接受,但由于架构相关的知识本身比较抽象,作为开发者,似乎很难全面实践微服务架构。
所以,希望通过系列文章,以一个案例为背景,基于持续交付和DevOps,帮助开发者理解微服务架构,并能通过动手实践,了解其方法论以及生态系统。
如果希望观看视频课程,请移步这里
为什么搞这么个系列?
1) 微服务涉及内容广泛,学习成本高
微服务架构提倡将单一应用程序划分成一组小的服务,每个服务运行在独立的进程中,服务间采用轻量级的通信机制互相协作(通常是基于 HTTP 协议的 RESTful API ),每个服务都围绕着具体业务进行构建,并且能被独立的开发、测试、构建、部署和交付。
客观来说,微服务架构所涉及的内容,已经不仅仅是架构本身,还包括了持续集成、持续交付、自动化测试、部署/运维/监控以及DevOps等多个方面,这些方面互相配合、相辅相成,才能在微服务实施的过程中展现威力。
另外,一个完整的微服务架构系统,在实施的过程中,可能还要考虑服务的公共支撑组件部分,包括但不限于:
日志聚合(将不同服务实例上的日志聚合起来,便于分析、统计和定位问题)
监控和告警(监控每个服务的状态,必要时产生告警)
服务的注册和发现机制
服务的认证和鉴权
服务构建和打包机制
服务间的接口测试
持续集成/持续交付流水线
服务依赖关系管理
……
对于这么多的内容,如果能基于场景的理解与练习,再借鉴各大会议上诸多公司的微服务实施案例,就能够事半功倍 :)
2.《微服务与实践》一书的更新
2015年4月,我开始撰写《微服务架构与实践》一书,当时国内微服务架构的概念还谈的比较少,所以《微服务架构与实践》侧重讲了微服务的理论基础和诞生背景,并分享了我在TW就职期间,实现微服务的工作方式(我们以持续交付和DevOps为核心,构建服务开发模板,并基于AWS实现快速发布,快速监控,快速反馈)。同时,也探讨了我们如何将遗留系统改造成微服务架构的策略和步骤,但由于精力有限,有些细节无法一一展开讨论。
另外,书中的大部分例子都是以Ruby和AWS为主,很多读者也提出了建议,希望给出采用Java实现的例子,更容易理解和使用。
当今时代,技术发展的速度越来越快,诞生的框架、工具越来越多,虽然有心更新书的内容,但时间和精力都无法快速更新并发布新版,所以,希望能通过这个系列,将过去的一些实践细化,包括DevOps、持续集成、持续交付以及使用Pact等,并采用Java(基于Spring Boot/Spring Cloud)实现一个模拟的案例。
3. 为传统企业的开发人员提供案例
传统企业和互联网企业的业务形态不完全一样,互联网公司业务变化快,响应速度快,组织愿意积极尝试开源的工具和方法论,尽可能降低交付成本和缩短交付周期。而且互联网领域中,大部分的产品,本身就是基于分布式系统构建,所以微服务的概念看起来更像新瓶装旧酒。
而传统企业在过去多年的业务运作积累中,综合多种因素(组织结构、人才培养机制、市场竞争激烈等),技术体系相对封闭,缺乏快速交付、快速创新试错的理念。
微服务架构的出现,加之社区的热捧,导致很多团队盲于追热而并没有完全理解如何有效实施微服务。
另外,如果光有微服务的理论基础和对业界案例的学习,不动手尝试持续集成、持续交付、契约测试等,很难有深刻的理解。
受众用户是谁
面向(1~3年)的Java开发者、传统应用的IT架构师,以及对微服务感兴趣的童鞋们。
最后
希望通过本系列文章,将微服务、持续交付、Docker以及DevOps等技术,作为整体输出,帮助大家缩短系统学习微服务架构的成本。