热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

技术人攻略访谈九:逆袭!从技术编辑到云计算架构师

导语:本期采访对象李雨来@Blacktear,86年生人,是云计算创业公司迅达云成的架构师,提供云计算领域的IaaS服务。毕业于北工大机械专业的他,曾有过长达两年半的技术编辑生涯,

《技术人攻略访谈九:逆袭!从技术编辑到云计算架构师》

导语:本期采访对象李雨来@Blacktear ,86年生人,是云计算创业公司迅达云成的架构师,提供云计算领域的IaaS服务。毕业于北工大机械专业的他,曾有过长达两年半的技术编辑生涯,对编程的热爱支持着他成长,出版社的工作也拓展了他的技术视野。在云计算刚进入中国的时候,成功地把握住了职业转型的机会,在实践中成长为优秀的架构师。除了个人的成长经历,他还谈到在云计算领域的实践经验和感悟,强调开发要站在运维的角度看问题,在云计算时代,开发和运维的结合将变得越来越重要。
 

技术编辑到开发

“搞编程这行如果不是兴趣驱动的话,永远会觉得它只是一个工具,如果非常有兴趣,就会发现很多乐趣。计算机行业更新这么快,如果只是上班工作,下班回家什么也不想,那么用不了几年就会被淘汰。”

  • 技术人攻略:你从什么时候开始接触编程?

我从小学就开始接触电脑,通过Basic对编程建立了一些感性的认识,高中开始学计算机二级C语言的书。可是考大学由于分数不够,进了机械工程及自动化专业。但还是很喜欢计算机,就一直泡图书馆看相关的书,通过一些小项目积累经验。计算机这个领域很偏实践,看书上的理论是一回事,真正动手做了之后再反思自己做的东西,会对理论有更深的理解。
* 技术人攻略:为什么毕业的时候没有找开发的工作,而是进了出版社做技术编辑?

因为不是计算机专业出身的,HR那关就过不了,那会儿也没有人脉可以推荐工作,就去了电子工业出版社的博文视点,做了两年多的技术编辑,工作主要是跟踪一些技术趋势,联系作者做一些书。
也写了一些程序,根据书的销售的数据,做一些类似大数据处理的工作。当时出版社的电脑都是很普通的台式机,计算能力有限,所以用了分布式的方式来实现计算。还有就是从各个网站上抓一些帖子做数据分析。出版社离书比较近,对视野的开阔有帮助,所以感觉这段时间跟读了个研究生似的。
* 技术人攻略:后来什么时候开始真正的做开发?

在出版社的工作毕竟不是自己最喜欢做的,2010年云计算刚开始进入中国,正好有机会可以去一家美国的云计算公司做开发,于是就辞职加入了。很多人都感觉我跳槽的这个跨度很大,我自己却觉得还行,在出版社出书也是教别人怎么做Coding,如果你想把一个事儿给大家说明白的话,你自己得先明白。
搞编程这行如果不是兴趣驱动的话,永远会觉得它只是一个工具,如果非常有兴趣,就会发现很多乐趣。计算机行业更新这么快,如果只是上班工作,下班回家什么也不想,那么用不了几年就会被淘汰。我是学机械的,机械这个行业发展了几百年已经很成熟了,搞机械的人都知道本叫做机械设计手册的书,基本上你想要做的设计,所有的能拿到的标准件的尺寸,能承受的强度,查手册都能查出来。而计算机这行发展才几十年,没有这样固定的模式,如果没有很强兴趣驱动,很快就会落后。
 

云时代的开发和运维

“云计算这块遇到的主要问题不是编程,而是运维上的问题,更多考虑的不仅仅是性能,还包括如何保证稳定性。”

  • 技术人攻略:在工作中遇到最大的挑战是什么?做云计算的难点在什么地方?

