集装箱式架构设计的十个学习步骤_第1页
集装箱式架构设计的十个学习步骤_第2页
集装箱式架构设计的十个学习步骤_第3页
集装箱式架构设计的十个学习步骤_第4页
集装箱式架构设计的十个学习步骤_第5页
已阅读5页,还剩468页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、的十个学习步骤简介 在需求、数据和软件愈来愈碎片化的趋势下,集装箱(如Docker Container)包装了微服务(Micro-Service)成为主流。这些微服务在运行时间(Run-time)经常需要动态组合成为各式各样的App来支撑企业多变的业务流程。简介 这种集装箱式架构设计,随着近年来Docker集装箱技术的流行,可说红透半天边,而且势如破竹、蔚为风潮,正在强力改变终端与云平台的整体设计理念和方法。简介 本课程分为两个阶段,第一阶段以个人的学习路径为主轴,依循十个学习步骤,循序渐进建立扎实的根基。第二阶段,则依据企业软件开发流程里的先后环节来作教学。阐述各环节的思想、模式、技术和实践

2、要点。并以的端云一体化架构设计为例,阐述企业逻辑分析、插件和集装箱设计、实际开发愈部属方法等。基于软硬整合观点软硬整合观点碎片化潮流下的架构新思维- 变化、碎片与集装箱Part-1高焕堂的著作基于软硬整合观点1.1 碎片(Fragment) 来自何处呢?碎片来自变化(Change)碎片或(表现为软件的) 插件(Plug-in)的背后 都是变(化)沙滩沙滩沙滩变化变化变化变化面对环境变化分离出碎片!变化碎片碎片变化碎片变化碎片分离出变化碎片变化接口碎片接口变化接口变化碎片碎片变化接口碎片(变化)接口碎片(变化)接口碎片(变化)接口集装箱接口内部(变化)集装箱接口(序)内部(变化)接口(序)沙滩沙

3、滩 沙滩 (碎片) 沙滩(碎片)沙滩沙滩沙滩沙滩环境环境变因变因( (道路道路) )沙滩环境环境变因变因( (道路道路) )系统系统碎片碎片( (轮胎轮胎) )沙滩环境环境变因变因( (道路道路) )系统系统碎片碎片( (轮胎轮胎) )沙滩其他其他变因变因? ?其他其他碎片碎片? ?请您找找看!基于软硬整合观点1.2 软件碎片(插件) 来自何处呢?插件(软件碎片)来自变化(Change)碎片或插件(Plug-in)的 背后都是变(化)以SurfaceView + Camera(摄像头像头)为例 软件SurfaceView代表手机屏幕 软件Camera代表摄像头SurfaceViewCamera

4、以SurfaceView + Camera(摄像头像头)为例 Camera摄像头取得视像,然后将视像传递到SurfaceView屏幕上呈现出来。SurfaceViewCamera(视像)WebCameraSurfaceViewCamera(视像)WebCameraCameraMP4视频PlayerSurfaceView变化SurfaceView变化变化SurfaceView变化变化变化SurfaceView变化SurfaceView面对环境变化分离出碎片!变化碎片-xSurfaceView变化SurfaceView碎片-x碎片-ySurfaceView变化碎片-x碎片-y碎片-zSurface

5、View变化碎片-x碎片-yApp-zSurfaceView变化App-y变化App-z碎片-xSurfaceView变化App-xApp-y变化App-z变化碎片SurfaceView变化App-z接口接口App-z变化接口(插件)变化变化EIT变化(01):屏幕显示3D绘图EIT变化变化(01):屏幕显示3D绘图变化(02):屏幕显示2D绘图变化EIT变化(02):屏幕显示2D绘图变化(03):屏幕显示MP4视频变化EIT1T2变化(03):屏幕显示MP4视频沙滩其他其他其他其他碎片碎片? ?请您找找看!变化例如: 将医院加护(重症)病房的仪器联结到护士站的Android TV,让患者的病

6、情及时传送到TV上。 同时,TV也主动再将讯息及时传送到医生的手机或Pad上,让医生能进行实时性的决策,提供更高质量的服务。 变化基于软硬整合观点1.3 软件碎片的组合 试想,在智慧城市里,有两个系统模块: 智能家庭和交通车联网。 两者之间通过网络通信机制来互通。智慧家庭交通车联网通信协议智慧家庭交通车联网通信协议通信协议智慧家庭交通车联网先搞定通信协议 传统方法:两个团队先约定,商讨一个双方都接受的通信协议。 然后,双方就依据这项通信协议,分别开发各自的模块。智慧家庭交通车联网通信协议 不良结果:各模块都依赖于(Depend on)通信协议,导致两个模块也紧密相依了。 三个东西紧密相连在一起

