像架构师一样选择技术

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

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

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

目录
相关文章
|
17天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
25天前
|
运维 持续交付 API
从零构建微服务架构:一次深度技术探索之旅####
【10月更文挑战第28天】 本文记录了作者在从零开始构建微服务架构过程中的深刻技术感悟,通过实战案例详细剖析了微服务设计、开发、部署及运维中的关键要点与挑战。文章首先概述了微服务架构的核心理念及其对企业IT架构转型的重要性,随后深入探讨了服务拆分策略、API网关选型、服务间通信协议选择、容器化部署(Docker+Kubernetes)、以及持续集成/持续部署(CI/CD)流程的设计与优化。最后,分享了在高并发场景下的性能调优经验与故障排查心得,旨在为读者提供一套可借鉴的微服务架构实施路径。 ####
57 3
|
2月前
|
边缘计算 Cloud Native 安全
构建灵活高效的下一代应用架构 随着企业数字化转型的加速,云原生技术正逐渐成为构建现代化应用程序的关键支柱。
随着企业数字化转型加速,云原生技术逐渐成为构建现代化应用的关键。本文探讨了云原生的核心概念(如容器化、微服务、DevOps)、主要应用场景(如金融、电商、IoT)及未来发展趋势(如无服务器计算、边缘计算、多云架构),并分析了面临的挑战,如架构复杂性和安全问题。云原生技术为企业提供了更灵活、高效的应用架构,助力数字化转型。
70 4
|
15天前
|
存储 分布式计算 关系型数据库
架构/技术框架调研
本文介绍了微服务间事务处理、调用、大数据处理、分库分表、大文本存储及数据缓存的最优解决方案。重点讨论了Seata、Dubbo、Hadoop生态系统、MyCat、ShardingSphere、对象存储服务和Redis等技术,提供了详细的原理、应用场景和优缺点分析。
|
2月前
|
Cloud Native 持续交付 开发者
探索云原生技术:构建高效、灵活的应用架构
【10月更文挑战第6天】 在当今数字化浪潮中,企业面临着日益复杂的业务需求和快速变化的市场环境。为了保持竞争力,他们需要构建高效、灵活且可扩展的应用程序架构。本文将探讨云原生技术如何帮助企业实现这一目标,并分析其核心概念与优势。通过深入剖析云原生技术的各个方面,我们将揭示其在现代应用开发和部署中的重要性,并提供一些实用的建议和最佳实践。
56 2
|
2月前
|
缓存 Java 数据库
后端技术探索:从基础架构到高效开发的实践之路
【10月更文挑战第7天】 在现代软件开发中,后端技术是支撑应用运行的核心。本文将探讨如何从后端的基础架构出发,通过一系列高效的开发实践,提升系统的性能与可靠性。我们将深入分析后端框架的选择、数据库设计、接口开发等关键领域,并提供实用的代码示例和优化策略,帮助开发者构建更稳定、高效的后端系统。通过这篇文章,读者将获得关于后端开发的全面理解和实践指导,从而更好地应对复杂项目需求。
71 0
|
17天前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
42 7
|
15天前
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
66 4
|
2月前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
16天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
31 3