标签:
如今,现代互联网软件应用已经成为一项需要很多人一起构建与维护的庞大工程。 我们是怎么构建复杂软件系统的呢?
一切源于对人类生存处境和现实问题的洞察和思考。 计算机起源于大量科学计算的需求; 接着, 通信成为重要驱动力; 紧接着, 万维网与分享成为主流, 搜索引擎助力; 然后, 智能手机催生了移动时代的来临, 进而引起云计算和大数据的技术变革; 在云计算和大数据之上,构建智能精准的业务。
产品经理是洞察人们处境和需求的先锋队,是产品成长的守护者; 项目经理组织协调资源,在可接受的成本下督导项目与产品的完成; 程序猿与媛是实现产品的主力团队; 视觉、交互设计做出人性化的交互展示效果,使产品更易用; 运维工程师保障软件日常的稳定运行和高峰期的正常运行; 客服同学为用户答疑解惑,帮助用户解决困惑和问题; 运营同学通过策划使得产品获得更大的效用; 行政、财务、HR 保障整个组织的正常运行; 销售同学将产品推向市场,开拓新的市场领域。
从技术角度来看, 有如下重要里程碑:
可编程: 使得硬件成为“百变天后”, 不再局限于单一功能;
编译器: 使得程序员可以使用高级语言和接近自然语言的领域语言来表达现实世界;
操作系统: 计算资源分配与调度的核心, 使应用可以更加专注于任务层面;
结构与算法: 计算领域的基石, 所有高级技术和现代应用都建立在其基础之上;
数据库: 海量数据的有序存储、组织、统计; 几乎所有现代应用都依赖于数据库;
开发库: 使得日常任务可以反复地重用,极大地提升了软件开发的效率,一日千里;
应用框架: 使得构建现代应用可以直接从 40% 起步;
中间件: 使得基础技术组件化和服务化,为大规模系统的构建提供了强大的基础设施;
运维力: 当今大规模软件世界得以持久稳定运行的重要护航力量;
移动机: 移动设备充当连接万物的媒介, 联接人们所能触及的世界;
云计算: 资源聚合重用,提供更弹性而强大的基础计算能力;
大数据: 通过数据分析挖掘提炼出智能、精准的未来业务;
多样强大的开发工具,极大地延展了人的固有能力,即使几岁的小孩都有能力做出像样的应用;
结构化、函数式、对象编程思想继续引领编程领域,成为构建大型可扩展的复杂系统的思想基石;
性能与成本是永恒的驱动因素; 在海量互联网用户的时代更是如此;
以尽可能少的成本, 安全流畅地驾驭海量数据;
并发与异步成为现代软件应用的基础技术;
分布式计算成为构建大规模互联网应用的主流技术;
缓存是提升查询性能的必要技术;
尽可能消除数据不一致成为维护现代应用的主要挑战。
智能是未来的憧憬, 通过智能、精准的技术来适配人的行为特性;
实时搜索与调控能力在部分领域是重要的驱动力;
若说性能是软件的刚性能力, 那么健壮性和可维护性是应用的软实力;
健壮性使得应用更友好地处理错误,减少用户烦恼和困惑;
可维护性良好的软件才有健康稳定成长的潜力。
子系统之间的交互标准化规范化也是重要的组成部分; 大规模的软件应用常常是依靠多个子应用相互协作而良好运转;
黑客与安全技术一直是最容易被忽视但决不可轻视的组成要件之一;
最后但也是非常重要的, 大规模的、敏捷的、稳定的、用户无感知的软件热升级、发布与部署技术是必不可少的; Docker 应运而生; 这需要与运维工程师紧密配合。
印刷、蒸汽、电气是前三代技术变革; 计算技术是第四代技术变革, 毫不为过; 当今其它领域中没有一个像计算领域这样生机盎然、日新月异。
我们是如何构建复杂软件系统的
标签:
原文地址:http://www.cnblogs.com/lovesqcc/p/5724161.html