挑战最大的是在China Cache工作的时候,要从头到尾搭一套以KVM为基础的云计算平台。当时考虑过OpenStack,但当时OpenStack的架构还不够成熟,在跨数据中心部署的情况下会有一些安全性的问题。所以后来完全重新写了一套,通过这个挑战在技术上成长得很快。
云计算这块遇到的主要问题不是编程,而是运维上的问题,更多考虑的不仅仅是性能,还包括如何保证稳定性。为客户提供服务,程序要写得很严谨,系统在应用一些配置的时候,要设计如果失败的话回退怎么办;另外要考虑稳定性的因素,因为中国的网络环境不是太好,在公网上跑一些东西的时候,大网抖动一下,或者某个数据中心到一个核心节点的链路不是很好,导致一些数据连接的中断,怎么能重建连接,怎么自动做一些重置,怎么保证集群的稳定性,程序必须具备自动诊断、自动恢复的功能。纯Hadoop那套东西全在内网,不用考虑网络环境的问题,云计算的服务器都在公网上,怎么向服务器发送一些消息,服务器怎么保证消息能收到,这些是需要积累经验的,好多经验也都是四处碰壁碰来的。
另外一个难点就是对知识面的要求很高,做IaaS****要让整个数据中心实现自动化,需要了解包括服务器、交换机、网络、存储,并且这几部分如何整合起来,作为一个服务对外提供。云计算的运维不是简单的会用Linux,不仅是做一些维护性的操作,还要和开发一起讨论整个系统的物理架构是什么样的,交换机的配置是怎么做的,网络是怎么搭的。因为牵扯到太多的系统,所以对于运维的要求非常高,出问题原因有可能是系统的bug,也有可能是数据中心的网络等,怎么去快速的定位、解决问题,有很高的技术含量。对于一个复杂系统来说,想了解哪儿出了问题,复杂度不亚于给人看病,而且有时候并不简简单单是一个问题,可能是好几个地方的故障引发的导致严重问题。
* 技术人攻略:云计算时代的开发和运维工作是不是会更紧密的融合?

我自己很喜欢学习一些运维自动化的东西,可以开拓视野。做后台系统的工程师很有必要多了解一些运维知识,因为做出来的系统一方面是给业务人员用,另外一个潜在的客户就是运维团队的同事。如果运维在部署系统的时候觉得吃力,可想而知这个系统写得有多糟,如果运维不部署你的系统,系统一点意义都没有。开发在搭测试环境的时候,其实相当于做了一部分运维的事儿,这个过程中开发工程师可以想想用什么方式让它变得更简单。还有就是自动化部署,用自动化工具来做重复性的工作,这样可以保证持续Release,增强工程师的满足感,另外也可以降低出错的几率。如果能达到Devops的效果更好,就是开发运维化、运维开发化,这两个团队其实是一个团队了。
运维其实挺苦逼的,干好了没人说你好,稍微出点错就挨骂。越牛的运维越是拿钱砸出来的,如果没摔过跟头,就不可能知道地上哪儿有坑。有的公司对于运维犯错这个事儿的思路不太对,运维捅一大篓子,就把人开了招新人,但新人更有可能犯错,而老人不太会犯同样的错误。运维对于产品来说很重要,能不能让系统不出大问题,出了问题之后能不能很快恢复。就跟军队一样,养兵千日用兵一时,但是很多公司没有把运维当军队,就当扫地的使。
* 技术人攻略:你现在所在的这家公司是云计算领域的创业公司,你对现在云计算创业的市场环境怎么看?

现在云计算创业这块创业的人多了,快到了当年大批量上团购的阶段。技术含量也已经被压了下来,因为OpenStack的开源架构已经很成熟,很方便就能搭出一套云平台,整个行业对云计算的接受程度也越来越高。
不过我们公司的系统完全是自己搭的,一方面因为之前在云计算这块积累过很多经验,另一方面,如果完全搭在OpenStack的环境下,会受限制,并且二次开发的工作量也不小。OpenStack****像一个大而全的东西,用起来比较复杂,如果自己做,基于自身的业务特点做技术选型,可以把事情做得更专业,运维起来也更容易。OpenStack的UI界面做得不够好,需要二次开发,做跟自己业务相关的一套东西。如果不用社区做的一键化部署工具的话,OpenStack对运维也很不友好,需要配置的东西太多。
我们公司提供的服务目前还是主要是基于IaaS这层,主要面向游戏客户,对他们来说采用IaaS更灵活,因为已经积累了一些规则、业务运营模式和系统,用PaaS的方式他们也不一定能接受。
 

学语言像周游世界

“打个比方,如果你了解的语言特别多,等于是在周游世界;如果对某个语言了解得很深,就类似于把北京城每一个角落都去了一遍。因此,当见识过很多东西,对其他语言设计的理念有了解之后,你的视野就变得更开阔了。”

  • 技术人攻略:在开发语言的选择上你有什么倾向和建议吗?

语言我用得挺杂的。在语言选择这块,我倾向于会得越多越好。打个比方,如果你了解的语言特别多,等于是在周游世界;如果对某个语言了解得很深,就类似于把北京城每一个角落都去了一遍。因此,当见识过很多东西,对其他语言设计的理念有了解之后,你的视野就变得更开阔了。当然对初学者来说,还是应该先对某一门语言了解到一定程度之后,再拓展到其他编程语言会比较好。不同的语言在处理一些特殊的情况下,有不同的做法,例如同样实现一个根据配置调用不同代码处理数据的功能,Java和Python的实现方式就会不一样,Java会用到接口和工厂类,动态语言则可以直接根据配置拼出一个函数名调函数。不管用什么语言,目标就是把问题解决了,根据不同的情况选择适合的语言。对创业企业来说,用Java搭一套Web界面的人力成本和时间成本远高于用ROR,所以语言选择不在于技术本身,跟时间、成本都有关系。
* 技术人攻略:如果不考虑工作的话,你想开发什么东西?

