第一次听到“云服务器”的人,常会碰到“把程序部署到云服务器上”这样的说法,却未必清楚部署的到底是什么。简单说,云服务器应用程序就是跑在云服务器上、替用户或业务干活的那部分软件。网站、接口、管理系统、定时脚本都属于这一类。

云服务器本身是什么
阿里云ECS、腾讯云CVM、华为云ECS这类产品,其实是云服务商在数据中心里切出来的一份虚拟计算资源,里面有CPU、内存、存储和网络带宽。拿到手以后,它和一台远程电脑差不多,可以装操作系统,也可以装各种软件。
两者的分工很清楚。服务器提供算力和运行环境,应用程序负责把具体的事做完。服务器配置再高,没有程序跑起来,也只是一台空转的机器。
一个应用通常由哪些部分组成
从部署的角度看,一套跑在云上的应用一般包括下面几块。
- 运行环境,比如Java运行时、Python解释器、Node.js,或者作为入口的Nginx。版本要和代码对得上,这一步出错最容易造成“本地能跑、线上报错”。
- 业务代码,即登录、下单、查询这些功能的实际逻辑。
- 数据存储。数据库可以装在同一台机器上,省事;数据量上来或者要做备份时,换成云数据库通常更省心。
- 对外接口,通过域名和端口接收浏览器、手机App或其他系统的请求。开放哪些端口,直接影响安全。
- 运维配置,包括日志、备份、监控、进程守护。不少团队上线时只顾功能,等到半夜服务挂了才发现没有日志可查。
常见的几类云上应用
网站与内容服务
企业官网、博客、资讯站是最常见的一类。程序部署好后,用公网IP或域名就能访问。页面里的图片和静态文件量大时,可以再接一层CDN,把访问压力分散出去。
移动应用后端
小程序和App的登录、支付回调、消息推送,背后大多是一组服务端接口。它们跑在云服务器上,接收客户端请求,再读写数据库。客户端界面做得再好,接口不稳定,用户照样会觉得App卡。
企业内部管理系统
ERP、CRM、OA这类系统也很典型。以前放在办公室机房里,异地员工只能靠VPN连进来;搬到云上后,外地同事直接访问即可,机房的硬件维护也少了不少。不过访问入口一旦放开,账号权限和登录验证就得认真做。
数据处理与计算任务
日志分析、报表生成、图片或视频转码都属于这一类。它们计算量有时很大,但持续时间不长,适合在需要时临时开一台高配实例,跑完再释放,不必为偶尔的峰值长期付费。
几个假设场景
下面三个例子用来说明思路,不是某个真实项目的数据。
家居商城的大促,假设一家小商城平时访问量不大,但促销时流量可能涨上好几倍。它可以把商城程序放在两台云服务器上,前面挂负载均衡,并设置弹性伸缩规则。促销时自动加机器,活动结束后自动减回去。页面不至于打不开,全年也不用为峰值养着一堆闲置资源。
培训机构的直播课,如果课程管理、报名和直播回放全挤在一台机器上,直播推流一占满资源,其他功能就会受影响。更稳妥的做法是拆开,直播和转码单独用性能更强的实例,课程管理系统用普通规格就够了。
连锁门店的会员系统,如果会员积分和优惠券各店各自维护,数据很快对不上。把服务部署在云上,各门店统一访问,总部看到的才是同一份数据。前提是门店网络要稳定,否则收银端在高峰时段容易卡住。
规划时要先想清楚的几件事
动手部署前,可以按下面几点过一遍。
- 业务规模,先估算并发量和数据增长速度,再决定CPU、内存和带宽。一开始选太小,后面迁移会很折腾;选太大,钱会白白花掉。
- 可用性,关键业务尽量跨可用区部署,数据库要定期备份,并且真的试一次恢复。备份文件能不能用,只有实际恢复过才知道。
- 安全防护,用安全组限制开放的端口,系统补丁及时更新。数据库端口不要直接暴露在公网上,这是常见的漏洞来源。
- 成本控制,长期稳定运行的服务适合包年包月,波动大或临时性的任务适合按量计费。测试机和旧快照要定期清理,否则账单会悄悄变长。
小结
云服务器应用程序就是跑在云服务器上的各类软件。先搞清楚它由哪些部分组成,再结合自己的访问量、数据量和预算去选型,上云的过程会顺很多。具体的部署步骤和运维细节,可以再单独展开。