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

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

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

5623 次点击
所在节点    程序员
33 条回复
janxin
2019-05-28 09:29:34 +08:00
就你现在有什么,你到新公司就应该有什么
yalin
2019-05-28 09:31:13 +08:00
我不是一个准架构师,我只是一个程序员。不过,我可以提供一下我学习基础架构的知识从极客时间的几个专栏学习来的:
李运华《从 0 开始学架构》,杨波《微服务架构核心 20 讲》,杨波《微服务架构实战 160 讲》,胡忠想《从 0 开始学微服务》。
或许,你可以了解了解这些专栏的基础架构知识。
1800x
2019-05-28 09:32:31 +08:00
多看看架构设计的文章,看看别人怎么做的,自己依样画葫芦
Eugene1024
2019-05-28 09:36:35 +08:00
没有思路就多看看别人如何搭建的
Luckyray
2019-05-28 09:37:20 +08:00
这玩意说清楚就是一本书...你在这简单问问不是白问么
daijinming
2019-05-28 09:46:12 +08:00
@Luckyray 大道至简,真正落地的架构在架构师眼中不应该是复杂的,并且是可以传达给他人的,我是这么觉得的
daijinming
2019-05-28 09:49:45 +08:00
我有这么一个设想,没有架构才是最好的架构,就好似在新浪云上搭建应用,无需考虑数据库、缓存,直接在代码中调用就好,如果还有网关,前后台能轻松集成和通信,岂不是最好的结果
lijingyu68
2019-05-28 09:54:18 +08:00
不知道你说的架构是脚手架还是软件架构。。。从你的语言看,感觉更像是脚手架,脚手架的话,跟着各种工具的官方文档做就可以了。软件架构了话,看 领域驱动设计。
scnace
2019-05-28 09:56:37 +08:00
@daijinming 你这是在业务开发眼中看 infrastructure as sdk 出发点往往是美好的 XD
daijinming
2019-05-28 09:59:21 +08:00
@lijingyu68 我说的是在没有确定领域的一个架子,不包括具体业务,但是基本的登录验证、菜单导航都有的
zsc8917zsc
2019-05-28 10:01:59 +08:00
看 ABP 框架吧
index90
2019-05-28 10:08:54 +08:00
软件架构:先根据手上的人力资源和计算资源的类型选择好技术栈吧,然后用现成的或者自己搞一个研发脚手架。
应用架构:无非选择巨石架构,微服务架构,ServiceMesh,更新一点的就是 Service less 了吧。也是根据目前手头上的计算资源和人力资源来选择。如果你的 IT 运维组能力较弱,例如只是虚拟机运维层面的,用巨石架构,扩展的时候用虚拟机复制。总的来说好像还是要根据手头上的人力资源来做决定。当然,良好的软件架构设计,可以方便你日后从巨石架构到微服务架构,或者到 ServiceMesh 的进化。
业务架构:这需要你十分了解你公司的业务了,多跟业务部门去沟通,业务架构没有标准答案的,都是随着业务发展而演变的。业务架构是为了业务部门服务的,方法论例如 DDD (领域驱动设计),这部分我没啥经验,就不多说了。
daijinming
2019-05-28 10:26:59 +08:00
@index90 非常有条理化的分析,感谢。之前在小规模测试过微服务架构,感觉确实太繁琐,据网上说 ServiceMesh 也正是微服务架构后提出的思路,应该是对微服务的修正,这方面不知道有没有落地的方案,方便在三五技术开发力量的团队中执行起来
index90
2019-05-28 11:26:56 +08:00
@daijinming 个人对 ServiceMesh 的理解,关键的组件是 sidecar,类似一个上网代理,挟持主机上所有的应用的网络请求,然后通过通过服务路由,发送到其他节点的 sidecar 上,最后由 sidecar 把请求发送到对应的应用上。可以想象一下,不管节点上有没有部署应用,每个节点上的 sidecar 都相互连接,组成一个服务网络。
ServiceMesh 的设计目的就是把服务路由,服务发现,流量控制等本来需要研发实现的东西,下沉作为基础设施来提供。研发应用的时候,就如使用 TCP/IP,DNS 等基础设施一样。
方案搜搜有很多,不过我没有落地的经验。以我目前的了解,现成的非侵入式方案有个比较大的问题,由于 sidecar 是一个代理,应用的请求数据包会经过两次 TCP 堆栈,会造成性能损耗和资源浪费。所以目前我都是在优化微服务研发框架上,把服务发现,服务路由等能力集成到研发框架里面(也就是侵入式)。Java 的如 Spring Cloud,Go 的如 go-micro
mf2019d
2019-05-28 11:37:40 +08:00
大处着眼 小处着手
opengps
2019-05-28 12:02:32 +08:00
想的有点多,等你遇到用户量增长就明白架构的意义所在了。现在空谈很难理解为什么要多做那么些工作
abmin521
2019-05-28 12:11:39 +08:00
@index90 说的挺好
怼一下 等你的代码能先榨干网络的瓶颈再说
snappyone
2019-05-28 12:13:56 +08:00
@daijinming 三五个开发力量就不要搞微服务这些了,得不偿失
visonme
2019-05-28 12:17:55 +08:00
对“架构”两字不知道怎么理解比较好~

一般我们都是从业务出发,先明确有哪些业务,每个业务需要那些单元,然后基于这些作分析最后明确一套技术方案跟应用框架~

不知道这算不算架构
daijinming
2019-05-28 12:53:29 +08:00
@visonme 蒜滴

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

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

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

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

© 2021 V2EX