像架构师一样选择技术

简介:   如果您是软件架构师(或什至是解决方案或企业架构师),您会每天遇到一个需要解决的重要问题。选择和决定要在项目中使用哪些技术;无论是在您的公司环境,启动,个人项目还是其他方面。  在这篇文章中,我将探讨架构师在选择技术时应考虑和研究的几个关键方面。这绝不是建筑师需要考虑的要点的详尽列表。在这方面还有许多其他因素需要考虑。但是,我讨论的观点最突出。同样,这些事实并不是新事物,而是一些我们可能认为不够充分的已知事实。我非常高兴学习架构师在选择技术时必须而且必须考虑的其他重要方面。  如今,该技术正在快速变化,您可能不时听到新兴的JavaScript框架。在过去的十年中,该行业带来了新的趋势

  如果您是软件架构师(或什至是解决方案或企业架构师),您会每天遇到一个需要解决的重要问题。选择和决定要在项目中使用哪些技术;无论是在您的公司环境,启动,个人项目还是其他方面。

  在这篇文章中,我将探讨架构师在选择技术时应考虑和研究的几个关键方面。这绝不是建筑师需要考虑的要点的详尽列表。在这方面还有许多其他因素需要考虑。但是,我讨论的观点最突出。同样,这些事实并不是新事物,而是一些我们可能认为不够充分的已知事实。我非常高兴学习架构师在选择技术时必须而且必须考虑的其他重要方面。

  如今,该技术正在快速变化,您可能不时听到新兴的JavaScript框架。在过去的十年中,该行业带来了新的趋势,参考架构,编程语言,DevOps工具等等。一些已有十年历史的技术仍在发展。选择无数。建筑师必须每天做出决定。

  您还将遇到各种主题的斗争;Angular或React,开源或专有的,基于配置的代码或基于代码的配置,云,本地或混合,容器或裸机,SQL或NoSQL等。因此,当建筑师选择一种技术时,无论是库,框架,编程语言还是供应商产品,如今都没有被认为是一件容易的事。我应该提供新的供应商产品吗?我是否应该只使用那种编程语言的流行Web框架来构建Web应用程序?这是否应该是云解决方案等?今天,架构师必须出于充分的理由回答这类问题吗?

  如果组织内的架构师无法达成共识,企业通常会聘请顾问架构师做出公正的决定。大型企业将有许多架构师,负责业务,产品或项目乃至整个领域的技术架构。通常,做出影响多个团队的决定并不容易。是的,如果您相信我,它可能会变得如此政治化,特别是在选择供应商产品时。在这种情况下,企业甚至要求架构师发布RFP,以使供应商做出回应并仔细审查整个选择过程,其中该过程将涉及多个提供技术选择要点的实体。

  因此,架构师应该对为什么要做出某些决定以及为什么这样做会对手头的工作有所帮助有一个据点。以下几点是需要考虑的一些高级方面。

  需求

  首先,有必要。如果架构师试图选择一种技术,仅遵循趋势,那么他/他可能会带来很多麻烦。您有多少次看到人们想探索这种炫酷的技术,因为他们偶然发现了这种技术,并想将其突然纳入公司发展的各个方面?如果企业出于战略原因而具有技术远景,那绝对是很好的。然后,建筑师将获得所有的绿灯。

  例如,如果企业架构师认为容器和编排工具已成为未来的一切,并尝试引入docker和Kubernetes,那么我敢肯定您会认为这是不明智的,除非他们有明确的需求。公司考虑长远并且有远见。如果他们的目标之一是适应不断变化的数字需求,可伸缩性,所有服务和应用程序的高可用性,并具有使其能够为使用的商品付费的弹性,那么,现在该考虑这种技术了。因此,请记住需要。

  另一个示例是为了进行更改而试图在高效的平台中进行更改。例如,某公司的应用程序可能具有分层体系结构,并且在ROI上显示出了出色的结果,然后架构师试图引入诸如微服务体系结构之类的新体系结构是不明智的。首先评估需求。

  这并不是说,架构师不应尝试带来变化。如果改变是不可避免的,那么他/他应该坚持下去。否则,创建需求。

  成本

  我不想再强调这一点。每个人都了解金钱方面的细节。这是一种不需要进一步强调的语言。但是,如果我们不能自掏腰包,事情可能会有些松懈。是不是

  在企业范围内,预算至关重要。作为一名架构师,要求您评估公司领域中所有应用程序的监视产品。您需要记住为此设置的预算。建筑师在看完分析师的报告后可能会选择这种精美的软件,只是发现它每年花费50万美元,而设定的预算仅为几千美元。

  因此,在进行进一步分析之前先了解成本的影响,即可过滤出无论多么酷的软件几乎都无法进入公司的软件。这可能会导致架构师查看其他选项,甚至评估现有选项并查看其是否可以增强。

  开源或专有

  在过去的一两个十年中,OSS变得非常流行,甚至那些反对它的公司也开始拥抱它。但是,并非所有软件都是开源的。如今,由于开放软件的特性和查看驱动其应用程序的代码的能力,如今一些企业只看开源软件。万一绝对需要,他们有地方可以看看,而不是面对供应商的锁定。

  公司的历史也可能促使架构师仅选择专有软件。原因可能是多种多样的,政治上的或历史上的锁定。但是我敢肯定,您可能会遇到X-Shop,Y-Shop等公司。根据需要填写X,Y。在涉及供应商技术时尤其如此。即使不是其他类型的软件(例如库,框架,DevOps工具和编程语言)通常也不关心的问题,但某些公司可能也容易受到此影响。

  无论如何,记下管理层可能会接受的一个。如果他们乐于接受任何事物,那么您也可以继续考虑其他因素,寻找适合您的事物。

  许可证

  许可证是选择技术时要考虑的重要事实。这对于库和框架来说甚至很重要。假设您的团队正在开发一款封闭源代码的商业软件,但愿意使用开放源代码库或框架。架构师在选择具有正确许可证的软件时需要谨慎。法律建议是必须的。一些开源软件许可证要求衍生软件也必须是开源的。有这样的后果要考虑。

  甚至开源供应商软件也具有不同类型的许可证。一些开源软件允许您出于任何目的运行。但是下载的打包软件可能会有限制。如果您只想在无须付费许可的情况下使用开放源代码,则源唯一版本可能是您唯一的选择。一些软件许可证要求派生的软件源也必须是开源的,有时还要求在同一许可证下发布软件。

  即使您愿意付费,要么是因为该软件是专有软件,要么是OSS需要一些商业支持约束力,因此,重要的是要获得许可并与供应商的联系点联系以了解更多信息。有些软件有音量限制,有些条款要求您在停止OSS付费许可证的情况下删除更新,有些则要求您完全拔掉插头。

  成熟度

  除非您进行实验,否则您可能不想仅仅因为选择了一个不成熟的产品,库或框架,就面临着前所未有的问题而花了六个月的时间。

  如果您为一项关键任务项目选择一种技术,那么一个重要方面就是要知道您正在评估的技术有多成熟。可以使用几年的发展,几个发行版(而不是版本号),具有可靠案例研究的客户群以及许多其他因素来评估成熟度。

  评估技术的一种关键方法是,您的团队要进行概念验证(PoC),而不是供应商的团队或提供商业支持的任何人。当然,如果需要,您可以得到他们的帮助,以更好地理解。大多数情况下,这应该为您提供足够的线索,说明该技术可以满足您的需求。

  文献资料

  文档是当今软件的重要组成部分。好的技术将成为具有更多细节和信息的伟大技术。文档绝对是其中之一。

  检查所选技术文档的难易程度。一些库,框架很棒,但是它们缺少妨碍其使用的文档。它要求您的团队在进行任何有用的操作之前都要过山车。架构师应该考虑开发人员以及古玩交易外行人员如何轻松通过它并加快速度。超级明星开发人员会向建筑师推荐技术,而他们可能有机会在几个月甚至几年的时间里以不同的视角来研究技术。本身不应该盲目地接受这种技术,而这会使整个团队处于旋风之中。

  清晰,简洁的文档着重于正确的用户,这一点很重要。如果是库,框架,DevOps工具之类的技术,则目标受众是开发人员或DevOps。如果打算供非技术人员使用,请查看产品的用户友好程度,以及在不了解产品技术复杂性的情况下如何轻松找到有关产品使用的信息。不存在,请寻找其他选项。

  团队专业知识和社区

  我们都知道众包的力量。有很多人尝试技术,谈论技术,报告和解决问题都具有很大的吸引力。它暗示了很多人对该技术感兴趣,这应该是由于一些良好的原因。相信社区纽带并不坏。但是请记住第一点,极品。如果您有需要,并且有一个健康的社区,那么您会取得很大的领先。

  但是,社区是技术的重要事实。该技术是开源还是专有社区驱动力。

  与社区一起出现的另一个事实是团队的专业知识。社区将为建立团队专业知识提供巨大的投入。如果架构师试图推荐一种似乎没有强大社区的技术,那么他/他可能会使整个项目/产品处于危险之中。如今,开发人员喜欢学习他们认为会获得更好认可的新技术,因此,如果他们碰巧再次进入就业市场,他们会获得更多机会。如果引入市场上没有需求的技术,开发人员将表现出他们的阻力,最终将在解决方案中显示出结果。这当然与团队正在尝试做的成功有关。

  因此,取得平衡。了解这一事实是一门艺术,而不是一门科学。

  牵引力和路线图

  除非您没有其他选择,否则您将不想使用已死或垂死的项目/产品来构建解决方案。知道技术的发展方向对关键的企业规模项目至关重要。作为建筑师,选择技术时不能忽略这方面。

  对于开源的库和框架,您可以查看提交历史记录以及将来期望的功能。即使对于开源产品,您也可以通过查看发行历史记录,发行说明和更新周期来了解其发展趋势,从而确定其发展方向。

  对于供应商产品,您可以随时联系供应商团队以了解产品路线图。建筑师通常需要考虑使用寿命至少为5年的产品,以对其进行有意义的处理。实际的年数根据您要建造的房屋而有所不同。

  支持与服务

  对于库,框架和编程语言,这可能并不那么关键。一些框架和库由可能也提供支持和服务的公司支持。但是对于企业级供应商产品,架构师不能忽略这一事实,他们需要了解支持和专业服务选项。通常,当公司选择付费支持许可证,订阅或他们可能称呼的任何形式时,供应商就会提供支持。

  即使团队具有强大的开发背景,架构师也不应该忽略专业服务。选择新产品后,团队需要在某些领域提供专业服务,这是因为眼前的问题需要您自己解决,或者需要花费大量精力才能使其正确解决。无论是什么原因,企业架构师都应该意识到这些选择。

  一些供应商拥有强大的合作伙伴渠道和完善的SI(系统集成商)系统,可以帮助您实现这一目标。因此,还应考虑供应商的渠道实力。

  TL; DR

  如今,架构师在选择分配给他们要解决的问题的技术时,不断需要做出重要的决定。在当今的数字世界中,有很多选择,选择技术本身通常是一个漫长而乏味的过程。

  架构师在选择技术时应注意很多方面。该帖子讨论了一些关键点。我敢肯定,在做出决定之前,架构师可以考虑更多方面。