7、的。一旦通信协议改变了,两边的模块都必须改变。 产生的牵一发而动全身的涟漪效应。智慧家庭交通车联网变化交通车联网通信协议 父类子类子类变化碎片智慧家庭交通车联网通信协议 变化智慧家庭EI碎片T智慧家庭交通车联网变化通信协议父类子类子类智慧家庭变化碎片交通车联网通信协议智慧家庭变化碎片交通车联网ET通信协议I交通车联网通信协议父类子类子类 父类子类子类智慧家庭变化变化碎片碎片交通车联网通信协议父类子类子类 父类子类子类智慧家庭变化碎片碎片交通车联网通信协议E&IT E&I T智慧家庭碎片的碎片的组合 碎片的组合 变化碎片的组合 E&I变化T碎片的组合 变化E&IT

8、变化TE&IE&I变化变化变化碎片的组合 TTTE&IE&I变化变化变化碎片的组合 TTT基于软硬整合观点1.4 软件的序中有乱 (集装箱特性)变化ITxITy变化IT1T2变化乱(变化)I(序)TI(序)乱TI(序)乱TI(序)乱T乱序中有乱 外形简单 内容多变 无限组合集装箱特性:例如:原子 化学元素由原子构成道尔顿例如:原子(摘自百度文库摘自百度文库) 不同元素原子的性质 各不相同道尔顿(摘自百度文库摘自百度文库)道尔顿序中有乱序中有乱 不同元素化合时,原子 以简单整数比结合。道尔顿道尔顿水分子序中有乱道尔顿序中有乱序中有乱Q&A基于软硬整合观点软

9、硬整合观点Part-2的趋势、技术与架构高焕堂的著作Docker: Docker: 码头工人码头工人 ( (集装箱搬运工集装箱搬运工) )基于软硬整合观点Docker集装箱 自从2014年以来,Docker 的集装箱(container)技术,可说是红透半天边,而且势如破竹、蔚为风潮,正在强力改变云(cloud)服务的世界。 这跟半世纪前,海上船运业的集装箱风潮,对整个产业的革命性改变,其力道来源和产生经济效益,可说具有异曲同工之妙。 为了配合集装箱化运输时代的来临,海运事业的整体运作型态也产生了重大的转变,无论在海上运送、码头作业以及陆运转接上,都有革命性的改变。 陆上拖车运输业应时而兴,扮

10、演极为重要的角色,以集装箱拖车配合集装箱船运输,具有简化包装、防止窃盗、加速货物搬运及便利关务检验等优点,使集装箱运输作业更加灵活。 集装箱带来的商业利益,其直接受惠是运输业者,并不是货物制造者。 所以集装箱内部的包装业,如纸盒制造业、打包工人等;拖车汽车厂、拖车行、拖车司机;还有造船厂、海运公司、码头工人等都会迅速蓬勃发展起来。 将之对应到Docker风潮,可知道Docker集装箱的效益在于:让所有云服务都有一致的操作(operation)界面,包括部署、管理等方式。 Docker集装箱带来的商业利益,直接受惠是软件管理者或称维运者(operator),例如软件测试工具业者、测试人员等。 在

11、这新世代里,除了拿Docker集装箱来打包微服务(micro-service)来满足需求碎片之外。我们还要以广大的视野、创新的思维,将碎片组合出各式各样、气象万千的商业服务。 就像飞机设计师一样,把一群各自的模块(如轮胎、引擎、机翼、油箱等),以创新模式将它们组合起来,竟然整体就能飞上天空了。 在许多革命性转折里,经常出现集装箱的身影;它就像幸运草一般,总是带来许多幸福和财运。 现在Docker风起云涌,再现集装箱身影,如果开放视野、大力支持它,持续发挥它的潜能和力量,则幸运草就会出现在我们身旁了。基于软硬整合观点国王的皮鞋 与Docker集装箱 古代有一位国王在它的国境里视察,因为路面崎岖不

12、平,还有很多碎石头,刺得国王的脚又痛又麻。(摘自百度文库) 回到了王宫后,他下了一道命令,要将国内所有的道路都铺上一层牛皮。让他自己和全国的人走路不再受刺痛之苦。 然而,即便杀尽国内所有的牛,也凑不到足够的牛皮来铺路,而且花费昂贵。 这时,一个仆人向国王建言:可以用牛皮将脚包起来,大王的脚就不会忍受痛苦了。 国王听道而顿悟了,便收回命令,采纳了建议,于是,皮鞋就这样发明了出来了。(摘自百度文库) 从上述皮鞋故事的比喻,可知道传统的虚拟化(virtualization)技术就相当于在各道路(实体机器)上铺一层牛皮(VM, 虚拟机),然后让国王的脚(App)在牛皮(VM)上走路(执行)。 传统上云

