全栈的技术栈设想

参加今年的SDCC确实挺高兴的,向大师Joe Armstrong 当面求教,与周爱民老师同台,在我们的架构师进阶之路专场有4个七零后的老码农,瞬间没有了孤独感,甚至有一点窃窃之喜。

实在没想到会有这么多朋友关注这个专题,会场有了些拥挤,呼吸也不那么舒服了。答应朋友们的事,今天就做点,下面是昨天的PPT内容和简要说明,详细内容还请关注CSDN 和SDCC的相关发布。

惯例是开始介绍自己,老码农,都没什么可吹嘘的地方。

看一下工程师和架构师的区别,简单地,工程师关注的是功能和代码性能,而架构师关注的是业务和系统的性能等非功能性约束。全栈不是全能,只要覆盖了所使用的技术栈就是全栈,例如LNMP,Linux+Nginx+Mysql+PHP。全栈架构师关注的是业务所采纳的全部技术栈,以及技术栈所涉及的系统性能、安全,高可用等诸多因素。

全栈(full stack developer)好像起源于facebook中对工程师的一种称谓,全栈架构师估计是老曹的杜撰。全栈的出现大概有4个方面:系统的性能瓶颈定位,团队间的沟通障碍,业务的救火灭火,以及团队的资源紧张。尤其的小型创业团队,战力的有限会导致全栈的产生。

和习武一样,我想试图探讨一下全栈的套路,很多能力不是通过当头棒喝产生的。郭大侠需要降龙十八掌,令狐冲以无招胜有招也需要独孤九剑。我觉得全栈的技术栈可以主要分为3个切面:技能,性能 和效率。下面逐一简要阐述:

工其事必利其器,环境在效率中是第一位的。具体可看《老曹眼中的开发学习环境》,不在赘述。

全栈应该掌握4种编程语言:Java,Objc/C/C++, Python,JavaScript。 语言没有优劣,不同语言有各自的胜场。

每个人都不是一个人在战斗,团队敏捷是整体效率的关键。可以使用Trello或worktile之类的工具做协同,以Jinkens等工具支持CI或者CD,了解Scrum中什么是backlog,什么是UserStory,如何控制sprint。同时,敏捷不是以质量的丧失为代价的。

再进一步,就是devops了,可以参考《DevOps 全栈必备双刃剑》。

从下向上看一下 全栈的所需技能,第一个就是操作系统,可参考《老曹眼中的Linux基础》。

数据是系统的核心,必须要了解文件系统,对象存储和关系型数据库,只有NoSQL至少要关注redis和mongodb,更多可以可参考《NoSQL与大数据》。

网络是一个覆盖更广的领域,至少要了解七层协议模型,DNS,TCP/IP,HTTP,以及网络类型对网络编程的影响,会上只有简单举例,以后择机仔细探讨一下。

框架和库使用锁采用的语言息息相关的,不同语言又有着不同的框架与库,简直是浩如烟海,对框架与库的选择主要从面相领域和面向场景入手,有比较才能有选择。

安全是个与非门,没事一切都好,有事就是大事。基本上,可以从传输,网络,代码和数据四个层面掌握有关安全的基础知识。

至于架构方法,现在最热的莫过于微服务架构了。服务的划分与业务密切相关,服务独立后要考虑服务的发现和服务间的通信,最后是服务治理,可以从这四个方面专研相关的技术。

云服务的出现使得小团队可以做大事情,关于混合云的解释可参考老曹的旧文《理解一下混合云》。

从趋势来看,大数据必将成为工程师团队的重要战力,包括专业知识,数学算法,计算环境三个方面。就计算环境而言,涵盖了Hadoop的生态圈,如果只有一个必备技能,老曹觉得就应该是Spark了,可以参考《架构大数据应用》旧文。

个人以为,性能在诸多非功能性约束中第一重要,直接影响用户体验。首先要从业务和代码层面保障性能,而单元测试是一个必要条件。正像PingCAP CTO 黄东旭所说的,“talk is cheap, show me the tests."

接下来是运行时调优,或者认为是单机性能。从加载和依赖开始,到 JVM调优,再到Linux 内核参数调优。 对于 JVM 调优,给朋友做个广告,中生代技术群中的 江南白衣 (公众号:春天的旁边)有一篇干货文章,特别向大家推荐。

