微服务的团队应对之道

原文于2016年7月7日发表于InfoQ:微服务的团队应对之道

这两年,微服务架构火了。在国内,从消费级互联网应用,到企业级应用;从金融领域,到电信领域;从新开发系统到已经开发了十几二十年的遗留系统;一夜之间,好像所有的团队都在谈微服务。

然而,我们为什么采用微服务呢?

让我们的系统尽可能快地响应变化“ - Rebecca Parson

是的,让我们的系统尽可能快地去响应变化。其实几十年来我们一直在尝试解决这个问题。如果一定要在前面加个限制的话,那就是低成本的快速响应变化。上世纪90年代Kent Beck提出要拥抱变化,在同期出现了诸多轻量级开发方法(诸如 XP、Scrum);2001年敏捷宣言诞生,之后又出现了精益、看板等新的管理方式。如果说,这些是为了尽快的响应变化,在软件开发流程和实践方面提出的解决方案,那么微服务架构就是在软件技术和架构层面提出的应对之道。

Read More

Share Comments

[翻译] 给CxO的微服务指南

这是技术雷达系列文章的第四篇。在这一系列的文章中,技术雷达的作者们向企业领导者分享了他们对于那些推动业务差异化的技术问题和解决方案的洞见和经验。ThoughtWorks技术雷达是由ThoughtWorks全球技术专家咨询委员会创建的,它包含了对软件开发和业务战略有显著影响的技术趋势组合,2016年是技术雷达发布的第七年。

未来已经在这里,它只是分布不均。- 威廉·吉布森

数字时代就在我们身边。将软件开发视为高成本开销而不是竞争力的企业将会艰难前行。为了参与并在这个数字世界中繁荣兴旺,企业必须学会适应我们这个时代的不确定性—更快地将新产品推向市场,快速而有效地加强当前的产品,并为客户提供有意义的数字体验。
为了实现这些目标,企业需要将敏捷性/适应性集成到三个领域:人,流程和技术。

Read More

Share Comments

你需要了解的那些Abilities(一)

来自泼辣有图

如果你去买一部手机,你会考虑什么因素呢?一般我们都会首先考虑智能手机、照相功能、多大容量等。而除了这些,我们通常还会考虑品牌、颜色、外型好不好看、时尚与否。作为一个软件产品也不例外,用户首先会期望系统要满足正常的功能需求,同时系统还要满足好用、性能好、稳定可靠等其他特性。一般我们会把这些称为非功能性需求或者跨功能性需求。系统的每一次故障和宕机对用户都是不可忽视的损失,所以这些非功能性需求也是软件质量非常重要的属性,是软件架构设计需要满足的目标。

Read More

Share Comments

谁动了我的Token

这里涉及到的系统是一个7年的遗留系统(技术栈是.NET MVC2),即将被客户淘汰。这篇博文的主题无关技术本身,文中谈到的技术细节也不是什么高大上的,更多的是想记录因这件事情触发的非技术思考。

早上7点45分来到公司,我坐在办公桌旁边开始考虑今天的工作事项。想到客户一直抱怨的电子表单系统在产品环境上8000多个无法重现的错误日志就亚历山大,“替换成微软类库也并不一定解决问题,客户又在捣乱。今天一定要和夏夏一起看看这个问题,优先级得提上来”,我心里暗自的想着,并把它加到了待办事项的第一条,优先级标为高,截止时间是今天。

Read More

Share Comments

如何培养技术洞见力

洞见是指一个人对某件事物的认知程度和他(她)自己的“分析结论”,是个人主观的看法和评价。洞见力的不同决定了一个人的思想深度和一生。

回忆一下,当我们听完一个精彩的演讲、读完一本内容丰富的书或一篇逻辑无敌的文章之后,会觉得哇,很有启发,很有道理,“大神”,“洞见帝”。而反观我们自己:工作了很多年,也写了很多代码,知道各种语言各种知识;也做了很多次学习计划,偶像说怎么做就怎么做:一年读书50本,我也要读50本,其实自己看的很费劲,咬着牙看下去,最后仍然不知道有啥用。回头发现这么多年竟然一直是在重复别人的结论,坚持的也是别人的观点,仍然讲不清楚也做不了决策。

为什么呢?

并不是因为这些大神们有特殊的信息获取渠道,也不是因为他们有神秘的工具或者书单,而是因为他们能够基于信息做有效的深度思考,是因为他们的深度思考力。事实证明,没有自己独立的深度思考,就很难有自己的洞见甚至创造。