13、平台采取虚拟化手段来满足用户个别的资源需求分配,以及确保其可用性和隔离性。 然而无论是KVM还是Xen等Guest OS都很浪费资源又难于管理, 都不如Docker集装箱(皮鞋)来的更加灵活、快速和节省资源。传统铺牛皮(虚拟层)Docker皮鞋(集装箱) Docker的焦点在于而不是像传统虚拟化思维的焦点在于让国王脚疼的。 为什么Docker集装箱能提升App的执行效能呢? 因为Docker属于OS层级的虚拟化。 在传统hypervisor虚拟化技术哩,VM透过一个中介层,间接执行于Host OS上。 而Docker集装箱(也是一个小VM)则执行于Host-OS的用户空间,直接执行于Host

14、OS上。所以效率提高了。 Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到主流的 Linux 机器上。 这些分布式应用程序具可携特性,由各个不同但可互通的Docker容器所组成,具备动态的生命周期,而且不论是在笔电或是云端上皆可执行。基于软硬整合观点Docker集装箱的基础- LXC 用户空间Linux 内核 用户空间Linux 内核进程进程 用户空间Linux 内核进程LXCnamespace LXC在目前的进程管理框架上增加资源的管理和隔离机制。 LXC包集成这些linux内核机制提供一个用户空间容器对象, 即是针对某一应用提供资源隔离和控制的轻量虚拟系统。

15、 Docker对container的使用基本是建立唉LXC基础之上的,然而LXC存在的问题是难以移动 - 难以通过标准化的模板制作、重建、复制和移动 container。 LXC仰赖namespace来实现隔离性。让每个容器都有自己的命名空间,确保不同容器之间不会相互影响,让每个容器成为拥有自己进程和网络空间的虚拟环境,都成为一个独立运行的单位。 此外,LXC藉由内核的cgroup来对各个容器(的进程)使用的系统资源做严格的限制。 例如可建立一个cgroup来限制某个(容器)进程对CPU的占用率不能超过50%。而Docker则在LXC基础上,加上Docker 境像管理方式,就成为Docker集

16、装箱了。 LXCLinux 内核namespace Docker集装箱Linux 内核namespaceApp ImageBins/Libs Image Docker集装箱Linux 内核namespaceDockerImage Docker借鉴了虚拟机(VM)的模式,让用户像管理VM一样的管理他们的集装箱镜像。基于软硬整合观点 简而言之,LXC基于namespace的隔离机制和cgroup的资源控制功能,来管理容器。 隔离性 LXC运行于一个用户空间进程里,在既有的进程管理架构上,增添了资源管理和隔离机制。 所以LXC是针对某一App提供资源隔离和控制的轻量型虚拟系统。LXC仰赖namesp

17、ace来实现隔离性。 隔离性 让每个容器都有自己的命名空间,比如pid/net/ipc/mnt/uts等命名空间,以及不同的 user id和group id。 有了namespace从进程、网络、IPC、档系统、UTS和用户角度进行隔离,我们就能e确保在不同容器之间不会相互影响,每个容器都成为一个独立运行的单位。 隔离性 从容器里而观之,它是一个完整的Linux的世界。在整个平台而观之,容器运行于一个普通的用户空间进程,namespace创造了这种映射和隔离效果,云平台承载着一个个容器,就如同造物者创造了许多世外桃源一般。 资源控制 LXC仰赖cgroup来限制各个进程对系统资源的使用能力。

18、通常会创建多个cgroup,形成一个树状结构(hierarchy)。 然后subsystem会关联连接到这个树状结构上。一个subsystem代表着一项资源,例如CPU、Memory或 I/O等。/cpu_mem_cg/cg1/cg2/cg3Cgroup Hierarchymemory CPUSubsystems cgroup组织形式是树状结构的,包含一个父cgroup和三个子cgroup,其关联到两个subsystem(即CPU和memory)。 这subsystem是经由cgroup来与task(典型的就是进程)连结,以便实现对task的资源管理与控制。 一个task可加入到树状结构上的一

19、个cgroup,由此cgroup来限制该task的资源使用。 一个cgroup可以连结到多个task。而一个task也可连结到多个cgroup。 例如,针对一个容器进程,先创建名为“cpuset”的cgroup,然后将一个mytask的PID写入/sys/fs/cgroup/cpuset/tasks文件里,就把这个mytask加入到该cgroup了。/a_cg/cg-1/cg-N/b_cg/ioset/cg_y/task_1hierarchyhierarchy/mytask/task_N I/O CPU/cpuset 这个mytask连结到两个cgroup:即“cpuset”和“ioset”,

