开发者社区> 华章计算机> 正文

《需求设计:构建用户想要和需要的产品》——2.4 技术设计

简介:
+关注继续查看

本节书摘来自华章计算机《需求设计:构建用户想要和需要的产品》一书中的第2章,第2.4节,作者: [英] 克里斯·布里顿(Chris Britton) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.4 技术设计

集成设计之下的那一层,可以分为三个领域:技术设计、用户界面设计与数据库设计。本节讨论技术设计。
技术设计有两大目标:
1.设计出可以满足非功能型需求的解决方案。
2.设计出可以尽量简化功能编程的解决方案。
非功能型的需求,是指那种与业务工作并没有直接支持关系的需求。它们包括:

  • 所应满足的吞吐量及响应时间。
  • 可用性方面的目标。
  • 灾难恢复方面的要求。
  • 安全设计。你需要知道应用程序的安全漏洞、修复这些漏洞的办法,以及系统监控与系统管理工作的执行方式与执行地点。
  • 系统操作和系统管理的易用性。
  • 能够有效处理新硬件及新软件的发布。
  • 成本方面的目标。

大家在思考非功能型的需求时,一般都只会关注前两项,也就是性能及可用性方面的目标。这两项需求对设计所造成的影响,确实是最大的,然而其他几项需求,也不应该忽略。
笔者撰写本书的时候(也就是2015年),很多人在鼓吹DevOps[7]。它的主要动力源于业界想要缩短编程完工与产品发行之间的时间。为了达到这一目标,我们需要打破开发(dev)与运维(ops)之间的阻隔(例如,使用同一套版本管理工具来进行开发与运维),并且需要缩减或消除发布软件时所需的工序。微服务的推崇者会嘲笑SOA,而DevOps的推崇者则会轻视ITSM(IT Service Management,IT服务管理)。在很多IT部门之中,安装新版软件所需的流程,固然是很有问题的,但是这种流程依然有必要存在。如果你想知道糟糕的软件更新方式所引发的后果,那么可以看看2012年NatWest Bank(National Westminster Bank Plc,国家Westminster银行)所遇到的状况[8],那次事件正是由于软件升级不当所引发的。业务活动之中的流程随时都在演变,但麻烦的是,这些流程经常朝着更加复杂、更加昂贵和更加缓慢的方向演变。同时,遵照这些流程来工作的员工,由于已经熟悉了现有的流程,因此不希望这些流程再发生变化。DevOps流派的出现,使得业界能够反思自己在流程方面的一些做法,但是你在改善流程的时候,应该遵照一套法则来持续地进行改善,否则,这些流程又会逐渐地走向僵化。
复杂的大型应用程序,其变更控制(change control)流程之所以会如此冗长和烦琐,一个原因就在于这种流程必须逐段地进行演变。技术设计至少可以给我们提供一个起始点,使我们能够由此出发,以一种全新的方式来解决问题。技术设计所要处理的问题有:

  • 开发与运维所使用的版本控制工具。
  • 与汇报错误、切换到备份机制等工作有关的操作流程。
  • 是否需要在应用程序中放入一些监控代码,以协助我们检测故障并监控性能。

如果不考虑系统的测试环境,那就没有办法制定版本控制流程及安装流程。因此,技术设计者也需要考虑到系统应该怎样进行测试。
在这些运作方面和系统测试方面的问题之中,有很多都和技术设计的第二项目标有关,那就是要为程序员的开发工作提供帮助。然而更宽泛地来说,在技术设计能为程序员所提供各种帮助之中,最为重要的一种方式,是通过设计并实现一套有效的框架,来促进程序员的工作,如图2-1所示。为此,我们首先要选择硬件及软件技术,此外还有其他一些方面要做。技术设计应该给功能代码的实现方式提供指导,应该提供一些如安全验证及用户组确认等常见的服务,如果用到了中间件,那么还应该把中间件的用法告诉程序员。此外,如果在调用某项服务的时候,需要用某个应用程序来检测网络超时,那么技术设计者就应该指出检测的方式。
对于某些IT应用程序来说,技术设计是相当简单的,但对于多层的业务应用程序等项目来说,由于还要涉及与灾难恢复有关的备份服务器及暗室操作,因此技术设计会比较复杂。有的时候,同一套技术设计或许可以涵盖多个应用程序及服务,尤其是在使用外部云或内部云的时候。
有的时候,我们需要从技术设计跳回情境设计,如果在做完技术设计之后,发现自己无法承担这个项目的开销,那就更应该如此。此时不必直接把项目取消,而是应该稍稍收缩一下自己当初的想法,同时可能还需要修改早前的情境设计。这种反馈是相当关键的,值得花些时间把这两种设计做好。
笔者坚信,要想判断某个技术设计方案是否可行,唯一的办法就是开始构建它。无论用什么框架,都应该尽快判断出该框架是否能够胜任当前的工作,而不要等到把应用程序的很多功能都放到设计方案里面之后才发现框架不行。检测框架是否合乎目标的办法,是把它置于负载之下运行。
笔者建议大家按照图2-7所演示的顺序,来为较为复杂且要求较高的应用程序编写代码。
首先构建试验原型(experimental prototype),以探索新的技术或想法。如果这项技术已经理解得很充分了,那么可以跳过该阶段。下一阶段是构建框架并测试环境。然后,用某些stub组件来填充框架,并测试该框架在负载之下的表现。此时还可以执行其他一些测试,例如,切换到备份服务器或判断应用程序的易用性。如果用户觉得这个解决方案还不错,那可以等到真正的组件做好之后,用它们来替换早前那些stub组件。
这套流程几乎不会造成浪费,因为对系统进行性能评测(benchmark)的那台计算机,本身就可以当作系统测试机来用。因此,向评测所用的那台计算机注入大量消息的那个驱动器(driver),同样可以充当系统测试的驱动器。


<a href=https://yqfile.alicdn.com/307ae0e60e270683b107be63da462093eeceacc9.png">

当然,对于一个简单的应用程序来说,这套流程有些过于庞大了。各种应用程序的技术设计,其规模与复杂程度也各有不同。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
18854 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
18690 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
21585 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24952 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
20111 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18396 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
13735 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14698 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
34903 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载