那么如何培养呢?

Read More

Share Comments

重构的七宗罪

重构经过了十几年的发展和应用,可以说它是极限编程中程序员最爱的实践之一了,纷纷争相在项目里应用。重构工作坊、Codekata重构练习等各种提升能力的方式也屡见不鲜,帮助程序员们去追求优秀的代码和设计。然这仍然摆脱不了人们对它的各种抱怨:“搞什么,又重构”,“重构出defect来了”,“项目紧,最近不要再重构了”,“重构到什么时候停呀”。小菜也这样被项目中的人抱怨着,觉得很委屈,找到了大牛小明。

小菜:有一大段代码不合我意,写的很烂。我就想最近刚好新学了点技巧,看了下模式,赶紧大干一场。没想到做着做着组里都反对。
小明:那你有什么目标?重构想达到什么效果?
小菜:目标?啥意思?
小明:我们做事情得有目标,重构任务也是一样的。
小菜:我不太清楚,我就是想把这段代码改了,我删了好多代码,测试好多都红了。项目好像下周发布,项目经理小东也问我什么时候完工;测试小花还说我前两天做的功能有问题,问我是不是又重构了;

小明:你呀,今天来对了。这两天我也在琢磨这个戏,重构七宗罪,正好给你来讲一下。

Read More

Share Comments

结对编程的正确姿势,你会了吗?

2015年度Review已经拉开帷幕,今年你都收到了哪些醉人的反馈呢?和往常一样,作为开发的我听到最多的话题当属结对了:

“我的小伙伴总拿着键盘不放,只听过麦霸,来到骚窝竟然还有键霸!”
“我总算明白为什么面前会有两个键盘子了,如果再给我一次机会(请用湖南话脑补)”
“我不知道我的小伙伴在做什么,我跟不上,很沮丧,要不玩会手机算了”
“我的小伙伴特别忙,有时候一天也找不到,我怎么办…”
“我的小伙伴是个急性子,总说‘XX你做的太慢了,客户着急要,还是我来做吧’”……

那么结对时,你的小伙伴碰到这样的问题怎么办呢?当你遇到键霸、手机哥、上网君的时候怎么破呢?

Read More

Share Comments

How to enable Chinese encoding in Sublime Text

Sublime Text自使用以来其实在我的手里并没有得到极致的使用,在过去的一年里又有喜新厌旧的嫌疑,看遍各种工具,其实万变不离其宗,今天闲来无事,顺手拾来一枚叶子,以做回归的开始。

要解决这个问题呢,就要先讨论Sublime Text的Package Control,它其实是Sublime Text的包管理器,就如现在业界流行做法一样,帮助用户查找安装和更新SublimeText工具的安装包,参加官方网站 。有了Package Controll,就可以安装ublimeText的各种应用插件,从而扩展本地SublimeText的功能。

那么如何安装呢?

Read More

Share Comments

Sublime Text as an IDE (二) : Concepts

Validated learning is a term coined in the lean startup scene, it is defined as a process in which one learns by trying out an initial idea and then measuring it to validate the effect. - wikipedia

1. 基本介绍

Sublime Text是一款众所周知,已被业界广泛认可的、功能强大的跨平台文本编辑器。据考证它的核心部分是C++,部分Object-C,插件基于python。

作为一个程序员我喜欢它的如下几个特点:

  • 跨平台,Mac/Windows/Linux。
  • 简单专一:It is all about text
  • 强大的快捷键组,并且可以自定义。
  • 多窗口编辑
  • 插件平台

    Read More

Share Comments

Sublime Text as an IDE (一):for .NET development

不经过真正的洗礼,请不要说你信奉它。

Visual Studio 和 R# 可以称为.NET开发环境的黄金组合,可以帮助快速开发、重构,运行测试等,从而提升开发效率;但同时Visual Studio的性能也是业界诟病已久的问题,更不用提配上R#后的Visual Studio。最近项目切换到Linux环境下使用虚拟机进行 C# 开发,这种配置的性能问题更加突出(当然这里面也有虚拟机环境本身的其它问题)。但这引发了我的一个思考:我们每天的开发活动有多少是必须使用Visual Studio + R#?它到底带给我们什么?这是唯一的开发环境么?

看了Greg Young最近的Sublime Text系列文章,让我觉得有必要深入探索一番。

Visual Studio Benefits

在我的日常开发工作中,Visual Studio主要提供了如下几类的帮助:

Read More

Share Comments