「BearyChat」可以为用户做什么?

「BearyChat」是由一熊科技目前重点为团队打造的一款沟通工具,通过“各种第三方服务集成”、“全格式的文件共享”、“自由定制的机器人”等方式将你所关心的信息快速汇聚到平台上,再通过信息的“永久保存”、“一键收藏”、“全局搜索”、“实时预览”帮你将信息流快速梳理,从而提高工作效率。

「BearyChat」项目如何开展的?

目前一熊团队会以两个月为一个周期进行冲刺,首先有一个基本原则:活跃和留存。所有的事情都需要和这两个数据挂钩,越直接优先级越高。每个周期大概分三个阶段:

首先是功能需求确定阶段,这个大约有一周时间,最后都会体现在 Trello 里面,主要是:

1.确定 2 到 3 个大功能;

2.对于收集到的反馈问题按优先级确定哪些要在这个周期处理,进行细节迭代;

3.最后和每一位同事确认需求,保证大家达成共识,知道这个周期的共同目标以及最终期望结果;

4.计划排期阶段,这个大约 1 到 2 天时间,主要是和每位同事沟通,确定工作量,最后以周为单位,划分这个周期的任务。

开发阶段,包括:

* 产品和设计师再次明确需求

* 设计师出设计

* 产品和相关开发验收设计

* 开发

* 产品和设计师验收开发

* 黑盒测试

* 上线

回顾阶段,主要是做总结,看这个周期完成度如何,差的比较多的话,会留一些时间做收尾或者将一些内容留到下个周期。

整体项目的推进是采用简化的 Scrum 敏捷开发,每天会 15 分钟左右的站会,让大家清楚每个昨天已经做的事情和今天要做的事情。另外除了 Trello 之后,办公室还有一个现实白板,大家可以清晰的看到每个计划所处的阶段,目前主要分:Doing, Stage, Prod。然后每周五都会有一个 demo day,让大家来展示一下各自做的东西,保证一周的进度 。

「BearyChat」的内部开发流程以及上线流程是怎样的呢?

目前团队的整个开发流程基本是和上面提到的开发阶段差不多,这里说说开发这个环节的内容。先介绍一下团队的开发主要依赖的工具:GitHub 和 Jenkins。GitHub 开发过程中要是是用来做 Code Review 和 issue 跟踪;Jenkins 主要是用来保证测试和部署。

* 工程师从 Trello 拿任务放到 GitHub issue 中

* 开分支,完成后提 PR,同时要 at 至少一名 Reviewer

* 因为我们将 GitHub 和 Jenkins 做了集成,代码的每个提交都会触发 Jenkins 的测试,当 PR 处于测试通过并且可以自动合并的状态下,Reviewer 开始 Review

* Reviewer 通过 Review 最后负责合并分支,issue 会随着 PR 合并自动关闭

* 将代码部署到测试环境,进行功能验收

* 将 Trello 里面的 card 放到 DONE 里面

开发上,团队坚持 Code Review, 所以每个端的工程师基本是保证由两个以上的人员组成,可以互相 review 并且有 backup。

上线流程不同的端有不同的上线时间点,原则上:

* 前端/后端:每周二周四上线

* iOS:每两周,提交一次审核(目前我们遇到的审核基本是两周可以通过的节奏)

* Android:每两周提交一个新版,因为安卓审核过程可控,所以节奏比较把握

* 桌面端:累积到一定新功能就发

「BearyChat」在产品开发过程中,对于架构的把控和设计是怎样的?

先分享一下产品整体架构

团队对于架构和设计的一个想法:简单。在技术架构上不做过度设计,但是会保持基本原则:可扩展。

可扩展包括两个方面:

* 横向扩展:监控得当,当发现流量增长的时候,可以及时用**加节点的方式**解决压力问题

* 纵向扩展:对产品发展有预见,设计的协议,结构可以应对未来产品功能的扩展需求

另外就是要尽可能做到模块化,解耦合。队列系统是必须要有的,所有可以异步化的模块都要异步化。

「BearyChat」的主力开发语言用了哪些?为什么要如此选择?

前端是用了 AngularJS 和 LESS,后端是 Clojure 和 Erlang。

* AngularJS: 从语言角度讲,Angular 有一定程度的组件化,容易复用,上手也相对容易;从和项目契合度来讲,AngularJS 搭建实时系统非常方便,双向绑定虽然性能差些,但是 MVC 很清晰;从社区角度讲,Library 非常丰富;不过 JS 框架通常每隔一段时间就出来一个,比如现在的 React, 选择一个当下最合适的就行。唯一一个坑就是 AngularJS 2.0 对下不兼容。

* LESS: 不用说了,模块化,语法糖,节省时间;

Clojure: 基于 JVM 的 Lisp 方言。非常适合做数据处理的事情,尤其适合做 API Server;从语言角度讲,函数式编程,比较纯粹,数据就是代码,代码就是数据,操作起来很方便;社区角度讲,虽然不是很火,但是毕竟有 JVM 的优势,所有 JAVA 的库都能引入;

* Erlang: 古老的语言,但是设计的目的就是解决通信问题,他的语言特性就是用来解决高容错,分布式。Erlang 采用了 Actor 模型,并且有 OTP Library,搭建分布式门槛就低了很多。另外作为一门古老的语言,在消息通信方面有很多代码积累,比如 Ejabberd,应该算是 XMPP 协议下用的比较多的一套开源方案了。网络库方面,有 cow_boy, ranch 等;集群方面,有 riak_core 等;通信协议方面,有国人实现的 MQTT 协议;消息队列方面,有 RabbitMQ;

目前工作上,团队重度依赖工具:

BearyChat:内部沟通,聚合第三方通知信息