比较感兴趣的还是做一些智能家居的东西,搞一些软件和硬件结合的事儿,例如可以通过iPad控制家里的洗衣机、冰箱等。我个人对硬件还是有点兴趣,计算机不能只停留在一个方盒子里,得让他出来。有的人担心技术的发展会带来更多的问题,我举个航空工业的例子,飞机的自动驾驶系统发明以前,空难的问题主要是人犯的错误所带来的,自动驾驶系统发明之后虽然有时候会失灵,但可以在有问题的时候切换回手动,技术很多时候是有两面性的,不能因此否定自动驾驶系统对航空工业发展所起到的作用。
* 技术人攻略:有没有你特别欣赏的人或者公司?

每个人都有他自己的优点,闻道有先后,术业有专攻,在一线做Coding的人应该保持谦虚的心态。
* 技术人攻略:你做技术编辑的时候看了不少书,能不能推荐一些有价值的书?

我觉得看书是一个过程,不是说看了几本书,就能把计算机领域的东西弄得很清楚了。而且计算机有很多不同的领域,不是你都看过一遍就行了,这几个领域之间有先后的顺序,如果不了解最初的CPU长什么样,直接看Intel的CPU手册就跟看天书差不多。任何东西都是循序渐进演化过来的,最重要的是本质上的那些东西,例如CPU再怎么演化也不会逃出冯诺依曼的架构。
很多学计算机的人对单片机了解不多,单片机可以理解为x86架构的一个鼻祖设计。如果你写一个程序,用现在的编程语言足够解决问题的话,没必要看硬件的东西,但如果想提升你的知识,了解操作系统到底怎么干活、硬件总线之间的寻址是怎么工作的,那么推荐有精力的人看看8051和数字电路。计算机是以数字电路为基础的一门学科,逐渐发展过来,****CPU****看似很复杂,但还是从门电路演化过来的,如果学过数字电路,了解怎么设计加法器、单片机,用单片机做一些小的设备,对你了解计算机会有很大帮助。
编程方面的书,推荐《Java编程思想》,看了这本书之后,会提升对面向对象和java类库的了解。看书应该边看边做,做得差不多的时候再去想,想完之后回来再去看一些东西,在这么一个闭环的过程中逐渐进步。
 

技术人攻略访谈是关于技术人生活和成长的系列访问,欢迎和我们有共同价值观的你关注“技术人攻略”,邮箱 devlevelup@gmail.com,新浪微博 @devlevelup,希望能成为技术人成长的精神家园。
欢迎通过微信公众账号关注技术人攻略

《技术人攻略访谈九:逆袭!从技术编辑到云计算架构师》


推荐阅读
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 从用户转型为开发者:一场思维升级的旅程 | 专访 StarRocks Committer 周威
    从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocks Committer 周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。 ... [详细]
  • 优化后的标题:PHP分布式高并发秒杀系统设计与实现
    PHPSeckill是一个基于PHP、Lua和Redis构建的高效分布式秒杀系统。该项目利用php_apcu扩展优化性能,实现了高并发环境下的秒杀功能。系统设计充分考虑了分布式架构的可扩展性和稳定性,适用于大规模用户同时访问的场景。项目代码已开源,可在Gitee平台上获取。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • Java学习日常笔记:详细记录操作日志的方法与实践
    Java学习日常笔记:详细记录操作日志的方法与实践 ... [详细]
  • LVS-DR数据包流向分析介绍
    下文给大家带来LVS-DR数据包流向分析介绍,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍, ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • 全面解析:Hadoop技术栈中的Linux操作系统概览
    全面解析:Hadoop技术栈中的Linux操作系统概览 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 修复一个 Bug 竟耗时两天?真的有那么复杂吗?
    修复一个 Bug 竟然耗费了两天时间?这背后究竟隐藏着怎样的复杂性?本文将深入探讨这个看似简单的 Bug 为何会如此棘手,从代码层面剖析问题根源,并分享解决过程中遇到的技术挑战和心得。 ... [详细]
  • 开发心得:利用 Redis 构建分布式系统的轻量级协调机制
    开发心得:利用 Redis 构建分布式系统的轻量级协调机制 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
author-avatar
Amy刘晓玲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有