2

聊聊家园的技术栈(3) - 转Java的事以及基础设施

 2 years ago
source link: https://blog.guyskk.com/notes/%E8%81%8A%E8%81%8A%E5%AE%B6%E5%9B%AD%E7%9A%84%E6%8A%80%E6%9C%AF%E6%A0%88-3
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

聊聊家园的技术栈(3) - 转Java的事以及基础设施

2017年, 5月15日

先说说转Java的事

我实习回来没几天, @佛爷 和 @子健 就找我谈换技术栈,我当时还挺郁闷的。 刚转 Python 不到两年,而且 Python 本身就很适合小团队,为啥要换呢?

聊完之后我明白了,关键是 Java “方便找工作”。 @子健 也提到,他在阿里实习生群里统计了一下: 总共两百多人,三十多个前端,七八十个 Java,一百多个算法。Python 在国内还是太小众了, 工作岗位太少,大公司用 Python 也只是做运维之类的工作。 大公司用的后端语言主要还是 Java 和 C++,笔试面试除了考算法,主要也就考这两门语言, 毕业后想去 BAT 的话,转 Java 有很大优势。

然后就是要怎么转的问题了。要有人能做起来,才不会半途而废。目前 @谢志彬 @田国华 @唐嘉麒 是接触过 Java Web 的,我们做的项目难度也不高,开头应该不会太难。

另一个是现有项目怎么办?目前后端除了 Python,还有一些是用 NodeJS 写的。 大体思路是拆分,大项目拆成小项目,做成微服务的架构,逐步用 Java 重写。 不用太担心工作量的问题,随着时间推移,很多项目会死掉。也不用太纠结于重写的好不好,稳不稳定, 那些旧项目也是从很不稳定的状态慢慢做起来的,大胆地去做,无论成败都是对自己能力的提升。

说实话,我挺舍不得 Python,小而美,开发效率高。我知道 @张伦 在用 Python 做数据挖掘, 有机会可以找他来做个分享。我还会继续用 Python 做 Web 开发,毕竟是自己熟悉并且喜欢做的, 不过也会关注一些 Java Web 的东西。

回到正题,未来是你们的,想长远的目标,选择适合自己的。

接下来说点“基础设施”的事情,这也是我想做或者正在做的。

Passport账号系统

这个是正在做的,前期主要是 @谢志彬 在做。主要是账号,权限方面的功能,给其他的所有需要用户信息 的系统提供服务。具体实现是基于 OAuth2.0,这是一个开放的网络授权标准。

目前这个系统属于云家园的一部分,需要抽取出来做成通用的服务,否则云家园会越来越臃肿,越来越难维护。

Passport 这个名字可以追溯到很多年前,那时候我们有一个单点登录系统(SSO), 所有需要登录的地方都跳转到那里去登录,但那个系统后来有很多问题,而且代码很混乱,没法维护。 转 Python 之后以前那些项目就废弃了。

自动化部署

现在的部署方式还是很低级:每人一个服务器的账号,需要部署的时候自己登服务器执行部署命令。 所以经常就会遇到一些权限问题,前端改了代码要等后端去部署,这种方式风险也很大,万一哪个手抖 rm -rf 一下,服务器就完蛋了。

这个系统最基本的要求就是做个网页,点一下就部署(只限白名单里的账号)。 再完善一些就要加上操作日志,回滚,添加项目等等。

具体实现可以基于 Docker Swarm Mode 或者继续用 docker-compose,Docker 还在快速发展中, 并不算完善,但前景很不错。 也调研过 Ansible,感觉还是复杂了些,但可以试试,很多公司用 Ansible。

业务数据监控

最近也有不少文章讲 “增长黑客” 的概念,依靠技术和数据的力量来改进产品, 达成用户增长、活跃度上升、收入额增加等商业目的。

但是我们现在只有 Google Analytics 的数据,太有限了。我们需要更深入地了解用户。 举个例子,我们做的家园课程表,一天中各个时刻有多少人使用,最近一周用户量和用户活跃度怎么样, App 里的某个 Banner 展示了多少次,点击了多少次等等。数据能非常客观地反映出产品的不足之处, 并指导改进策略。

具体实现也不会太难,有开源的 Grafana,InfluxDB,StatsD 等等,都是比较成熟的工具。
可以参考这个视频:Marek Mroz: Collect and visualise metrics with InfluxDB and Grafana

我的文章 Web开发三条锦囊 也有一些相关内容。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK