软件架构师到底做什么?

banq


简单介绍一下背景,

由于我有基础设施、云和安全架构背景,我一直像躲避瘟疫一样避免任何“开发”的东西 100% 是出于无知,而且我根本不懂编码和软件开发(我猜这是其中相当大的一部分)。

我想,至少对软件架构所涉及的内容以及它如何融入企业技术和服务的更大方案有一个基本的了解并不是一个坏主意。

我并不希望成为专家,甚至也不想将自己的职业与此挂钩,但至少希望能参与更多的对话,而不会感觉自己像个傻瓜。

我现在并且将继续自己研究这个问题,但我总是发现直接从当事人口中听到信息很有价值。

正如标题所说...

作为软件架构师,您实际上做什么?

另外,我想问一下,软件架构师的典型职业道路是什么样的?我很想知道如何将其与网络安全或云架构师的职业发展进行比较。

Reddit网友:
1、设计系统架构。确保有一个计划来帮助每个人理解和实施架构。为新架构创建迁移计划,确保计划符合目标。
设计架构并不容易。如果开发人员想做什么就做什么,而没有人监督和设计整个系统,那么很快就会陷入一片混乱。
大多数开发人员只关心其应用程序的业务和代码,而不会停下来考虑更广泛的后果。

2、规划、估算、文档、扩展、实施、管理

3、大型软件系统由部署在各种计算机上的组件组成,这些组件通过以规定的方式相互共享信息并与外界共享信息,从而协作解决实际问题。一个简单的例子可能是在线商店,它在一个或多个服务器上运行的数据库中维护有关库存、客户和销售记录的信息;一些应用服务器维护购物车,向仓库、供应商和托运人发送有关已完成订单的信息,计算折扣等;以及一些 UI 服务器托管 Web 用户界面。

架构师负责决定使用哪种数据库;如何构建应用服务器(例如,一个完成所有工作的大程序,一堆完成不同部分工作的小程序);是否部署在 AWS、Azure 还是其他地方;通信规则(例如,使用 http 请求或其他消息传递协议);以及如何设计和实施单个程序以保持一致性的高级规则(例如,语言、库等)。随着开发的进行,他们确保开发人员遵守规则,并随着开发的进行做出重大决策。

架构师的正常职业道路是从程序员开始,然后通过设计越来越大、越来越复杂的组件而晋升。随着设计和架构职责的增加,可用于编写代码的时间越来越少,大多数架构师将大部分时间花在与人会面、编写文档和审阅其他人编写的文档上。我不信任从不编写代码、也不知道如何构建、部署和运行他们负责的软件的架构师。但在最有趣的情况下,他们不再是最专业的程序员,他们也不比编写组件的人更了解组件的细节。

4、我作为架构师,提醒人们系统 X 在这里,系统 Y 在那里,他们可以为我们完成 ABC。我引导人们走上解决问题的道路,并帮助选择工具集,例如建议我们选择具有 dockerized 构建和 GitHub 操作管道的 Azure 应用服务。我帮助工程师实施代码库或服务器,从习语/实践或包结构开始,并帮助工程师做出关键或阻碍编码的决策。

我帮助命名软件问题的大背景,例如版本控制 API、回滚策略或团队间开发。

这是一份有意义的工作,在我的生活中少写代码感觉很好。

一个好的架构师是可以忽略其他问题(政治、交付经理、截止日期等)并专注于解决方案或技术模型的人。

说一个好的架构师可以忽略截止日期可能听起来有争议,但我并不是说他们不会做出时间紧迫的决定,只是他们的注意力沉浸在技术中。PS 我介绍自己和我的角色是“工程架构师”,也称为“动手架构师”。

5、云架构师实际上与软件架构师非常相似,而云工程师更类似于开发人员。
作为 CA,您可能正在绘制大规模图表并对云提供商的所有功能有粗略的了解,而 CE 将执行设计,但通常对您选择使用的特定设备有更深入的了解。
SA 的工作方式相同,但适用于组件、库和模块。

6、和建筑设计师一样。与客户争论说某事是不可能的,然后与建筑商争论说某事是可能的。