前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工具系列 | 从零开始搭建创业公司技术架构

工具系列 | 从零开始搭建创业公司技术架构

作者头像
Tinywan
发布2020-12-02 10:06:26
1.4K0
发布2020-12-02 10:06:26
举报
文章被收录于专栏:开源技术小栈

从零开始搭建创业公司技术架构

创业公司由于时间、人员、资金等各方面的限制,系统需要的各个组件优先选择第三方服务,而不是自己搭建。一个创业开发项目都需要服务器操作系统、开发语言、web服务器、开发框架、数据库、缓存、静态文件存储、日志系统、业务监控、持续集成、代码管理、发布部署系统、文档管理等。现在按这些方面展开来讲。

服务器操作系统

服务器可以使用云服务器,像阿里云的ECS。对于面向国外的应用,则优选选择 Amazon ECS。 所有的服务器都选择一种操作系统版本,一般都选择 Linux 内核的操作系统,像 Ubuntu、CentOS。Ubuntu的软件源比CentOS的软件源更新些,一般情况下选择Ubuntu。服务器硬件使用大致相同的配置,后面根据配置扩展。

开发语言

对与创业公司来说,时间是很重要的,所以我们要选择团队容易上手的开发语言便于快速迭代。一般来说,php和go语言都是不错的选择。

数据库

对于关系性数据库,首选mysql,可以选择阿里云的 RDS 提供mysql服务,减轻DB管理工作。

开发框架

对于开发框架的选型,我们需要考虑:

  1. 框架是否完善,支持分布式、包含常用的像日志、缓存等组件,性能优越
  2. 团队成员需要有非常熟悉该该框架的同事,需要能掌控框架
  3. 框架使用广泛,有活跃的社区支持

对于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。

业务监控

我们平常做的简单的监控是,在系统异常或者错误时,通过企业微信或者钉钉这样的方式发送信息给组成员。这中方式做的事情比较有限,而且不够智能。可以选 new relic 这样的apm监控工具监控页面响应时间等。系统监控看阿里云后台。

短信服务

短信服务时应用中经常用到的,短信服务商包括有容联云通讯、阿里云等,发送量很大时,可以选择几家服务商交替使用。

代码管理

代码管理工具使用gitlab搭建代码管理工具,或者使用github私有库。

持续集成

持续集成,简称CI,是一种软件开发实践。通过持续集成工具,每次提交代码自动完成安装程序依赖、自动化测试等,测试验证开发效果比较方便。如果使用gitlab,可以使用GitLabCI,或者使用Jenkins。

发布部署系统

从测试环境,到预发环境,到最终的正式环境部署,需要有响应的部署系统的支持,发布系统可以考虑使用wallet这样的开源系统,wallet网址:http://www.walle-web.io/docs/

跳板机

开发需要可能登录到多台服务器环境,可以使用跳板机来方便登录,此外来可以做安全审计,查看每个成员的操作,将责任划分到人,提高系统安全性。跳板机可以使用jumpserver。

文档管理

对于创业公司,文档管理很重要。必要的文档,可以让新成员更快地融入到项目,也有利于团队的技术沉淀。对于内部文档管理,可以使用开源的markdown系统,如showdoc。文件附件可以存放到企业微信的文件里。也可以使用第三方的系统,如腾讯tapd,兼具需求管理、文档管理等功能。

需求管理

可以使用腾讯的tapd比较完整的工具,或者使用trello简单的需求管理工具。所有口头需求都要写到需求管理工具上面,防止忘记以及方便查看需求。每天开发成员将当日计划开发的新需求添加到共享excel里,将之前的任务用不同颜色标注为完成和进行中。早会时,简要说下今日工作内容和遇到的问题。

项目管理

  • 有专人对接项目需求,让程序员有更多的时间写代码。
  • 手机24小时开机,快速响应突发问题
  • 团队leader要以身作则,成员较少时,甚至要亲身写代码。
  • 团队leader要放手开发成员做事,让所有成员都有提升,这样也可以减少成员流失。
  • 处理服务器问题时,最好不要让 BOSS 在开发身边,增加压力
  • 项目架构预留扩展,但是不要过于设计架构。架构简单,更易于维护。
  • 项目重构要放在平常工作,逐步去做。不要轻易推翻之前设计,这样很费时间。

参考

[从零开始搭建创业公司后台技术栈]http://www.phppan.com/2018/04/svr-stack/ [从零开始,打造适合创业公司的千万级用户技术架构] http://www.upyun.com/opentalk/244.html [小恩爱技术团队成长及服务器架构演变] http://www.upyun.com/opentalk/245.html [浅谈创业早期技术实现] https://mp.weixin.qq.com/s/OyuYpQfCy0XuGat-YC9iBg

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 万少波的播客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从零开始搭建创业公司技术架构
    • 服务器操作系统
      • 开发语言
        • 数据库
          • 开发框架
            • web服务器软件
              • LB(负载均衡)
                • 缓存
                  • 静态文件存储
                    • CDN
                      • 日志系统
                        • 业务监控
                          • 短信服务
                            • 代码管理
                              • 持续集成
                                • 发布部署系统
                                  • 跳板机
                                    • 文档管理
                                      • 需求管理
                                        • 项目管理
                                          • 参考
                                          相关产品与服务
                                          内容分发网络 CDN
                                          内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档