20、各连结到一个subsystem(即CPU和I/O资源)。基于软硬整合观点Docker集装箱 和它的镜像 制作Docker镜像文件的途径有二:1)从现有集装箱生成,或从Dockerfile生成。 亦即,集装箱是一个基于Docker镜像创建、包含为了运行某一特定程序的所有需要的OS、软件、配置文件和数据,是一个可移植的运行单元。 在Host机器来看,它只是一个简单的用户进程而已。”举例:在Ubuntu机器上建立Docker集装箱首先安装Docker $ sudo apt-get install docker.io安装好了,就可启动Docker服务 $ sudo service docker.io

21、restart接着载入一个ubuntu(的Docker)镜像 $ sudo docker pull ubuntu (这创建一个集装箱,内含ubuntu镜像) ubuntu imageDocker集装箱Linux 内核 执行集装箱内Ubuntu交互式命令(如shell) $sudo dockerrunubuntu /bin/echoHello! Hello! 在此集装箱里,增添一个example镜像 $sudo docker run ubuntu apt-get install -y example ubuntu imageexample imageDocker集装箱Linux 内核 取得此集装

22、箱的ID $sudo docker ps l (得到ID值,如:6966a3b96484) 从这个集装箱产生出它的镜像 $sudo docker commit 6982 mis/exam mis/exam镜像ubuntu imageexample imageLinux 内核 载入刚才产生的镜像 $sudo docker pull mis/exam (这创建一个新集装箱,内含mis/exam镜像) 执行集装箱内mis/exam镜像 $sudo dockerrunmis/exam echo Happy! Happy! 集装箱 集装箱ubuntu imageexample imagemis/exam

23、 imageLinux 内核 执行集装箱内mis/example镜像 $sudo dockerrunmis/exam echo Happy! Happy!基于软硬整合观点Docker园丁 (Docker Runtime) 我们在运输(ship)或移植一个Docker集装箱时,就像移植一棵树一样, 但是移植树的种子(seed)到另一个花园(平台)里,重新打造出一样的(identical)环境(花盆)并重新长出一样的树。 那么,我们在电脑上,需要有位园丁来打造花盆、准备资源(如水、泥土)等工作。这位园丁就是:Docker Runtime。它是由三个模块所组成,包括:Docker Server、Do

24、cker Engine和Docker Daemon三部分。Docker ClientServerRMIEngineDaemonJobHandlerExecDriverNetworkDriverGraphDriver 通常,人们是透过Docker Client来与Docker Server建立通信(两者是C/S架构)。 例如,我们可以将docker build命令传送给Docker Server来依据指定的dockerfile来创建一个Docker镜像。 Docker Server接受Docker Client所传送来的请求,然后转给Docker Engine去转换出一连串的工作(job)来管理

25、集装箱。 例如,向Docker Registry获取镜像、通过GraphDriver执行集装箱镜像的建立、通过NetworkDriver执行容器网络环境的配置、通过ExecDriver执行集装箱内部的软件等。基于软硬整合观点Docker集装箱集散地 (Docker Hub) Docker公司不仅仅提供上述的Docker园丁来帮你搬运集装箱,还提供Docker Hub来做为集装箱的共享平台。 Docker公司提供的开放平台,主要包括:Platform = Docker Engine + Docker Hub + APIs + Ecosystem 我们在开发平台上,使用Docker引擎来将App打

26、包到集装箱里,然后透过Docker Hub API来将集装箱(的镜像)放到Docker Hub上。 于是,Docker Hub成为一个集装箱集散地,也就是一个共享的集装箱平台。需要时,可从这Hub寻找到集装箱,并下载到云服务平台(如阿里云或Google云)上去运行。 所以,Docker Engine和Docker Hub两者联手,为开发者和系统管理员设计出一个易于发布和运行分布式App的开放性平台。Q&A基于软硬整合观点软硬整合观点Part-3(a)的十个学习步骤(步驟15)高焕堂的著作第第1 1步:步:学习两种抽象视角学习两种抽象视角第第2 2步:步:关心下层的变动自由度关心下层的变

27、动自由度第第3 3步:步:系统架构控制力支撑商业竞争话语权系统架构控制力支撑商业竞争话语权第第4 4步:步: 是用户从简单中叫出复杂是用户从简单中叫出复杂 的满足感的满足感第第5 5步:步:创意爱上限制,即需求检验设计创意爱上限制,即需求检验设计基于软硬整软硬整合观点合观点 视角1. 归纳抽象: 从一群的业务或系统模块(Module)中,观察其相同的部分,然后归纳抽象(分析视角)出来,成为可复用(Reuse)共同部分。这称为视角。视角1. 归纳抽象:变与不变分离视角1. 归纳抽象:Credit Card(信用卡)不变部部分视角1. 归纳抽象:抽象类不变部部分具象类-1具象类-2具象类-n除了分