目录
相关文章
|
28天前
|
Kubernetes 持续交付 开发者
探索后端技术的未来:微服务架构与容器化部署的融合
在数字化时代的浪潮中,后端技术正经历着前所未有的变革。本文将深入探讨微服务架构和容器化部署如何共同推动后端技术的发展,提升应用的性能、可扩展性和可靠性。通过分析现代软件开发的需求,我们将揭示这两种技术如何互补,以及它们在未来后端开发中的潜力和挑战。
|
7天前
|
设计模式 架构师 数据建模
架构师必备底层逻辑:设计与建模的技术深度探索
【8月更文挑战第13天】在软件开发的浩瀚星海中,架构师如同星辰指引,他们不仅规划着系统的蓝图,更在底层逻辑上精雕细琢,确保系统的稳健与高效。其中,“设计与建模”作为架构师的核心能力之一,是连接业务需求与技术实现的桥梁。本文将深入探讨架构师在设计与建模过程中的关键思维与实践方法,为工作学习中的技术同仁提供一份宝贵的干货分享。
23 3
|
16天前
|
Kubernetes 监控 开发者
探索后端开发的新境界:微服务架构与容器化技术
在数字化时代的浪潮中,后端开发不断演进,涌现出创新的架构与技术。本文深入探讨了微服务架构和容器化技术如何重塑后端开发,提升系统的可维护性、可扩展性和部署效率。通过实际案例分析,我们揭示了这些技术背后的原理,并提供了实施的最佳实践和面临的挑战,为后端开发者提供一条清晰的技术升级路径。
41 3
|
15天前
|
运维 开发者 Docker
深度探索微服务架构中的容器化技术
在现代软件开发中,微服务架构因其模块化和可扩展性而广受欢迎。而容器化技术,尤其是Docker,成为了支持微服务架构的核心工具。本文将探讨容器化在微服务架构中的作用,包括其如何提升开发效率、简化部署过程以及解决传统方法中的问题。通过具体实例和最佳实践的分析,读者将了解如何有效利用容器化技术来优化微服务架构。
|
17天前
|
存储 监控 负载均衡
微服务架构中的服务治理与监控技术
【8月更文挑战第3天】微服务架构中的服务治理与监控是确保系统稳定、高效运行的重要手段。通过构建注册中心实现服务的自动注册和发现,通过部署监控工具实现对服务的全面监控,可以有效地提高系统的可靠性和可用性。未来,随着技术的不断发展,服务治理与监控技术也将不断完善和优化,为微服务架构的广泛应用提供更加坚实的支撑。
|
18天前
|
XML 分布式数据库 数据库
【计算机三级数据库技术】第13章 大规模数据库架构--附思维导图
文章概述了分布式数据库、并行数据库、云计算数据库架构和XML数据库的基本概念、目标、体系结构以及与传统数据库的比较,旨在提供对这些数据库技术的全面理解。
17 1
|
19天前
|
Cloud Native Devops 持续交付
探索云原生架构:未来企业技术演进的必由之路
随着数字化转型的浪潮席卷全球,企业正逐步将目光转向云原生架构,以期实现更高效、灵活且可扩展的IT服务。本文深入探讨了云原生的核心概念,包括容器化、微服务、持续集成与持续部署等,并阐述了这些技术如何共同促进现代企业的快速发展。同时,通过分析具体案例,展示了云原生在实际应用中带来的效益,以及企业在采纳云原生路径时可能面临的挑战和解决策略。
|
19天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:Kubernetes在微服务架构中的应用Python编程之旅:从基础到进阶
【7月更文挑战第31天】随着云计算技术的迅猛发展,云原生概念应运而生,它代表了一种构建和运行应用程序的全新方式。本文将通过实际代码示例,深入探讨Kubernetes这一云原生关键技术如何在微服务架构中发挥其强大的作用。我们将从容器化开始,逐步过渡到Kubernetes集群的搭建与管理,最后展示如何部署和管理一个微服务应用。
32 2
|
4天前
|
Cloud Native 安全 云计算
云原生技术的未来:探索服务网格和无服务器架构
随着企业数字化转型的深入,云计算已成为推动业务创新的核心力量。本文将深入探讨云原生技术的最新发展趋势,重点分析服务网格和无服务器架构如何重塑云计算的未来。通过实际案例和技术解析,揭示这些前沿技术如何解决现代应用部署的复杂性,提高系统的可伸缩性和弹性。文章旨在为读者提供云原生领域的深度见解,并激发对云技术未来发展的思考。
18 0
|
28天前
|
Kubernetes 搜索推荐 开发者
探索后端开发的未来之路:微服务架构与容器化技术
随着云计算技术的不断成熟和普及,后端开发领域正经历着前所未有的变革。本文将深入探讨微服务架构和容器化技术如何重塑后端开发的面貌,提升系统的可扩展性、灵活性和可靠性。通过分析现代后端系统面临的挑战,我们将展示微服务和容器化如何提供解决方案,并预测这些技术如何塑造后端开发的未来发展。
46 3