这两件事有兴趣的大家自己去网上搜索看一看吧,我这里一笔带过。 今天我就拿阿里云来讲一讲,剥开那些云计算、云原生等一大堆干了多年的软件工程师也会吵半天的概念,看看做云计算的人到底在做什么,也为大家的就业选择提供一个指导。要不然,你拿到offer之后,主管和HR跟你说了一大堆他们的工作内容,你还是不知道到底在做什么,对你以后的发展方向也会很迷茫,更不知道如何在不同的offer之间选择。
做过一点程序开发的人都知道,一个普通的程序要想跑起来,最起码需要几个东西:运行代码、数据存储空间、网络通信等。我们的代码如果要部署到阿里云上,就要用到云上对应的产品,ECS、容器用来管理代码,OSS、RDS用来存储文件、结构化数据,用VPC、虚拟IP等来构建虚拟网络,满足机器之间的网络通信需求。 上面这几类东西都是满足一个程序运行的基本条件,我们管它们叫IaaS,这几样也是阿里云上销售规模最大的服务,就ECS还说,估计现在有百万级别了。
规模效应在这里同样起了作用,不只单个ECS的成本被摊薄,而且,ECS开发工程师做出每一个优化,放大到百万级别之后,都会产生巨大的商业价值。比如,通过优化虚拟技术让每台物理可以多虚拟出1%的ECS实例,那放在百万规模的ECS基数之上,ECS就多了1万台。 同样的道理在OSS、RDS、容器服务等产品上同样适用。所以阿里云有大量工程师专注在一个领域很多年,对照着每个产品的技术指标,一个个的优化。比如,做上面这些产品的工程师团队可能都会有几十、上百人。
阿里云上面有了IaaS产品之后,客户的代码可以跑上去了,但还会有各种各样的麻烦事。 想发个短信,要自己去接移动、联通这些运营商的网关,适配协议、商务谈判、计费结算、短信通道稳定性等问题,都要花大量的工程师资源去搞。 想做个视频业务,得有CDN来把视频文件推送到离各地用户比较近的节点,让大家看的时候不卡顿。但那就需要在华东、华北、华中、华南、西北、西南、东北等全国各主要地区都部署很多台的机器,一般的上市公司都承受不了,更不要说中小公司。 想做个数据分析,得自己搭建一套数据分析平台,离线、实时的开源框架倒是有,但就为了支撑公司那几个BI,投大量研发资源建个数据分析平台?
想做个App,除了按照产品需求搭页面之外,还要解决安全、消息推送、网络加密等问题,哪一个不解决都没法上线。但哪一个都需要投入一个技术团队去持续搞。 想做个KV存储,虽然有开源框架可以自己搭一套,不说为搭个KV存储服务需要单独买机器,运维其实更麻烦,需要持续投入资源的,然后就为了自己的应用代码中每天几万次的KV读写? 代码运行在ECS上,那可是对公网开放的服务,竞争对手搞一搞、黑帽子碰个瓷、小白偶尔还来凑个热闹DDOS一下,天天处理这些乱七八糟的事情,没法好好干业务了。 想让用户在自己的产品中发个评论、传个图片视频啥的,没准哪个用户手残上几张不堪入目的东西,业务做成做不成另说,被其它用户一顿转发,老板先进局子了。
像做个实人认证,从脸部特征提取到特别对比,再到对接公安网、人社的官方核验源,一般小公司搞不动的,人家都不搭理你。 刚性需求都应该得到满足,于是,阿里云就弄出来一大堆的服务来帮助解决这些问题。 短信服务、CDN服务、离线分析数据平台MaxCompute、移动App基础框架mPaaS、KV存储Hbase服务、安全服务、内容审核服务等等,每个服务你都只需要几行代码就轻松接入。只要招几个工程师按照产品PRD去开发页面和业务逻辑,再也不用自己投开发资源去做那些吃力不讨好的事情了。当然,那些服务还是需要按照付费的,但算起来还是性价比很高了。
没有这些服务呢,代码也能跑,但总会有各种各样的问题,要么成本高,要么用户体验不行。这类服务我们管他PaaS,是一些非业务的通用服务。 PaaS服务千千万,阿里云自己是搞不完的,阿里云只搞技术难度、门槛、利润都最高的那一部分,其它的可以交给合作伙伴,阿里云在中间抽成就可以了。 像短信服务,跟运营商的短信网关对接这后批量低价采购,然后高价卖出,按条收费,技术难度低、利润率高,阿里云当然自己做了。 像CDN,投入大、技术门槛高,国内也没有几家公司搞得起,一旦获得垄断地位那就是妥妥的现金牛。这种当然阿里云也自己搞了。
像离线分析数据平台,淘宝这么大的消费者数据,数据分析场景太多,内部早就建设好了这样的平台,改造一下直接上云就可以了。 像内容审核服务,淘宝那么多的店铺、商品图片,商家上传时要是用人工审核,得多少工资发出去?内部早就做出了内容自动审核系统,也是改造上云就行了。 IaaS解决了程序能不能跑的问题,PaaS解决了程序好不好用的问题,至于你在IaaS和PaaS之上做的应用软件是什么,阿里云根本不管。至此,讲完了IaaS、PaaS,也就讲完了云计算。 当然,阿里云这类云计算厂商的业务一般都只做IaaS和PaaS服务,这类服务都是标品,不具备业务属性,但更具备技术门槛和规模效应的东西。躲在应用软件开发商背后背水电煤,然后不断积累技术能力,提高护城河,才是门好生意嘛。
讲完了云计算,我们再讲讲云计算的客户——应用软件开发商,不管是IaaS还是PaaS总归是要卖给应用软件开发商,而应用软件开发商在IaaS、PaaS的基础之上开发自己的应用逻辑代码,可能是CRM、邮箱、客服系统、点餐软件等toB的工具,也可能是互联网业务系统,如抖音、头条、淘宝、微信,或者是政府、企业的定制化项目,如网上迁户口、企业信息化等。
应用软件都是面向特定的场景为特定的客户提供服务,但具体细分下来又有以下三种: 第一种,像CRM、邮箱、客服、点餐这些系统部署在云上,同时支持多租户的形式对外卖,给客户开个账号就能用,我们通常管它们叫SaaS。现如今国内市场上存在很多构建于云计算IaaS、PaaS之上的SaaS系统,这些公司凭借着对市场和行业的理解,做出可以帮助客户降本、提效、增收的好产品,既帮助客户创造了价值,自己也获取到不错的利润,比如,有赞的零售SaaS、西软的PMS、客如云的点餐系统、人力资源管理系统薪人薪事等。 第二种,为了开展业务投入资源为自己开发系统的企业,典型的是互联网企业。现在如今几乎所有互联网公司的系统都是架构在云上了,不管是美团、头条、抖音,还是淘宝、支付宝、微信。 有件事值得一提,从2019年开始,整个阿里系统推动All In Cloud项目,将淘宝的商品、交易、物流、支付等核心系统都搬到了阿里云上。 第三种,一些专注于做toB(企业)、toG(政府)信息化项目的软件开发商。这些开发商往往需要去一家家地找客户谈判、投标、定制、开发、交付。
对云计算公司来说,这三类客户各有特点。 第一类软件开发商靠自己对市场、行业、客户需求的理解来赚钱,而云计算公司又没法深入到这些行业领域内,所以核心是持续投入研发、运维资源,做好自己的云计算服务,然后静待花开。像餐饮、CRM、客服这类SaaS领域的技术门槛不高,市场上开发商很多,产品重客户体验,迭代快,一不小心还会引起价格战,因此竞争特别激烈,阿里云自己进去做的话不一定比小公司做的好,且技术、品牌、资源等方面都不能为他提供任何竞争优势。 对于第二类软件开发商,比如互联网企业,云计算公司跟他们的关系很微妙。 互联网公司发展早期都会义无反顾地上云,用最少的资源投入量快速试错。 当公司稳定下来慢慢长大的时候,是云计算公司和他们关系最好的时候:云计算公司眼瞅着小客户每年花在云计算上的费用越来越多,当然很开心;而互联网公司在应对飞速增长的业务时,系统方面不用操心,阿里云可以帮助他们快速扩容。 但当慢慢成长为巨头的时候,互联网公司就会发现投入在云计算上的成本占比越来越大。互联网公司一般都有很强的规模效应,服务1万用户可能需要10人,但服务1亿用户也只需要1000人。所以公司会发现,用户增长1万倍之后,其它费用只增长了100倍,而云计算成本却跟用户一样增长了一万倍,太恐怖了。于是他们会想,我现在业务量这么大,自己的工程师资源这么多,算一算自己干会节省下来好一大笔费用啊,那就自己干。 近两年阿里云从字节跳动那里丢了好几个大单子,就属于这种情况。 第三类客户处理起来就要有些策略了。 如果云计算还是坐等,那软件开发商去政府、企业客户中拿到单子之后就会自己吃掉利润的大头,然后云计算公司只能赚个卖IaaS、PaaS的钱。但实际上现在云计算公司在这一领域都会主动出击。
举个例子,南京市政府要上一套“网上办事”系统来支持今天推行的“最多跑一次”工程。由于工程大、投资额度高,阿里云就会自己冲在前面去投标拿下项目,等中标后再分包给开发商。这种情况下,一则阿里云成为分肉的一方,会赚到更多的钱,二则阿里云这个牌子在客户那里更硬,客户不再只知有软件开发商不知有阿里云;三则,可以防止软件开发商使用其它云计算公司的IaaS、PaaS服务。 按这种趋势发展下去,未来不排除会出现这种情况:对于政务、教育、医疗、交通等大行业,为了吃掉更多的利润,阿里云还会研发行业内的通用解决方案,让开发商去做最贴近客户、最个性化,当然也是最没技术含量的那一部分工作。
还是拿刚才南京市政府的“网上办事”系统来举例。阿里云最初可能会在中标之后全部转给开发商去做,等到后来接的项目多了,发现完全可以做一套具备通用性和扩展性的“网上办事”系统,等下次中标时,开发商只要改改配置就行了嘛。当然,开发商吃掉的项目费用比例和利润就会大幅下降了。没办法,谁让阿里云牌子大、话语权重呢。 我的文章是面向大学生,或初入职场的软件开发工程师们提供就业、择业帮助的,最好还是要回到初心,讲讲怎么看待云计算公司的软件开发工程师岗位。 如果你收到了一家云计算公司的技术类offer,先要看看是做IaaS、PaaS的开发,还是做运维交付,甚至是解决方案架构师。这三者大不相同。
IaaS、Paas开发是纯粹的软件开发工程师,每天的大部分时间都在写代码。而且与应用软件开发公司不同的是,IaaS、PaaS类产品是对应用软件开发商提供技术类服务,所以做的事会更聚集在技术上,研究新技术、优化指标,然后通过规模效应为公司创造商业价值。 如果你想专注做上二十年技术,IaaS、PaaS是很好的方向。IT行业整体云化是大趋势,这意味着,在规模效应之下,阿里云这类公司愿意持续花越来越多的资源在IaaS、PaaS层每个方向上重兵投入做技术突破。你不用担心哪天突然没饭碗了。 但有一点需要注意的是,后面的择业空间会变得比较小。毕竟,云计算这种高门槛、重投入的事情,国内没几家做得起,最后市场上只会剩下少数的几家巨头。即使有些中小公司做云计算的某个方向,但也只能吃一些巨头不愿意吃的领域,相比应用软件开发商来说,这类公司数量也会很少。
如果是做运维岗,也不必太悲观,这里的运维可不是搬机器、修电脑,由于海量的机器需要管理,全部都是系统自动化处理。所以,运维的职责是,一旦某个云服务突然出问题,运维是要通过系统来排查故障的。比如,张北机房网络抖动了、上海机房突然一个集群掉线等。 虽然门槛比软件开发来说要低一些,但也是很有技术含量的,好的运维在云计算公司很重要。当然,跟刚才的IaaS、PaaS开发工程师面临同样的问题,择业空间太小。毕竟,你做码农,哪天在云计算公司干不下去了,只要年龄不大,转行去做应用软件开发工程师只需要适应一段时间就好了,但应用软件开发商都云化之后,一个运维也不要啊。 如果是做解决方案架构师,作为一个应届生或者初入职场的程序员,我建议你拒掉。 我们先看看阿里云怎么样往外卖?简单来说分几步:销售拉上关系,解决方案架构师推销技术方案和云产品,云产品的产品经理、开发工程师跟客户深入沟通,做项目,交付上线。 为什么要有解决方案架构师这个岗位呢?如果我们卖一瓶水,那一手交钱一手交货就行了。但IaaS、PaaS服务这类云产品比较特殊,它的最终用户其实是客户公司的程序员们,这就有比较高的沟通交流门槛,需要程序员跟程序员之间的专业对话。解决方案架构师就会隆重登场,给他们从技术方案、技术架构、性能参数等方面深入介绍云服务产品,甚至优秀的架构师会对客户公司的技术架构给出指导意见,客户不只买了个云服务,还顺利买了个技术咨询服务。
所以说,解决方案架构师很重要。 但为什么我建议你拒掉呢?因为这个岗位要做到很好,不只需要软性的沟通、协调能力,更需要对技术有深入的理解。如果你软件开发经验不多,自己都没有足够的能力针对不同应用场景给出合理的技术方案,光靠几张PPT是应付不了客户公司的专业码农们的。 通常,大厂内一些岁数大,经验丰富见多识广但写不动代码的软件工程师,很适合这个岗位了。只要你的技术够牛,能“打服”客户公司的码农们,甚至软性的沟通、协调能力弱一点都没关系。