You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
6.6 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 开篇词 | 代码不要眼前的苟且,而要效率的提升和性能的优化
你好,我是庄振运。万分高兴能有机会和你分享我的知识和经验。
最近十年我一直在美国硅谷工作也非常关注中国的互联网发展经常和国内同行交流。我曾经在QCon做过两次分享。感谢参会同行的青睐两次都被评为“明星讲师”。
2019年初极客时间的编辑找到我希望我能用专栏的形式作更多的分享。我确实也想总结一下这些年的知识、体验和感悟于是就写了这个专栏。
## 得性能者得天下
过去的三十年,我们见证了互联网的蓬勃发展和风云变幻。虽然互联网公司潮起潮落,提供的服务也日新月异,但是互联网界一个永恒的追求就是性能和效率。
程序员所写代码的性能直接决定了互联网服务的质量,也就决定了客户的去留。同时,互联网服务终归要运行在各种服务器上,公司需要部署数据中心和网络等容量,这些容量的效率直接影响了公司的运营成本。
所以,程序性能的优化和容量效率的提升也必然是每个互联网从业人员和公司的重要工作。
回首过去的学习、研究和工作经历,蓦然发现我已经专注于性能优化和容量效率这个领域将近二十年了。所涉及的范围也很广泛,从软件到硬件,从前端到后端,从服务器到数据中心,几乎涵盖了计算机和互联网的方方面面。平时,我也经常通过发表论文和参加会议的方式来总结和分享所学的知识。
这些年的从业经历也让我有机会对这一行业有些自己的观察、体会和思考。
首先,我注意到**性能优化和容量效率的工作在IT界越来越重要**。
当今互联网服务的特点是大规模(大数据、用户多等)和高要求(低延迟、高吞吐等)。这样的特点也就要求服务的高性能和容量的高效率。
不夸张地说当今互联网得性能者得天下。对IT公司而言提高了服务性能和容量效率也就降低了公司的运营成本增强了公司的竞争力。
第二,**性能和容量效率和每个IT从业人员息息相关**。
每个IT从业人员尤其是程序员和运维都需要关心服务性能和容量效率这些知识会为自己的职业发展锦上添花甚至是工作中不可或缺的。 性能和容量效率的知识对于每个程序员、运维、测试人员和管理人员都会有帮助。
具备了这些知识,程序员在开发软件时会写出高性能的代码;运维人员会懂得如何监测和提高系统的性能;软件测试人员会通览软件测试的分类和方法;管理人员可以了解如何进行容量管理,提升服务效率并降低运营成本,等等。
第三,**性能优化和容量效率这一领域的工作是“越老越吃香”**。
在互联网行业工作,很多人担心的就是年龄问题。性能和容量领域的工作特点是需要多方面的知识和技能,以及实际的经验积累。这种学习和积累需要相当长的时间,不太可能一蹴而就。
我在很多硅谷公司工作过,周围的很多同事都是年龄比较大的。他们往往是技术牛人,是挑大梁的角色。公司为什么会重用这些“大龄员工”呢?就是因为他们能够**帮助公司提升业务性能和容量效率,节省运营成本**。随着公司业务规模的扩展,节省下来的成本也越来越大,公司也越来越离不开他们。
第四,这方面的工作要求比较特殊——**需要广泛的知识面和软技能**。
除了软硬件结合的知识,以及理论联系实践以外,性能和容量效率的工作还需要各种软技能,从而和其他员工、其他团队有效地进行沟通和合作。 我用一张思维导图大体表示了这些知识和能力。
![](https://static001.geekbang.org/resource/image/5b/82/5b7c188f0af59eaf8baaa0a40ac39d82.jpg)
最后,这一领域和职业于总体而言**缺少合适的介绍和相关资料**。
比如性能工程这个领域虽然各种“性能测试”和“性能调优”相关的知识有很多比如JVM调优、操作系统调优等但是系统地介绍“性能工程”的资料很少。“容量效率和管理”方面更是很少见了。就连“性能和容量工程师”这个职业也很少人讲。
## 专栏设计
性能问题通常是复杂的,性能工程师就像“医生”一样,需要懂得多方面的知识才能为“病患”确诊“病因”。
医生遇到病人会“望闻问切”利用X光等手段做各种分析。根据病人的表象和分析的数据医生会做出诊断确定是什么病。然后会开药方或者给予治疗。病人服药或者接受治疗后会再次进行复检来确定治疗效果。
性能工程师对待计算机和互联网的性能问题也是如此,会观察各种参数,甚至进行主动的性能测试。根据各种参数和性能测试的结果,可以做出分析,并最终确定性能问题的根因。这之后进行性能优化来消除对应的性能问题。采取优化后,还需要重新测试来验证问题是否真正解决,亦或是另有他因,从而需要重新分析。
我用下面这张图片来类比这两种场景。
![](https://static001.geekbang.org/resource/image/7b/7d/7bf7a098b73b828116b827c3c3be077d.png)
第一个场景是医生诊断病情和治疗病人。第二个场景是性能工程师分析问题并且优化性能。你可以直观地看出两种场景中的每一步的相似之处。在专栏中,我也是根据这样现实中解决问题的思路(问题→测试→分析→优化→实践)来为你讲解的。
为了帮助你循序渐进地了解并掌握性能和容量工程相关知识我将这个专栏的内容设置为八个模块共36讲核心内容。
![](https://static001.geekbang.org/resource/image/7c/20/7cbf4ecd78ec818ca31ecf5b6d330820.jpg)
从今天开始让我用36讲的课程帮助你在性能和容量效率领域迈出坚实的36大步。学习完这个专栏之后我相信你一定能对这一领域有更多、更广和更深的了解。
书山有路,勤劳为径;学海无涯,辛苦作舟。希望这个专栏可以成为这样的一条捷径和一叶轻舟,我们一起整装出发,扬帆起航。
有道是“知音难觅”。王勃在《滕王阁序》里也说过:“杨意不逢,抚凌云而自惜;钟期既遇,奏流水以何惭?”很荣幸能够和你在此相遇相知,一起学习交流,也欢迎你给我留言,说说你对性能优化和容量效率的看法和疑问。