28、析业务之外,还要组合创新归纳抽象除了分析业务之外,还要组合创新分析师视角除了分析业务之外,还要组合创新设计师视角分析师视角视角2. 组合创新: 引进或创造一个新模式(Pattern),将一群模块组合成一个和谐的整体。这模式是形式(Form),各模块是内容(Content);通称为视角。视角2. 组合创新: 引进或创造一个新模式(Pattern),将一群模块组合成一个和谐的整体。这模式是形式(Form),各模块是内容(Content);通称为视角。视角2. 组合创新: 引进或创造一个新模式(Pattern),将一群模块组合成一个和谐的整体。这模式是形式(Form),各模块是内容(Content)

29、;通称为视角。例如,例如,汽车汽车和和行人行人是两种个体是两种个体( (模模块块) ),经常在路上发生冲突,导致社,经常在路上发生冲突,导致社会会( (整体整体) )不和谐了。不和谐了。因而创新设计了一个因而创新设计了一个新模式:新模式:红红绿绿灯灯+ +斑斑马马线。成为汽车与行人的接口线。成为汽车与行人的接口(Interface)(Interface),整体就和谐了。,整体就和谐了。例如,一群零组件例如,一群零组件( (如轮胎、引擎、如轮胎、引擎、机翼、机尾、油箱等机翼、机尾、油箱等) )都都 ;但是我想飞。但是我想飞。除了分析业务之外,还要组合创新设计师视角把一群把一群 的模块的模块( (

30、如轮胎、引擎、机翼如轮胎、引擎、机翼) ),巧妙地组合起来,竟然巧妙地组合起来,竟然就就 上天。上天。设计师视角把一群把一群 的模块的模块( (如轮胎、引擎、机翼如轮胎、引擎、机翼) ),巧妙地组合起来,竟然巧妙地组合起来,竟然就就 上天。上天。架构师的职责把一群把一群 的模块的模块( (如轮胎、引擎、机翼如轮胎、引擎、机翼) ),巧妙地组合起来,竟然巧妙地组合起来,竟然就就 上天。上天。架构师的职责基于软硬整软硬整合观点合观点除了关心上层应用,还要关心底层模块。除了关心上层应用,还要关心底层模块。万里长城设计师用心于关外还是关内万里长城设计师用心于关内限制塞外保护关内关心底层模块厂商(没钱就

31、改版, 改版就有钱)。架构师用心 于底层重构底层接口底层模块上层模块底层接口底层模块上层模块Server 接口Server模块f1()OpenGL_CAppp1()SQLiteDBf1()OpenGL_Cp1()SQLiteDBApp代码Callf1(“init”)Callp1(factor(f1() f1()OpenGL_Cp1()SQLiteDBApp代码Callf1(“init”)Callp1(factor(f1() f1()和p1()函数是谁定义的?f1()OpenGL_Cp1()SQLiteDBApp代码Callf1(“init”)Callp1(factor(f1() f1()是设计

32、者定义的f1()OpenGL_Cp1()SQLiteDBApp代码Callf1(“init”)Callp1(factor(f1() 和字眼被写在App模块代码里!f1()OpenGL_Cp1()SQLiteDBApp代码Callf1(“init”)Callp1(factor(f1() App代码绑住了接口!代码必须同步修改f1()p1()代码必须同步修改App代码Callf1(“init”)Callp1(factor(f1() f1()p1()代码必须同步修改App代码Callf1(“init”)Callp1(factor(f1() f1()p1()修改需x元代码必须同步修改App代码Call

33、f1(“init”)Callp1(factor(f1() 修改需y元f1()p1()OpenGL_C变更成本= x + y元App代码Callf1(“init”)Callp1(factor(f1() 这就是所谓的的涟漪效应。例如,Android的Camera模塊Server模块模块Client模块模块例如Android的3D绘图抽换Server模块引擎轮胎接口接口引擎轮胎著名的EITEIT设计模式 碎片:碎片: 可变可变抽换轮胎抽换轮胎基于软硬整软硬整合观点合观点 除了结构(设计自己),还要有策略(设计别人)。依据企业的定位,设计有利于自己的软件接口给别人实现。除了结构(设计自己),还要有策略

34、(设计别人)。掌握接口,拥有系统控制权,支撑商业话语权,巩固地位。除了结构(设计自己),还要有策略(设计别人)。 认识自己企业的商业模式商业模式,厘清自己企业在商业合作策略上能够(或想要)取得什么话语权话语权? 取得接口接口(API)(API)定义权定义权,掌握系统系统控制点。控制点。 强化自己商业策略的话语权。Server端厂商的商业策略? 没钱就改版, 改版就有钱。Server端厂商的商业策略? 系统控制权, 支持商业话语权Server端厂商的商业策略? Client/Server架构 Client/Server架构没钱就改版, 改版就有钱。 Client/Server架构掌握掌握强势接口

35、强势接口创造创造强龙地位强龙地位Client端厂商的商业策略? Client端厂商的商业策略? 随时抽换ServerServer模块Client端端厂商厂商掌握掌握接口接口创造创造地位地位AndroidAndroid架构师如何支撑GoogleGoogle的商业策略? ? AndroidAndroid底层是LinuxLinux,它属于Linux Linux 基金会 AndroidAndroid底层是LinuxLinux,它属于Linux Linux 基金会 Android Linux 驱动(Driver) 驱动LinuxGPL开源协议摆在摆在LinuxLinux内核里内核里( (硬件厂商硬件厂商

36、) )开源之后,我的开源之后,我的硬件创新就曝光了硬件创新就曝光了! !( (硬件厂商硬件厂商) ) 驱动Linux还可以摆在哪里呢还可以摆在哪里呢? ?( (硬件厂商硬件厂商) ) 驱动Linux设计框架,定义接口,拉拢硬件厂,架空Linux Linux 基金会 Android Linux 驱动(Driver)设计HALHAL框架 Android Linux 驱动(Driver)HAL HAL的设计吸引硬件厂商,削弱Linux对硬件厂商的约束力,架空Linux基金会。 提高Google的商业话语权。基于软硬整软硬整合观点合观点 除了加法设计, 还要先减法设计。除了加法设计, 还要先减法设计。

37、好玩好摸好抱除了加法设计, 还要先减法设计。好玩好摸好抱除了加法设计, 还要先减法设计。 设计就是从复杂中找出简单的过程。设计就是从复杂中找出简单的过程。 让开发者从简单中反过来掌握复杂。让开发者从简单中反过来掌握复杂。 让用户能从简单中叫出复杂,并获得其让用户能从简单中叫出复杂,并获得其中的满足感。中的满足感。 减法设计思维,古代的容易是包容改变的意思,并非舍弃改变之意。如此,化繁为简,提升人们掌握复杂的能力。 後來,許多人喜欢抽象(Abstraction),抽出万变不离其宗的不变,来掌握简单。这就违背了容易的标的了。苹果很擅长苹果很擅长减法设计减法设计 举例(一) :2000年代初期,So

38、ny随身听是苹果公司的竞品之一。随身听(竞品)如何删除删除呢?(减法设计) 举例(一) :2000年代初期,Sony随身听是苹果公司的竞品之一。 iPod 减法设计减法设计 举例(一) :2000年代初期,Sony随身听是苹果公司的竞品之一。 举例(二) :之后,黑梅手机是苹果公司的竞品之一。黑梅手机 举例(二) :之后,黑梅手机是苹果公司的竞品之一。如何减法设计呢?黑梅手机 举例(二) :之后,黑梅手机是苹果公司的竞品之一。减法设计减法设计iPhone手机 举例(三) :还有,微软平板也是苹果公司的竞品之一。微软平板 举例(三) :还有,微软平板也是苹果公司的竞品之一。如何删除删除呢?(减法

39、设计)微软平板 举例(三) :还有,微软平板也是苹果公司的竞品之一。减法设计减法设计iPad 基于软硬整软硬整合观点合观点 除了满足(外在)需求, 还要追求(内心)愿景。需求围绕设计需求围绕设计除了满足(外在), 还要追求(内心)愿景。 谷歌公司副总谷歌公司副总Marissa MayerMarissa Mayer所提倡的:所提倡的: “创意爱上限制(Creativity loves(Creativity loves Constraint)Constraint)。 她说:她说: 创新来自创新来自愿景与限制的互动愿景与限制的互动 (Innovation is born from the (Inno

40、vation is born from the interactionbetween constraint and vision)interactionbetween constraint and vision)。 限制迫使架构师重新审视愿景,从不同观点切入,限制迫使架构师重新审视愿景,从不同观点切入,寻找新事物;同时也让其聚精会神、厘清思路;非寻找新事物;同时也让其聚精会神、厘清思路;非常具有创新性。常具有创新性。愿景限制信用卡(Credit)联盟的组织架构 愿景限制 银行不吃亏:没向银行拿钱 消费者不吃亏:刷卡与不刷卡,价钱一样 店家不吃亏:随然每笔交易收了3%,但每天交易总额提升30%愿

41、景限制= 创新Vision=没向银行收钱让顾客占便宜提高店家收入 心境:不让任何合作者受伤害(吃亏)。愿景限制 消费者刷卡,延后付款 这利息谁支付?愿景限制 把利息转嫁给有钱人(如贵妇) 19.8%循环利息Q&A基于软硬整合观点软硬整合观点Part-3(b)的十个学习步骤(步驟610)高焕堂的著作第第6 6步:步: 假设性思维和假设性思维和Mapping from visionMapping from vision to reality to reality第第7 7步:步: 清晰而明确表述接口清晰而明确表述接口第第8 8步:步: 尽快对接口进行检验和测试尽快对接口进行检验和测试第第9

42、 9步:步: 设计通用性接口设计通用性接口第第1010步:步:有效减法设计,才能开放加法有效减法设计,才能开放加法基于软硬整软硬整合观点合观点 除了眺望未来, 还要Look back。(从未来回顾今日)“你不可能在眺望未来时把生活中的每个点连接起来,只有回顾时能才连点成线。所以你必须相信今日所做的会影响你的未来。”苹果.乔布斯说。 Look back(现实,Reality)Prob. X.许多Manager 都关注现实问题(现实,Reality)Prob. X.(现实,Reality)Prob. X.(现实,Reality)Prob. X.Look Back(现实,Reality)其它问题Ex

43、. 国王与皮鞋的故事 古代有一位国王在它的国境里视察,因为路面崎岖不平,还有很多碎石头,刺得国王的脚又痛又麻。 回到王宫后,他下了一道命令,要将国内所有的道路都铺上一层牛皮。 于是,让他自己和全国的人走路不再受刺痛之苦 众大臣听了国王的话都一筹莫展,知道这很难。即便杀尽国内所有的牛,也凑不到足够的牛皮来铺路,而且花费昂贵。 这时,一个聪明的仆人向国王建言:可以试着用牛皮将脚包起来,大王的脚就不会忍受痛苦了。国王听道而采纳了建议,于是,皮鞋就这样发明了出来了。杀牛、铺牛皮Prob. X.国王&大臣们 都关注现实问题杀牛、铺牛皮Prob. X.Solve Problem X 杀牛、铺牛皮P

44、rob. X.仆人X is Not Right Problem to solve Look Back(现实,Reality)其它问题VisionMapping from vision to realityVision创新: 皮鞋VisionEx. 红绿灯与斑马线Ex. 红绿灯与斑马线汽车和行人经常在路上发生冲突、混乱。Reality:冲突混乱Prob. X.Prob. X.VisionVisionMapping from vision to realityVisionProb. Y.Ex. 集装箱的故事Vision-1Vision-2Vision-3Mapping from vision to

45、 realityMapping from vision to reality序中有乱 Vision:和谐整体Reality:碎片多变 Vision:和谐整体Reality:碎片多变序中有乱Ex. Docker软件集装箱 Vision:创新组合Reality:碎片多变Reality:碎片多变 Vision:创新组合 Vision是梦想、假设出来的想象力比知识更重要 爱因斯坦 Vision是梦想、假设出来的Reality是现实条件Mapping from vision to reality Vision是梦想、假设出来的Reality是现实条件Mapping from vision to real

46、ityReality是现实条件Mapping from vision to reality Vision是北极星: 是梦想、不一定可实现基于软硬整软硬整合观点合观点 愿景现实Mapping from vision to reality 愿景现实 新事物新事物发现(或想象)了新事物, 还要描述它。先关注它的 组合接口要有明确的接口定义, 才知道如何整合到整体, 并且和谐(如能飞)依据接口去 生产与组合Program to interface举例:Docker + EIT造形一项游戏软件有多个模块,打包成为Docker集装箱。Docker Container摄像头Docker Container港

47、口3D图Docker Container无人飞机Docker Container摄像头Docker Container港口3D图Docker Container无人飞机在这个游戏里,玩家操控飞机,携带摄像头(Camera)飞越港口上空,游戏画面会出现摄像头所拍到的景象。如下图:(取自千图网)动态组合动态组合 首先,来看看如何将和两个Docker集装箱组合起来。Docker Container摄像头Docker Container无人飞机组合组合这如何设计、 叙述接口呢?心怀EIT造形 此时,EIT造形就浮上心头,设计一个EIT集装箱来组合。Docker Container无人飞机Docker

48、Container摄像头EIT集装箱集装箱 心中当然很清楚,这EIT集装箱里含有一个单纯的EIT造形。Docker Container无人飞机Docker Container摄像头EIT集装箱集装箱 一旦能够组合了两个,只要变化EIT造形,就能组合三个集装箱了。瞬间改变EIT集装箱里的EIT造形,展现出新奇组合。Docker Container无人飞机Docker Container摄像头EIT集装箱集装箱Docker Container港口3D图举例:Android 的EIT造形 组合 摄像头(Camera)拍摄到视像,然后传递到显示屏。 SurfaceView和Camera两个类控制设备。

49、集装箱集装箱 集装箱集装箱 此时,EIT造形就浮上心头,设计一个EIT集装箱来组合。EIT集装箱集装箱 心中当然很清楚,这EIT集装箱里含有一个单纯的EIT造形。 集装箱的特性:。 EIT造形可以弹性变化。 这是Android的典型结构。 Continued 基于软硬整软硬整合观点合观点 愿景现实Mapping from vision to reality 愿景现实Mapping from vision to reality 愿景现实Mapping from vision to reality接口支持组合 愿景现实Mapping from vision to reality接口支持组合检验除了

50、设计接口支持组合, 还要检验、接地气。除了设计接口支持组合, 还要检验、接地气。接口决定整合接口决定整合开发前先开发前先 检验接口检验接口Docker Container摄像头Docker Container港口3D图Docker Container无人飞机设计接口,先进行接口测试,然后才花钱去购买、委托或自行开发生产。尚未开发委托开发摄像头先做个Mock(赝品),只做I/O,细节逻辑还不写,然后设计EIT来定义组合接口。MockDocker Container无人飞机EIT集装箱集装箱 先检测Mock能否与整合,才决定是否花钱开发这种摄像头。Docker Container无人飞机EIT集装

51、箱集装箱摄像头Mock 随着系统的扩大,更多模块的整合,对接口设计的完整性、未来性等进行检验。Docker Container无人飞机Mock摄像头EIT集装箱集装箱Mock港口3D图MockCamera 集装箱内部也能建立Mock来检验接口。 Continued 基于软硬整软硬整合观点合观点除了设计接口之外, 还要抽象出更通用接口。通用性接口设计支持 集装箱一致造形支持一致造形支持 无限组合无限组合 集装箱里各模块有各自的对外接口,伤害集装箱的了。Docker Container无人飞机Docker Container摄像头Docker ContainerDocker Container港口

52、3D图I1I2 采用EIT造形,设计出一致的接口。Docker Container无人飞机Docker Container摄像头Docker Container港口3D图I1I2 采用EIT造形,设计出一致的接口。Docker Container无人飞机Docker Container摄像头I1Docker Container港口3D图I2ClientServer通用性接口设计Is 如何设计一致的接口?Docker ContainerDocker Container能否能否单一接口呢单一接口呢?有什么妙招呢有什么妙招呢?将多态将多态组合进去!组合进去!多态结构多态结构多态结构多态结构建立建立继

53、承关系继承关系特殊性特殊性 接口接口通用性通用性 接口接口特殊性特殊性 接口接口Docker Container通用性通用性 接口接口Docker Container一致化一致化接口设计接口设计IGeneralIGeneral Continued 基于软硬整软硬整合观点合观点集装箱的特性: 一致造形一致造形 包容包容变变化化 无限组合无限组合集装箱的特性:序中有乱 一致造形一致造形 包容包容变变化化 无限组合无限组合 一致造形 包容变化 无限组合序中有乱 一致造形 包容变化 无限组合(内部)(外部)Docker Container无人飞机Docker Container摄像头Docker Co

54、ntainer港口3D图I1I2减法设计加法设计 减法设计减法设计减法设计Q&A基于软硬整合观点软硬整合观点Part-4Android+Docker 的一体化设计高焕堂的著作基于软硬整合观点复习:序中有乱 - - 集装箱的内容可复杂多变集装箱的内容可复杂多变 前言: 谈到Docker,许多人会联想到集装箱的可移植性,进而联想到集装箱内容的不变性,(跨平台性)。 其实,集装箱的内容是复杂多变的。变易变易基于软硬整合观点企业逻辑 -Docker-Docker集装箱适合容纳集装箱适合容纳 善变的企业逻辑善变的企业逻辑 Docker集装箱内容也是千变万化 大家都知道,企业逻辑(Business Logics)是善变的。 所以把善变的企业逻辑,加以打包放进Docker集装箱,是有效的作法。基于软硬整合观点软件插件 -用来用来表现表现企企业逻辑业逻辑企业逻辑Docker Image软件插件 经常与并存。企业逻辑插件插件插件Docker Image 经常与并存。企业逻辑插件框架(Framework)插件插

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论