全栈必备的技术栈设想
参加今年的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是大量数据的传输必备。
啰哩啰嗦,只是想探讨一下全栈的套路,也许这本身就是一个伪命题。
这是我非常喜欢的一句话,印在公司的墙上,“以匠心,铸非凡”,送给每一个热爱技术的朋友!
微信扫一扫
关注该公众号
全栈必备的技术栈设想相关推荐
- java技术栈是什么意思?一次认全9大主流技术栈!
Java技术栈是指一组在Java开发中广泛使用的技术和工具集合,包括Java编程语言.Java虚拟机.Java类库.Web开发框架.数据库.IDE等.Java技术栈广泛应用于企业级Web应用程序的开发 ...
- 入职阿里巴巴,成为年薪百万阿里P7高级架构师需要必备哪些技术栈
阿里巴巴是大部分程序员梦想的大厂,进阿里也不是一件容易的事,这里分享一份阿里内部PPT.从零开始学架构视频资料,Java系统性核心知识体系助你备战阿里 研发篇部分截图一览,感谢大佬们的分享 算法篇部分 ...
- c语言构建栈_选择技术栈构建通用平台
c语言构建栈 Java社区中有许多关于Spring vs Java EE的话题. 一群人会争辩说您应该使用一个而不是其他.等等.当我看到这一点时,我不禁要想为什么我们不能同时使用它们呢? 实际上,我认 ...
- 全网最全的 Java各类技术栈 架构图汇总(建议收藏)
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/qq_37651267/article/ details/95244623 1. java 类加载器架构 2. JVM 架构 3 ...
- 多次面试美团后,我整理了这几个必备的技术栈!
前阵子哥们儿去美团面试,知道我之前面试过并且拿到了 Offer(虽然后面没去),就来问我面试的要点. 我就给他说了几个知识点,他说怎么可能考这些呢?结果 5 个考了 3 个,要是他听我的话,怎么也拿个 ...
- python后端技术栈_Python后端技术栈(三)--设计模式
正文共:10260 字 5 图 预计阅读时间:26 分钟 每日分享 Somewhere, something incredible is waiting to be known. 总有令人惊叹的东西, ...
- mean技术栈 linux,“MEAN”技术栈开发web应用
var express = require('express'); var app = express(); app.listen(3000); var _rootDir = __dirname; v ...
- 这份2021Java程序员常用技术栈和工具清单,刷爆了朋友圈...
点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作为一枚Java程序员,需要掌握哪些技术和工具才能完成一个J ...
- 转变:从SQL技术栈到图技术栈
[摘要]传统的以SQL为中心的技术栈无法有效地应对大数据场景带来的多元异构数据管理.大规模关系网络管理和复杂网络分析等挑战,本文针对新型大数据技术栈展开研究.通过分析图数据模型的优势,结合图技术的发展 ...
最新文章
- LeetCode: Unique Binary Search Trees [095]
- linux 条件变量
- Redash 9安装与配置(基于Docker方式)
- PHP json_encode 只支持utf8编码
- POJ - 2449 Remmarguts' Date(第k短路:spfa+A*)
- 国内各大平台的推荐算法,看到360的时候笑喷了……
- ueditor单图上传iframe跨域_UEditor单图上传(simpleupload)跨域问题解决方案
- 配置nginx-rtmp流媒体服务器(宝塔面板配置教程)
- mysql select大全_Mysql select 大全
- gcc学习与实践(2)
- HOWTO:InstallShield中如何通过脚本获取“My Documents”路径
- HTML标记特定,制作asp:标记特定的HTML标记
- 键盘计算机编程是什么意思,可编程键盘是什么
- sass 使用入门教程
- 全链路UI设计师了解一下
- 关于纯净的win7旗舰版安装后无无线网驱动问题
- Navicat 15注册时报错“Rsa Public key not find“的解决办法
- python处理颜色rgb_python – 根据RGB值更改图像的颜色
- Python BeautifulSoup简介
- 2021牛客多校#4 E-Tree Xor