GitHub:代码托管,Code Review,issue 跟踪

Jenkins:集成测试,部署

Sentry:异常收集

Grafana+StatsD:数据收集

Trello:项目管理

Skype:远程沟通

FIR.im:App 内测

感谢大家看完了这篇这么长的文章了解我们和我们的产品,有任何问题,都欢迎随时和我们联系哦

转载于:https://my.oschina.net/u/2426334/blog/485685

简说创业公司的技术选型,从「BearyChat」的开发说起相关推荐

  1. 简说创业公司的技术选型,从BearyChat的开发说起

    简说创业公司的技术选型,从BearyChat的开发说起 发表于2015-07-28 16:25| 3491次阅读| 来源CSDN| 5 条评论| 作者蒲婧 CTOCTO俱乐部创业工具管理实践CTO讲堂 ...

  2. 关于小公司/创业公司的技术选型、管理以及如何如何快速成长获得成功

    这篇文章会我从多方面深入分析小公司/创业公司的困境.现状,梳理剖析创业公司/小公司的需求,以及为小公司/创业的公司以后的发展指明方向. 首先创业,我觉得要明确的清楚自己的目的,自己做的事情是什么,我理 ...

  3. 从零开始的 PhotoShop CEP 6开发教程「 1 」配置开发环境

    <从零开始的 PhotoShop CEP 6 开发教程>系列目录 「 0 」目录 「 1 」配置开发环境 「 2 」CEP 文件结构 「 3 」CEP 的运行机制 「 4 」Hello W ...

  4. 谈谈创业公司的技术选型

    从公司成立第一天起,我们就以 Google 的技术标准要求团队,鼓励使用新技术.鼓励重新造轮子.鼓励全栈,同时因为业务涉及视频.电商.社交多个领域,我们在创业环境下对微服务.DevOps.自动化测试和 ...

  5. 从概念到技术,打通「中台」的任督二脉,别再说不知道中台是什么

    2019 年,「中台」这个词火了! 随着阿里等头部互联网企业搭建和推动中台业务,让越来越多的企业关注中台,纷纷提出「中台战略」,帮助企业自身加速实现数字化转型. 不少企业还在观望「中台」: 1.我的企 ...

  6. 把照片唱给你听 | 腾讯AI Lab国际领先技术邀你「趣」体验

    感谢阅读腾讯AI Lab微信号第10篇文章.本文介绍了我们在图像描述生成与TTS等技术跨界的前沿研究进展,并邀请大家测试一个趣味Demo.我们还会分享在多媒体内容AI应用上一点思考. 2017年8月, ...

  7. 2020年中国废旧纺织品回收行业市场现状分析,高值化再生技术持续推进「图」

    一.废旧纺织品再加工方法 废旧纺织品是指生产和使用过程中被废弃的纺织材料及其制品.废旧纺织品的来源主要有3种:一是制造纺织品过程中的废丝.残料.下脚料等:二是消费后淘汰的服装,废弃的床上用品.窗帘.地 ...

  8. 阿里技术大神「多隆」的成神之路

    昨晚睡觉前,刷知乎的时候,看到一篇关于阿里大神多隆的回答.多隆就不过多介绍了,很厉害的一个程序员,淘宝就是他闭关手写出来的,他在阿里巴巴的地位很高. 我感觉这篇回答写得好,值得我们阅读,是因为这篇回答 ...

  9. 【SpringCloud技术专题】「Hystrix」(9)熔断器的原理和实现机制

    熔断器(Circuit Breaker)介绍 熔断器,现实生活中有一个很好的类比,就是家庭电路中都会安装一个保险盒,当电流过大的时候保险盒里面的保险丝会自动断掉,来保护家里的各种电器及电路. Hyst ...

最新文章

  1. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...
  2. 【解题报告】Leecode 384. 打乱数组——Leecode每日一题系列
  3. IOS(常用移动终端设备) push实现通知中心
  4. Java 9中的5个功能将改变您开发软件的方式(还有2个不会)
  5. MongoDB与Spring Data项目
  6. 2797:最短前缀 Trie
  7. java web开发之 spring单元测试
  8. How to set up native subversion (javahl) with Subclipse on Mac OS X
  9. 13-11-27新的一天
  10. HDR【openCV实现】
  11. SketchUp草图大师制作分析图的详细流程介绍
  12. 基于FFMPEG+Python实现大视频分隔+水印+合并片头片尾
  13. 中值滤波器和双边滤波器(python实现)
  14. Control.DataBinding数据绑定细解
  15. 游戏后台状态同步与帧同步
  16. NAPI之(一)——原理和实现
  17. 温暖的光,坚定的飞翔
  18. python字典创建、使用字典保存中国主要城市和对应邮编_Python字典及相关操作(内含例题)...
  19. matlab绘图操作之坐标轴范围设置
  20. 【tio-websocket】3、tio-websocket-server实现任何地方都能对用户发送消息

热门文章

  1. div+css静态网页设计——海贼王动漫主题(6页) 影视主网页HTML代码 学生网页课程设计期末作业下载 动漫大学生网页设计制作成品下载 漫画网页作业代码下载
  2. 2021年化工自动化控制仪表考试内容及化工自动化控制仪表模拟考试
  3. 【书籍学习】史上最全的Java进阶书籍推荐
  4. Scanner的使用
  5. git not found
  6. U3D-亡命时速游戏制作(六)
  7. feof函数,fscanf函数,strtok函数等遇到的小疑惑解决办法
  8. 买量洞察与渠道评估,助力营销决策优化
  9. 专注性能的多端研发框架 - ice.js 3 正式发布!
  10. CDR插件开发之GMS插件002 - GMS插件和VBA简介