架构师、准架构师们出来讲讲,如何从零搭建一个公司的应用架构

2019-05-28 09:24:17 +08:00
 daijinming

如何从零搭建一个公司的应用架构,最基本要使用哪些?很多时候都是在现有基础上扩充,当思考从零开始一个架构时,还确实没太大思路,请各位指教

5646 次点击
所在节点    程序员
33 条回复
tanrunhao
2019-05-28 14:09:23 +08:00
先把代码管理,搞定各种环境,版本发布流程。
小公司生产效率比起技术架构重要。
云产品的扩容性都很好, 最多引入消息队列平滑一些集中度高可异步的业务,基本是一个万能的起步架构。
yidinghe
2019-05-28 14:16:10 +08:00
这个问题太宽泛,日访问量十万的产品和日访问量十亿的产品所需要的架构师完全不是一个能力层级的。但总的来说,架构师肯定要熟悉各种解决方案,至少熟悉几种数据库,消息队列,缓存,微服务组件,搜索引擎,负载均衡,反向代理等等,需要的时候能挑选几种组合成解决方案。
whp1473
2019-05-28 14:16:54 +08:00
具体情况具体分析,不看公司规模和业务来就是耍流氓。
首先要看公司目的是什么?
如果工作定性为外包公司,那就搭建脚手架、代码生成平台、测试发布和运维平台、定制常用的类库和吸纳开源类库,做到快速开发和代码复用。
如果是某个公司的技术部门,不以技术为主要盈利人数较少,那我觉得不要分布式和微服务,建议全部上云减少运维成本,用 nignx 做软负载均衡即可。
如果是技术型初创公司,建议是用手底下最常用的技术先快速实现业务,然后做的大一些时在用也就 java 体系、GO 体系来重写业务框架。
至于使用分布式体系,以 java 为例,我觉得一般公司可以考虑下面的步骤:
(1)所有服务采用统一的技术体系,推荐 Springboot
(2)搭建统一的脚手架,可以参考开源的一些,包括不限于分布式框架选型(Dubbo、SpringCloud),分布式缓存选型(Redis)、日志处理和格式(采集建议 ELK)、消息中间件选型(Kafak、RokatMq)、分布式定时任务选型(ElasticJob)、统一的工具类库(cooms、guvua、fastjson 等)、Mybatis、代码生成器、Mybatis-plus、分页插件、统一异常定义和处理、统一的请求拦截器等。
(3)编码规范定义,可以参考阿里规范,但要考虑实用性,不可能每个人都强制遵守,那些是重要的,必须遵守,那些是可以适度放宽的。Maven、git 命名、打包、发布规范。
(4)建立自动化发布运维的框架比如 jenkins、ELK、钉钉邮件预警、网关(zuul 普罗米修斯)流量监控报警,以及 WIKI 和类似禅道之类的 BUG 管理平台
(5)这些算是通用的底子,然后要根据现有的业务进行拆分,比如微服务的话可以对业务拆分,比如用户平台、权限平台、商品平台、交易平台、风控平台等。微服务之上可以考虑增加业务聚合服务,直接对应部分前端。所有对外服务都应通过网关统一对外暴露,在网关层面考虑用普罗米修斯之类的对调用做监控。对于用户平台需要考虑统一的登录注册,可以考虑在网关层增加对调用的管理。交易平台可能跟风控相关,通过日志采集发往相关的处理系统再回写到相关表中,风控提供相关接口。比如商品可能需要检索系统,那可以考虑在基础之上增加 ElasticSearch 对商品信息进行检索。比如活动平台可以考虑增加规则引擎,高度自定义规则,将规则配置移交给运营人员,减少重复开发。根据公司业务拆分成不同的小平台和业务,再根据其特点选择技术。
(6)原则上有开源的系统,就学习并使用开源产品,这样减少开发时间,但随着业务发展开源产品不能满足时,可以根据自身特点开发自己的产品,比如业界的工作流可能不能满足公司的需求,公司可以自己开发一套基于 XX 上的改进版本。就类似与 Dubbo->Dubbox,甚至开源出来回馈社区

最后技术只是为业务服务的,任何公司都是依靠业务发展的,追求优秀的技术是正确,但要一定要考虑公司自身的情况和寻找合适的时间>_<
jimrok
2019-05-28 14:17:31 +08:00
考虑资金,团队,业务循序渐进,留有余地。
janxin
2019-05-28 14:27:40 +08:00
@daijinming 当然是最好的结果,但是你忽略了中间的过程
index90
2019-05-28 15:33:01 +08:00
三五个开发,先关注业务吧,活不下来也没法谈什么高大上的架构了。
选个 PaaS 平台,LBS,NameService,RDS 什么都有了,专心开发产品好了。

我觉得,不一定是高大上的技术才能凸显架构师的价值的,架构师还有一个很重要的工作,但很多时候被忽略的,就是如何合理地把现实的业务场景,转化为数据模型,以便能用有效的技术手段去实现。
Takamine
2019-05-28 15:43:57 +08:00
我觉得楼上说得对,资金,人力和当前业务才是基本,实际一点就是要先看老板的决心,想太多搞不好是自作多情。
daijinming
2019-05-28 16:02:41 +08:00
@index90 对与 PAAS 我也是很赞成,我个人都是在新浪云搭建些小的应用,非常使用并且免运维,不用但是那天服务器趴了。可以公司的客户很多是内网部署,人家给你几台服务器(虚拟的),自己需要维护这些服务器。这种情况下可以部署 PAAS 吗
artandlol
2019-05-28 16:37:01 +08:00
artandlol
2019-05-28 16:37:40 +08:00
micean
2019-05-28 18:59:38 +08:00
主要看干活的人有多少……
dddd1919
2019-05-28 19:02:52 +08:00
rails new my_app


好了
kangzai50136
2019-05-28 19:35:36 +08:00
@whp1473 大神厉害。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/568234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX