为什么软件开发公司在项目开发中要考虑系统的可扩展性的?
从历史上看,梳理其软件项目的所有开发细节过度的。由于软件开发人员对可变技术和系统需求的复杂解释,软件开发公司认为这一过程非常乏味。因此,在系统可扩展性方面,企业代表希望与软件开发人员进行一般业务需求讨论,同时不讨论所有的技术上的细节。如果企业主开始使用开发人员的语言,系统的质量会倍增。特别是,这将有助于避免许多问题,而开发人员创建复杂的基于服务器的解决方案。
软件开发
企业如何与软件开发人员保持密切联系,了解系统可扩展性的细节?
让我们考虑一个开发新系统的项目开始的情况。我们设计了5个问题,有助于简化谈判并将其引导到正确的轨道上。
5个主要系统的可扩展性问题,从我们的经验来看,开发人员在谈论系统可扩展性时通常会提出5个主要问题:
1.做企业了解计划的系统的特点是什么?
2.系统用户的典型操作是什么?
3.系统是否有什么瓶颈?系统的哪一部分负载较重?
4.系统更重要的是:容错还是高性能?
5.可扩展性的需求在哪里出现?
我们想仔细看看五个问题中的每一个,并找出业务代表综合答案的好处。
业务是否了解计划系统的功能?
幕后:
可扩展性是系统通过升级现有硬件或添加额外的新资源来应对日益增长的负载的能力。系统必须保持适当的架构以允许后者。换句话说,当后端开发人员开始系统开发时,他们需要了解是否有可能将来扩展系统,这意味着其操作功能的增加。因此,他们需要知道企业主对系统特征和进一步发展的计划。例:
让我们想象一下,购买机票的在线服务的所有者会制定计划的网站流量的时间表。时间表可以是一天,一周,一个月,四分之一或一年。它可以覆盖用户和用户活动的类型,作为系统回答所需的时间。使用这个计划,开发人员可以揭示网站上的负载变得更加密集的时代。例如,它可能会更接近一个周末。此外,业务代表可以在时间表中包括峰值负荷的点,如假期,学校假期和促销活动。
架构中的峰值负载不应影响系统的性能,所以重要的是规划它们。较好的方法之一是系统负载的图形显示。
小贴士:
制定明确的项目目标,制定预测网站流量的计划或图表。还要指出时间间隔。开发人员询问有关系统能力的问题,而不是因为它们只是好奇。他们必须预见服务器增长的机会。如果一个企业计划赢得世界,那就有必要明确说明目标。假设当10,000位独特访问者访问了一个平均每天300名用户的网站时,系统必须生存下去。
系统用户的典型动作是什么?
幕后:
预测典型的操作允许开发人员分析系统上的负载。这也是一个机会,看看系统用户是否会上传大文件,或者需要实时聊天支持和其他功能。Web服务器之间的功能如何传播取决于用户操作的典型流程。
例:
我们可以参考推出移动应用的例子。用于安排会议的基于网络的移动应用程序包括上传照片的选项。开发人员使用中型用户照片加载测试。然而,只要应用程序启动,用户开始以原始大小上传图片。当用户和图片的数量超过了Web服务器的数据存储和处理能力时,系统无法承受负载并开始崩溃。
小贴士:
如果您想防止系统不稳定的不利影响,请详细描述典型操作的场景。特别要考虑两点:
您希望用户如何与系统进行交互
它将如何实现
系统有什么瓶颈?系统的哪一部分负载较重?
幕后:
任何复杂的信息系统都可能包含至少两个瓶颈。瓶颈是一个压力点,在特定时刻经历系统中较高的负载。当开发人员知道系统中可能存在的瓶颈时,如果服务器崩溃,他/她可以调整系统的工作。这有助于避免高峰负载时潜在用户的损失。
找到瓶颈的问题与系统可扩展性无关。不过,较好不要忘记。如果一个开发人员没有定义瓶颈在哪里,那么它可以在任何可扩展性方面取得进展。即使在系统可扩展性方面一切顺利,有必要分析架构,以防止出现瓶颈
例:
入口点可能是瓶颈。例如,如果大量用户同时打开网站,则无法承受高负载,没有人继续使用该网站。
信息系统的瓶颈
另一个瓶颈示例是通道宽度不足。想象一下,照片存储中的照片之一迅速普及。数以千计的用户打开这个流行的照片,但是Web服务器的容量不是为了这个数量。因此,上传的照片停滞并对用户产生负面影响。
小贴士:
只有有目的的测试可以详细解答瓶颈在哪里的问题。然而,这并不意味着不可能评估潜在的瓶颈。
列出系统的基本部分。根据您的经验,突出显示较脆弱的地方。
与开发团队讨论清单。技术人员的经验很有可能帮助您提供新的想法。
对系统更重要的是:
容错还是高性能?
幕后:
不同系统需要不同的方法。开发人员需要知道主要任务是:容错或高性能,或者两者都是必需的。容错问题非常严重,没有一个独特的解决方案。它涉及系统在服务器遭受故障时每次响应的能力。换句话说,用户没有达到理想的结果。例如,他或她不能访问网站的其他页面或通过应用程序支付服务费用。如果不清楚发生了什么,用户将很可能拒绝再次使用该服务。为了避免用户丢失,较好保护系统。例如,如果网站没有对用户请求做出反应或会话被中断,那么可能会向用户发送有关该事件的简要信息的消息以及有关该做什么的一些建议。高性能涉及系统承受数千用户并同时显示良好响应时间的能力。换句话说,系统速度很重要。如果用户花费大量时间填写表单,并且每次等待页面加载缓慢,都会对其对公司的态度产生负面影响。
例:
我们假设一家银行经营者为接收贷款而运行客户查询,并填写系统中的数据。会话崩溃,系统同时停止对操作员的应答。数据丢失,操作员没有其他方式访问系统。因此,操作员要求客户等待系统恢复或第二天回来。客户花了很多时间,现在对这种情况不满意。这意味着系统中出现故障。而客户忠诚度取决于系统对类似故障的抵制。
容错
如果预见到容错,可以以不同的方式解决可能故障的问题。例如,数据可以保存在系统的重复服务器上。然后银行操作员可以简单地连接到备份服务器并继续工作。另一种方式是数据未被保存,但是有机会开始一个新的会话。因此,银行经营者提供客户再次填写信息。这些情况有数十亿种解决方案。确定会话期间的数据丢失是重要的还是系统需要哪些任务要容易得多。
小贴士:
确定什么问题更重要,因为它有助于开发人员事先知道应该首先考虑什么。当开发人员明确目的时,他们可以列出客户的建议。
可扩展性的需求在哪里出现?
幕后:
企业主希望开发人员能够很好地了解他们的业务利基,从一开始就明白他们的信息系统是否需要可扩展性。通常这些期望是假的。实际上,开发人员将重点放在软件项目的具体目标上。他们想定义出现系统可扩展性需求的位置。它可以是大量的数据,应该在某个地方进行保存和处理,或者在特定时刻需要的复杂计算过程和多阶段操作。
例:
假设社交网络计划增加用户数量,并开始在互联网上进行营销活动。社交网络代表看到,他们需要考虑到同时访问网络的次数,并在活动期间增加了负载。访客数量的大幅增加可能会影响系统性能。当需求的来源变得清晰时,开发人员可以转向具体任务的解决方案。
小贴士:回答当前软件项目中系统可扩展性的含义是什么?区分意义:
基地有10,000名用户,您需要扩展服务器的数据存储能力
大约10,000名用户同时访问您的网站,服务器需要扩展信息资源
需要可扩展性
您可以根据您的答案选择哪种方法更适合系统集群。换句话说,软件开发人员可以根据业务需要在不同的服务器之间分配负载。系统可扩展性是业务增长时增加负载问题的必要解决方案。这种具体能力使用新的信息资源提供了系统功能的扩展。事实上,可扩展性允许支持反应速度以及越来越多的操作,事务或用户的系统的一般性能。
对可扩展性的需求激励软件开发公司和开发人员找到有效讨论的方法。如果第一和第二语言是一种语言,他们对发展战略,功能增长和系统技术特性的增加有一个共同的认识。