创业公司由于时间、人员、资金等各方面的限制,系统需要的各个组件优先选择第三方服务,而不是自己搭建。一个创业开发项目都需要服务器操作系统、开发语言、web服务器、开发框架、数据库、缓存、静态文件存储、日志系统、业务监控、持续集成、代码管理、发布部署系统、文档管理等。现在按这些方面展开来讲。
服务器操作系统服务器可以使用云服务器,像阿里云的ECS。对于面向国外的应用,则优选选择AmazonECS。所有的服务器都选择一种操作系统版本,一般都选择Linux内核的操作系统,像Ubuntu、CentOS。Ubuntu的软件源比CentOS的软件源更新些,一般情况下选择Ubuntu。服务器硬件使用大致相同的配置,后面根据配置扩展。
开发语言对与创业公司来说,时间是很重要的,所以我们要选择团队容易上手的开发语言便于快速迭代。一般来说,php和go语言都是不错的选择。
数据库对于关系性数据库,首选mysql,可以选择阿里云的RDS提供mysql服务,减轻DB管理工作。
开发框架对于开发框架的选型,我们需要考虑:
框架是否完善,支持分布式、包含常用的像日志、缓存等组件,性能优越
团队成员需要有非常熟悉该该框架的同事,需要能掌控框架
框架使用广泛,有活跃的社区支持
对于php我们可以选择laravel/tp/yii这样的开发框架,注意需要各个项目都统一使用一种框架,便于同事专注于业务开发,掌握业务中需要用到的技术。
web服务器软件web服务器软件有nginx、apache、tomcat、iis等。现在nginx广泛使用,nginx可做后端服务器的反向代理、负载均衡、静态图片缓存,以及可使用lua扩展nginx。
LB(负载均衡)LB(负载均衡)是一个通用服务,一般云厂商的LB服务基本都会如下功能:
支持四层协议请求(包括TCP、UDP协议);支持七层协议请求(包括HTTP、HTTPS协议);集中化的证书管理系统支持HTTPS协议;健康检查;如果你线上的服务机器都是用的云服务,并且是在同一个云服务商的话,可以直接使用云服务商提供的LB服务,如阿里云的SLB,腾讯云的CLB,亚马逊的ELB等等。如果是自建机房基本都是LVS+Nginx。
缓存对于热点数据需要使用缓存,减轻服务器的压力。现在Redis等内存缓存广泛使用,可以选择像阿里云的数据库Redis版。
静态文件存储静态文件像图片、视频等文件比较耗磁盘资源,并且耗带宽,需要有磁盘更大、带宽更便宜服务器做这件事。可以自己搭建fastdfs集群做这件事,但比较麻烦。现在很多公司都选择像阿里云OSS、又拍云、七牛云这样的服务。如果使用阿里云的OSS的话,搭配阿里云的ECS、CDN就比较方便。
CDN使用CDN分发内容,使用户访问比源节点,提高用户访问速度。对于有很多小的静态文件、html文件、视频文件、图片文件的应用效果非常好。CDN可以选择阿里云和腾讯云。
日志系统日志对于排除应用故障非常有帮助,简单的应用通过打印文件就可以。然后通过ELK组件做收集存储展示。在php中可以使用Seaslog输出规定格式的日志,然后再用ELK。
业务监控我们平常做的简单的监控是,在系统异常或者错误时,通过企业