0%

面临的问题

创业公司一般面临下面几个问题

  • 钱不多,省着花
  • 一般研发人员,不具备此类知识体系或者所知不多

需求一直存在

虽然,存在一些问题,但是随着业务发展,人员增多,此类问题会暴露的越发明显,产品技术团队的高效工作,其实是建立在合适、安全、方便的基础设施之上的

如何解决

前期准备

  • Dell服务器1台(约2 - 3w RMB)
  • NAS存储,主要做重要系统数据备份(可选)
  • 交换机(不做过多介绍)
  • 整理办公和研发需求

下面是选择的服务器,这个配置,基本可以满足100人左右企业的日常办公和部分研发测试需求

名称 T640 塔式服务器
CPU Intel(R) Xeon(R) CPU 银牌4110*2
MEM 16G*6
硬盘 4T*3 raid5 + 256固态系统盘

基础设施包含什么

  • 虚拟化的平台工具:我这里选择的是Vmware,好处毋庸置疑,但是收费,我这里之所以选,是因为,有一些历史原因(你懂得,有需求可以单独找我),如果不用,可以考虑OpenStack替代
  • 容器化:Docker是不二之选,这个根据企业自己的需求来看,我个人觉得,初期可以不用容器化,但是,如果有相关维护人员,可以选择Docker Swam或者K8s进行容器化管理
  • 根据需要选择工具:一般企业需要解决的是,知识库、项目和流程管理系统、资产管理系统、统一账户体系、代码库、工件库、如何在外安全上网、内部域名管理、如何安全登录服务器这些需求、数据安全和备份

基础设施搭建示意图

基于VMware ESXI & vSphere

层级示意

架构示意

我用到的工具

后续,会陆续介绍下,我在搭建的时候,相关工具的搭建流程和使用方式

微信关注我,及时接收最新技术文章

写在前面

最近疫情严重,正好利用这个时间,把自己之前的Blog和印象笔记的东西搬搬家,整理整理,希望在疫情过去后,自己也能坚持把自己平时工作的关于技术和管理的实践多写写,一起交流。

产品研发得码多少人

首先打算写一个自己平时在工作中,对于日常的工作流程和工具进行一个整理,也就是DevOps。本人一直在创业公司,有很多人觉得创业公司不需要技术管理和流程,就不到10个人,为什么需要这么多乱七八糟的。在讲这个问题之前,我们想想,现在当下互联网或者物联网相关的产品,需要的角色有多少呢?

角色 职责 备注
RD 研发 各种客户端、云端、大数据等
QA 测试 点点点测试、自动化测试等
PM 产品经理 和程序猿相爱相杀的家伙
OP 运营 数据运营、内容运营、PR推广等
OPS 运维 最苦逼的技术人员
UI 设计 GUI、视觉设计等
BD 商务 负责吹牛逼的
硬件设计 PCB、原理图设计 如果涉及硬件产品
嵌入式 嵌入式驱动开发 如果涉及硬件产品
系统驱动 系统驱动开发 如果涉及硬件产品
结构设计 结构设计开发 如果涉及硬件产品
ID设计 外观设计 如果涉及硬件产品

我整理了下,我们需要的上面这么多角色,当然,在很多创业公司,都是一人兼多职(工资就一份)。但是和我们需要的产品发布和迭代节奏完全相反的是,老板肯定需要快速稳定的发布产品,1周恨不得更新一次feature list。

产品研发流程有多复杂

上面的流程,基本是软件研发的基本流程,为了保证各种质量,涉及到各种角色和阶段,需要整体项目负责人有很强的管理和协调能力,才能保证项目的预期发布和质量管控。纯靠人去跟踪,基本管不好。

迭代速度 快!快 ! 快!

下面的桥段,大家肯定遇到过:

老板说:我们先做一个DEMO,BD需要这周末去个客户演示拿单子。演示完了,然后。。。。

老板再说:客户那边演示的不错,要求1-2周内上线(程序猿懵逼,下面就是产品和程序猿的互撕了)

我们有多少产品和项目是从DEMO改起来的,软件质量、架构体系、产品价值和前景,是否符合公司核心价值,这些都不是考虑范畴了,基本属于,后续全是坑。

任何公司的核心价值都是产品质量的优秀,优秀的产品,我们这里不谈什么是好产品,我们这里聚焦的点是,产品技术怎么保证稳定快速发布新产品。答案就是DevOps。

DevOps的核心价值

DevOps由开发(developments)和运维(operations)组成,字面意义就是鼓励跨部门协作。DevOps的出现其实是敏捷软件开发的产物,下面是敏捷宣言的经典摘录:

1
2
3
4
5
个体和互动 高于 流程和工具,
工作的软件 高于 详尽的文档,
客户合作 高于 合同谈判,
响应变化 高于 遵循计划,
也就是说,尽快右项有其价值,我们更重视左项的价值。

DevOps想要强调的是:个体和互动是非常重要的,用自动化代替重复人工工作,把更多的时间留给大家的沟通和交流,产生真实的价值。

举个简单例子,PM想尽快了解开发的进度(眼见为实,其实UI更需要眼见为实),那就要求RD和QA,需要在测试环境进行快速的增量交付,并且交付的内容可以让PM和UI等利益相关方,尽快看到,并且可以第一个吃狗粮。如果是跨部门的传统合作,试想下,难度是不言而喻的。但是DevOps可以通过一系列自动化和持续交付的工具,以及统一产品目标的理念,让部门壁垒消失,工具提醒人员,去做这个阶段需要做的事情,大家都在管道内,进行有条理的工作,管道的终点就是产品稳定快速发布。

DevOps的流程和工具

  • 流程:DevOps是为了产品交付服务的,交付肯定是有流程的,所以我们先需要明确流程
  • 工具:根据语言、技术人员素质、产品特点,选择合适的工具拓扑,其实最主要的工具包含以下几类:需求管理工具、代码库、构建工具、工件库、测试工具、部署工具、监控工具、问题跟踪

后面几篇文章,会陆续分享下,我在创业公司,是怎么搭建的这套DevOps体系和如何使用的。

谢谢阅读。

微信关注我,及时接收最新技术文章