数据库是整个系统中的慢性子,关注系统的性能,日志分析比不可少,LEK可能是第一首选。数据访问必须是高可用的,数据连接池的选择和使用都是考验功夫的。

缓存是减少负载,提高系统性的必备技术。可以从客户端,网络侧,服务端三个环节对缓存进行分类,具体可以参考《老曹眼中的缓存技术》。

负载均衡同样是一种以空间换时间的技术,具体可参考《老曹眼中的负载均衡》。

传输的性能可以依靠消息队列来提升,ZeroMQ可以用在系统内,而ActiveMQ是Java 程序猿的福音,对于高并发和高容错而言,RabbitMQ可能是不错的选择,Kafka是大量数据的传输必备。

啰哩啰嗦,只是想探讨一下全栈的套路,也许这本身就是一个伪命题。

这是我非常喜欢的一句话,印在公司的墙上,“以匠心,铸非凡”,送给每一个热爱技术的朋友!

原文发布于微信公众号 - 喔家ArchiSelf(wireless_com)

原文发表时间:2016-11-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏带你撸出一手好代码

把网站做成软件

刚接触电脑那会,对软件的了解不如现在来的深切 ,那时候软件两个字在我脑海中的概念就是通过搜索引擎搜索结果或直接在浏览器地址栏中输入网址进入获取我需要的软件的网站...

3438
来自专栏PPV课数据科学社区

盘点互联网巨头奉献的十大开源安全工具

Facebook等大型互联网公司推动的服务器与数据中心、大数据工具的开源化项目类似,当大型互联网公司们在超大规模基础设施运营方面面临的挑战超出技术厂商的能力时,...

3678
来自专栏Java技术栈

阿里巴巴Java开发手册(终极版)

别人都说我们是码农,但我们知道,自己是个艺术家。也许我们不过多在意自己的外表和穿着,但我们不羁的外表下,骨子里追求着代码的美、质量的美。而代码规约其实就是一个对...

6678
来自专栏美团技术团队

行进中换轮胎——万字长文解析美团和大众点评两大数据平台是怎么融合的

背景 互联网格局复杂多变,大规模的企业合并重组不时发生。原来完全独立甚至相互竞争的两家公司,有着独立的技术体系、平台和团队,如何整合,技术和管理上的难度都很大。...

39817
来自专栏WeTest质量开放平台团队的专栏

百万并发量苹果官网准备好了吗?——一分钟学会服务器压力测试

企业需要良好的网站性能。网站的访问速度和顺利的体验是企业必须要做好的事情。本文从苹果官网两年来每次预购都出现的服务器宕机情况,揭示服务器性能测试的重要性,手把手...

2173
来自专栏SDNLAB

SDN实战团分享(四十):揭秘Arista EOS三大特性,打造非一般的云网架构

很多人知道目前全球许多大型的云数据中心网络使用了大量 Arista 的交换机,那么这些用户看重的是哪些特性?今天我来和大家一起探讨一下云网络数据中心看重的软件驱...

4045
来自专栏WeTest质量开放平台团队的专栏

Android 9.0 震撼来袭 同步登陆WeTest

? WeTest 导读 2018年8月7日,Google对外发布最新 Android 9.0 正式版系统,并宣布系统版本Android P 被正式命名为代号“...

1344
来自专栏竹清助手

推送通知策略分析

好的消息推送三要素:timely、personal、actionable。消息推送对用户留存率与活跃度至关重要。用户愿意打开消息推送,是对你的 App ...

1272
来自专栏最新活动整理

腾讯云双11优惠活动整理,助力全民优惠上云

双十一期间的云服务器促销活动肯定不能少的了腾讯云商家。在昨天阿里云发布活动之后依旧只能新用户才可以购买便宜产品,老用户没有资格还是有些失望的。不过腾讯云商家并没...

3960
来自专栏数据小魔方

简单易用的excel数据分析插件

今天给大家安利两款简单好用易上手的excel数据分析插件! excel虽然内置有数据分析模块 (需要调用开发工具,还不知道怎么调用的请参考小魔方12月21日文章...

3498

扫码关注云+社区

领取腾讯云代金券