让我们把时间调回到2003年6月。那一年,承载着“传统J2EE寒冬之后的崭新起点”美好愿景的Spring项目开始立项,并以1.0版本进行推进。
时光荏苒,从Spring Framework 1.0发展到现在的Spring Framework 5.0,Spring早已从当初Java企业级开发领域的挑战者、颠覆者,变成了标准的制定者,成为Java企业级开发事实上的标准开发框架。
经过十多年的发展,Spring家族现在已枝繁叶茂,涵盖J2EE开发、依赖维护、安全、批处理、统一数据库访问、大数据、消息处理、移动开发以及微服务等众多领域。
在Spring家族的诸多项目里面,最耀眼的项目莫过于Spring Framework、Spring Boot和Spring Cloud。Spring Framework就像是Spring家族的树根,是Spring得以在Java开发领域屹立不倒的根本原因,它的目标就是帮助开发人员开发出好的系统。
Spring Boot就像是树干,它的目标是简化新Spring应用的初始搭建以及开发过程,致力于在蓬勃发展的快速应用开发领域成为领导者;Spring Cloud就如同是Spring这棵参天大树在微服务开发领域所结出的硕果。
《Spring微服务实战》译者陈文辉老师说:“我第一次接触Spring Cloud,是由于我所负责的一个项目需要从典型的单体应用架构重构成微服务架构,而当时部门主管选定的技术方案就是Spring Cloud。从那时起,我才真正开始深入了解Spring Cloud。当时,Spring Cloud算是比较新的技术,国内有关Spring Cloud和微服务方面的优秀技术书籍凤毛麟角,我只能选择参阅Spring的官方文档以及国外的一些技术博客。当时Manning出版社尚未出版的Spring Microservices in Action走入了我的视野。通读完这本书的早期预览版之后,我认为它是目前市面上将微服务和Spring Cloud结合介绍得最好的技术书籍,于是我便毛遂自荐,向人民邮电出版社的杨海玲编辑表达了希望成为这本书的中文译者的意愿。不久之后,她回复了我,请我担任这本书的译者,我欣然答应,从此开启了披星戴月的翻译日子。虽然翻译本书花费了我大量的业余时间,但我也在这个过程中学到了许多。”
今天我们有幸邀请到了陈文辉老师,来听听他的所思所想。
1. 异步社区:文辉老师您好!异步社区的读者都知道您是《Spring微服务实战》一书的译者,但为了让更多的人了解您,请您简单介绍一下自己?
陈文辉 :大家好,我叫陈文辉,是一名软件工程师,现就职于广东省聚盟汇文化传播有限公司。我平时工作之余喜欢逛逛Github,翻译一些英文资料。我是一名典型的宅男,但我每周都会出去打打羽毛球或是篮球。
我是一个遵循自己内心,喜欢挑战自己的人,所以尽管我已经出来工作一段时间了,但为了圆小时候的梦想,我还是买了一部电钢琴,然后请老师上课学习钢琴。总而言之,我是一名爱好广泛的IT男。
2. 异步社区:您觉得微服务架构的优势是什么?适合什么类型的项目?您自己在项目中也使用微服务架构吗?
陈文辉 :微服务架构的优势有许多,但我认为最大的优势是,微服务架构将应用程序逻辑分解为具有明确职责范围的细粒度组件,这些组件相互独立,这个特性使得各个微服务可以由小型开发团队按照自己的需求,选择不同的编程语言和技术进行独立开发、测试和部署,从而让交付变得更加迅速,也带来更加灵活的水平可伸缩性。
我自己在项目中使用过微服务架构,但我希望大家了解一点,那就是微服务架构并不是软件架构中的银弹,它适合于需要构建高度弹性和可伸缩性的大型应用程序,而对于那些具有少量用户群的应用程序,采用微服务架构可能会得不偿失。
3. 异步社区:听说您在未联系出版社之前就已经自行把《Spring微服务实战》这本书基本翻译完了,是什么给了您这么大的动力呢?您翻译这本书的初衷是什么呢?
陈文辉 :当时我们技术部的老大决定采用Spring Cloud去重构原有的单体架构的项目,而在当时,微服务的概念方兴未艾,Spring Cloud则是Spring家族里面孕育出的新生儿,正茁壮成长着,彼时国内讲述微服务与Spring Cloud的中文资料很少,所以我不得不求助于国外有关微服务和Spring Cloud的英语资料。
在这查阅国外资料的过程中,我偶然间发现了Spring Microservices In Action,当时这本书处于创作快要完结的阶段,在试阅了部分章节之后,我认为这本书在讲述微服务概念与设计原则以及Spring Cloud技术方面相当不错,是一本不可多得的技术书籍,考虑到当时国内在这方面的中文资料很少,我决定自行翻译这本书,为IT技术圈做点贡献。
4. 异步社区:翻译过程中,您是如何平衡日常工作和翻译工作的呢?有什么时间管理和提高效率的方法或诀窍吗?您认为软件开发人员如何才能“挤”出时间来提升自己或在技术上提升自己?
陈文辉 :我不算是一个非常高效率的人(笑),如果非要我说什么时间管理和提高效率的方法的话,对于我自己,那就是每天定下最低的完成目标,然后每天至少完成这最低目标,偶尔碰上状态爆棚,那就超量完成。
另外,我认为分配出一个完整的“时间块”出来相当重要,在这个“时间块”内就专心完成某一件事,切不可一心二用,像做一下日常工作然后又完成一些翻译工作。因为对于我这种“单核”生物来讲,这种上下文切换相当耗时,每次切换做别的不同的工作,我都要耗费一定的时间去重新熟悉与适应,所以我尽量保证自己有一个半小时以上的时间专心只做一件事,总之,工作要有连续性。
我觉得软件开发人员要学会“偷懒”,这种“偷懒”不是我们口中的那种偷懒,而是自己要有意识甄别出日常工作中哪些工作是简单的机械重复,哪一类工作是很类似并又经常重复的,这些冗余工作完全是可以消除的,那么我们可以寻找一些小工具或者自己开发一些小工具去完成这些工作,总之就是在工作中找出不必要的耗时部分,然后想方设法地去“偷懒”,这样工作效率提高了,自然有时间去学习新的知识。
5. 异步社区:通过翻译和阅读《Spring微服务实战》这本书,您最大的收获是什么?这本书对您工作有哪些帮助和促进作用吗?
陈文辉 :那应该是构建基于微服务的应用程序的设计考虑因素。在使用Spring Cloud开发项目时,我会根据这些设计考虑因素,再权衡实际环境去设计和开发,从而让项目架构更加完善,这让我少走许多弯路。
6. 异步社区:您推荐哪些读者看这本书?如何看才能够提升阅读效率?
陈文辉 :想要学习如何构建基于微服务的应用程序的Java开发者都应该看这本书。在阅读这本书时,最好是与本书的配套源码一起配合使用。在阅读有关理论方面的文字时,要多思考这样对不对以及为什么要这么做。
阅读完每一章之后,要思考本章最终完成的项目代码比上一章多了些什么内容,做了哪些提升。通过这样,阅读完这本书就能汲取这本书的精华,而不会阅后即忘。
7. 异步社区:您在工作中遇到过棘手的问题一般如何解决?
陈文辉 :我首先会回忆一下之前是否解决过类似的棘手问题或者在积累的笔记中是否有相应的解决方案。如果有,那就根据实际情况套用这些解决方案。
如果没有,那么我会查阅资料,看看有没有人遇到过这个棘手的问题,看看他们的解决方案是怎样的,或者有没有现成的工具能帮忙解决这个棘手问题,实在没有的话,我会和认识的技术小伙伴仔细讨论,然后自己撸起袖子加油干。在完成这个棘手问题之后,抽空写一篇笔记去记录这个棘手问题的解决过程。
8. 异步社区:在您眼中,一个优秀的程序员应该具备哪些技能和修养?
陈文辉 :1. 归纳与总结:沉淀后的知识才是牢固的知识;
2. 不断学习,自我提升:N年开发经验不是指一年开发经验用N年;
3. 优秀的抽象能力:能快速抽象出问题与解决方案的本质;
4. 良好的英语阅读能力:很多一些新技术的资料总是以英文文档的方式存在,中文资料总是有滞后性,对于想要了解和学习新技术的程序员来说,英语阅读能力还是挺重要的。
9. 异步社区:您平时通过哪些途径进行学习和提高技术能力的?对于刚刚入门的新人,有什么建议和经验分享?
陈文辉 :多看优秀博客+多逛GitHub+多写笔记(博客)去总结。对于刚刚入门新人,尽管学习一些新技术很重要,我觉得还是首先要练好基本功,而不是做一名“喜鹊型开发者”,只会追捧新技术,获取使用新技术的片刻快感,最终导致自己并没有沉淀出什么东西。
[美]约翰•卡内尔(John Carnel 著、
本书以一个实际项目为主线,介绍云、微服务等概念以及Spring Boot和Spring Cloud等诸多Spring项目,并介绍如何将该项目一步一步地从单体架构重构成微服务架构,最终将这个项目拆分成众多微服务,让它们运行在各自的Docker容器中,实现持续集成/持续部署,并最终自动部署到云环境(亚马逊云)中。