对于互联网公司而言,迁移到云是一个明智的决定。它减少了总的成本支出,同时最大限度地提高了工作效率和生产率,本文将指出迁移到云或者建设私有云优缺点以及边界在哪里?
1、什么是云计算
云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。
本地通常是提前把软件基础架构部署在用户计算机上,所有资源使用者自己访问和管理; 相对于本地服务,云有以下特征:
- 按需服务-需要时使用;
- 网络访问-通过网络作为传输媒介,云提供商负责维护其基础架构;
- 资源共享-多个资源集中在一起,供多个客户端使用;
- 可伸缩性-资源具有弹性能力,最大程度节省和提高资源利用率,具有平台无关性、存储无限扩展等优势。
2、公有云的缺点在哪里?
- 云是公共资源,每秒都有数以百万的用户访问,云服务提供商可能遭受攻击,从而窃取用户信息,从而云在一定程度上存在安全问题。
- 数据存储在第三方机器,可能会出现第三方查看和修改用户隐私数据问题。
- 更多的控制权不在于自己,而在于云提供商,云出现问题,只能等待第三方回应。
云本身又分为公有云、私有云、混合云等,以上说的几点都是公有云的特点,很多企业不信任公有云平台,特别是国内很多企业要求对技术做到自主可控,结合本身的业务增长速度,需要搭建自己的私有云平台。那么要完成私有云平台搭建,需要完成什么工作呢?如图(a)
(a)
3、搭建企业级云平台需要完成哪些工作?
3.1、IaaS 基础架构即服务
IaaS 基础架构即服务,该服务提供了计算机体系架构和基础服务,提供了所有云计算资源供我们直接访问使用,比如数据存储、虚拟化服务、服务器和网络等。
使用对象:企业管理员。
优点:云提供了基础架构和服务、增强了可扩展性、动态按需扩展。
缺点:集群规模增大后会出现安全问题和网络服务延迟。
3.2、PaaS 平台即服务
PaaS 主要是提供开发环境/平台,编程语言、操作系统、web 服务器和数据库构成,用户可在其中构建、编译、运行程序无需担心其基础架构。当今面对互联网业务量和用户量剧增,PaaS 是企业需要着重建设的部分。很多企业都以 Kubernetes 为基础建设容器云平台。常见的公有云有有阿里云,腾讯云、亚马逊云等。
使用对象:开发人员。
优点:快速开发部署、弹性扩容、持续交付。
缺点:开发人员仅限于使用PaaS提供的语言和工具,如果前期使用裸金属服务器部署,后期迁移到云,可能会有一定难度和适应期。
3.3、SaaS 软件即服务
按需使用软件、按需付费。跟购买程序无关,该服务运行在云端,是平台无关的,无需在 PC 上安装软件。云端运行该服务一个或多个实例供多个最终用户使用,云计算大大降低企业软件运行成本。比如网盘、网上冲浪服务等。
使用对象:用户。
优点:可以通过任何平台访问、无需关心在什么网络环境。非常适合协同办公。
缺点:云服务是面对所有用户,比如:浏览器兼容性可能导致不能使用某些服务。
3.4、PaaS VS IaaS
在云平台建设过程中 PaaS 和 IaaS 边界在哪里呢?很多企业在建设过程中,可能会把这两个混为一谈,其实有一定的界限。
- IaaS 主要是对裸金属机器进行资源分配、操作系统安装、服务器启动、网络配置等。
- PaaS 主要是对计算资源进行逻辑管理,与应用有关资源分配和调度,主要是最大程度上服务于上层应用,如图(b)。
(b)
4、云平台真的适合你吗?
建设之前,需要大量的时间去整理、评估组件的各种可行性分析。说到这里,很多人可能会知难而退;是的,坦率的说,云平台其实不适合大多数的团队,如果你在一个 15 - 20 人的小团队里,它会带给你大量痛苦,而好处却微乎其微。
4.1、以建设容器云平台举个例子
目前 A 公司的系统全部运行在裸金属 3 台服务器或者 5 个虚拟机上,考虑到硬件资源无法灵活调度,目前考虑迁移到Kubernetes上。
首先需要申请更多的机器,迁移总要有一个过渡阶段,前期裸金属服务器上要运行一份服务,Kubernetes容器化平台还要有一份服务,此外还需要考虑依赖的底层服务;
其次需要开发人员的学习适应和一定的人力投入,开发人员需要在了解大量概念之后才能使用,Node、Pod、Container、Service、Deployment......各种资源对象,如图(c)可以看出 Kubernetes 是一个庞大的系统,操作和使用都是非常的复杂,它包含 58w 行 go 代码,如果我们想要服务更好的工作,研究其运行机制,一定是必不可少的。
( c )
最后落地,需要考虑数据的迁移、遗留系统的迁移,因为 Kubernetes 本身是一个集群,不得不考虑分布式存储管理、配置管理...... 如果自己系统本身不适应集群部署,那么不能发挥云的作用,不得不考虑把服务拆分成分布式微服务程序,这种程序很难编写,编写过程需要考虑分布式事务等很多问题,其次调试和日志排查问题也会增加复杂度,于是你在云平台的漩涡里不能自拔..........
上面说了这么多 Kubernetes 使用问题,是不是说它就一无是处了,当然不是。比如说当前服务客户是金融业务,7*24 小时不能宕机,且有上万用户使用,这就需要考虑到服务的扩展性和升级可靠性了,这正是Kubernetes 最擅长的事情了。
4.2、容器云平台真的有必要吗?
对于任何技术,在使用之前都要持保留态度,别人说好,那是适合,换做是你,可能就是另外一种场景了,要学会洞察技术的本质,就像搭建企业级云平台一样,在搭建之前要考虑为什么要建设企业级云平台?可以从三个方面去考量建设的意义是什么?
业务系统越来越多,各个系统之间存在大量的数据交互和接口调用,规划的还有大量的系统需要建设,出现问题时总是修修补补,无法从全局、系统的角度去规划分析问题。 资源管理层面上,有多个机房和数据中心,里面可能存在部分僵尸服务,无法做到有效监控、动态调度底层计算资源共享,更无法做到峰谷互补伸缩自如。 需求上要求快速交付、持续运行并且已经存在或者未来可预知的大量用户和海量数据。(企业架构源码可以加求球:三五三六二四七二五九)
5、总结
随着互联网的发展和网络带宽的增加,企业应利用云计算的优势,减少了总的成本支出,同时最大限度地提高了效率和生产率,从长远来看,对于大型互联网公司而言,迁移到云是一个明智的决定。