老曹眼中的全栈架构师

简介: 听说过全栈工程师,那全栈架构师又是啥?

dc69e7c232f9e66f01b7501f1f698ab7a11c4f5f

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

c3cb78db61af8ed75b97a65e13caade0691493b0

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

70fcde2be545f9f0738d7d572a1c88e5ab91ab76

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

f1f5f6a9676c8e36061680cc2b80da66b0b06ca0

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

3e110ce9aea2da4cba53f07b0621a7d264fd0476

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

58ffd55acc25186fc73d916981c6ecdf16e375f8

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

a1f142fc627679ec10ab9a85e3cab5e435bb3e9b

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

0d9c0b8d3f3249531a02edd2cb88bcd13bd821db

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

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

08f5be9149e6391b3bebbc767245c7ccdf443130

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

ae8c3df4759275e9404b5a963e9ee9501c1afee8

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

666869f955a193a8a68c44e1abb5375cc05dffd5

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

4bd2e28d5a3eabe4b58b41e50479aa95e6a5bcdc

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

cc1994762f9c17f86ba9e400fc0dc9b3a9d9c924

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

8a152c7fe37b0da21a33e20f7e94dcef6f9e1def

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

84d8d3709b550b28298a999a06a620f6d9a598e6

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

205df3c9ccb4a4bde8d1a6da71c61a3611a6fabf

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

4676f799fdefd9d1a7292d654bfef12f5bbe7527

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

655646de4d146a368dc1127c8afe69d280b9a90f

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

ed280f2f5b70d6f4159b79b7baa39bd306ef3c2c

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

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

fd5cdea1642145fa308dc57c5fc273385af231d7

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


分享者简介:曹洪伟,全栈工匠一枚,现就职于和创(北京)科技股份有限公司。
目录
相关文章
|
3月前
|
人工智能 前端开发 程序员
程序员:全栈的痛你不知道
我这里说的全栈,不只是IT技术栈,还有更多的是产品运营思维。任何时候全栈人都应该用解决问题、推动事情往前发展的思维去做事。
|
4月前
|
前端开发 JavaScript 数据库
全栈开发者的成长之路:从基础到精通
【7月更文挑战第25天】全栈开发者的成长之路是一条既充满挑战又充满机遇的旅程。通过广泛积累基础知识、精进专业技能和积累实战经验,你可以逐步成长为一名优秀的全栈开发者。在这个过程中,保持对新技术的好奇心和学习热情是至关重要的。同时,也要注重团队合作和沟通能力的培养,因为在软件开发领域,一个人的力量是有限的,而团队的力量是无穷的。希望本文能为你的全栈开发之旅提供一些有益的启示和帮助。
|
6月前
|
SQL 分布式计算 算法
程序员必备的面试技巧——大数据工程师面试必备技能
程序员必备的面试技巧——大数据工程师面试必备技能
116 0
|
存储 架构师 安全
架构师成长之路(一)
架构师成长之路(一)
224 1
|
消息中间件 架构师 Java
华为资深架构师十年总结:进阶成为架构师需要掌握哪些技能?
当前你感到迷茫吗? 有很多人对现在的工作感到很没意思,因为当前的工作,完全是实现业务,技术上没有任何提高。在这种状态下就会感到迷茫,特别是一想到将来这种迷茫感就更强烈了。
204 0
|
设计模式 消息中间件 NoSQL
【架构师之路 七】一年期计划
【架构师之路 七】一年期计划
465 1
|
架构师 前端开发 云计算
【架构师之路 一】计划总纲篇
【架构师之路 一】计划总纲篇
565 1
|
移动开发 前端开发 Java
|
存储 缓存 JSON
面试分享:一年经验初探阿里巴巴前端社招
面试分享:一年经验初探阿里巴巴前端社招
714 0
|
SQL Kubernetes 架构师
像架构师一样选择技术
  如果您是软件架构师(或什至是解决方案或企业架构师),您会每天遇到一个需要解决的重要问题。选择和决定要在项目中使用哪些技术;无论是在您的公司环境,启动,个人项目还是其他方面。   在这篇文章中,我将探讨架构师在选择技术时应考虑和研究的几个关键方面。这绝不是建筑师需要考虑的要点的详尽列表。在这方面还有许多其他因素需要考虑。但是,我讨论的观点最突出。同样,这些事实并不是新事物,而是一些我们可能认为不够充分的已知事实。我非常高兴学习架构师在选择技术时必须而且必须考虑的其他重要方面。   如今,该技术正在快速变化,您可能不时听到新兴的JavaScript框架。在过去的十年中,该行业带来了新的趋势
237 0

相关实验场景

更多