如何云化你的 Windows 应用?
AWS AppStream是一项新的亚马逊服务,它可实现Windows应用的云化,可将操作系统扩展至各种计算机和移动设备。今天,服务最实用的用例是将提供简单的游戏试玩和对高附加值应用程序(如CAD和医疗成像)提供长期支持。对于CAD应用程序的情况,AppStream允许工程师在工程现场通过平板电脑进行快速更新。而对于医疗成像应用程序,AWS AppStream让多个医学专家进行远程协作变得更为简便。
开始实现客户端应用云化
使用AWS AppStream需要首先考虑的是找出AppStream应用程序背后的业务模式和收入模式。如今,在美国东部地区部署这些应用程序的成本是83美分/ 小时。这可能是向游戏玩家提供一个全新游戏试玩供应商的可接受价格,但是在很多情况下这对于持续性游戏的运营是没有意义的。当然对于高端CAD即服务产品来说,这可能也是一个可以接受的成本支出,这个产品可以让工程师们在现场使用低端平板电脑进行CAD修改。
客户端应用程序在一个专用AppStream应用程序上运行,而后者则在每一台本地设备上运行。本地应用程序对来自于亚马逊网络服务(AWS)的视频音频进行解码,并收集用户通过键盘鼠标触摸屏输入的信号。用户可以通过使用AppStream软件开发组件来对本地应用程序进行配置以便于收集诸如GPS信号这样的附加输入数据。客户端应用程序适用于iOS、Android、Chrome、Windows以及Mac等操作系统。应用程序必须支持Windows Server2008或其后的更高版本。如果应用程序有其他例如.NET框架这类的支持构件,那么就必须包含这些组件作为应用程序安装程序的一部分。
让低端设备具有高端性能
桌面虚拟化的概念已经存在多年了。在这种传统的模式下,可通过云计算方式提供一个Windows桌面实例。这种方法能够更容易地启动和提供一个具有合适配置与配有应用程序集合的完整Windows环境。AppStream运行IT部门所提供单独的应用程序或集合以实现更细化的设置。它还包括与客户端、订阅、身份和存储的集成功能。
通过对应用程序的云计算化,企业能够更好地针对CPU密集型和GPU密集型应用程序分配计算资源。例如,诸如CAD、3D建模以及医学成像这类的应用程序就可以把繁重的计算处理移至云计算。然后客户端应用程序就可以使用已在平板电脑和手机上标配的视频解码芯片来渲染结果了。从本质上来说,任何能够从附加 CPU、GPU、RAM或存储需求中获益的应用程序都能够从AppStream受益。
理解网络影响
把Windows应用程序迁移至云计算的一个重要考虑因素就是延迟性,也就是在用户操作及其在应用程序效果之间的延迟感觉。对于那些诸如能够容纳100毫秒延迟的CAD应用来说,这一点并不重要。但是20毫秒的延迟将给游戏体验带来明显影响。产生延迟的原因包括:数据包发送至云计算的物理距离、期间需经过路由器的数量以及竞争互联网业务的流量。此外,无线网络所导致的网络断线也可能加剧延迟问题。
另一个重要的考虑因素是AppStream需要一个有效的互联网连接。对于那些位于移动电话信号发射塔覆盖区以外的移动用户来说,这可能是一个问题。但是,可以通过区分本地资源和AppStream之间的托管责任来更好地处理这一流程。在这些情况下,用户可以在互联网连接断开时继续工作,当然其运行性能较差。但是,这些混合型应用程序需要针对每一个支持平台都进行二次开发。
对于云计算应用程序,AppStream需要至少3M/秒的带宽。虽然对于使用有线连接或DSL连接的个人用户来说这可能不是一个大问题,但是当数十人试图同时运行AppStream应用程序时这就是一个大问题了。还可以迅速推动移动工作人员使用他们的无线网络数据计划分配。应用程序将继续以更低速率(下降到553KBps),当然其质量也较低。
入门步骤
AppStream支持一个可将Windows应用程序安装程序转换至AppStream实例的交互式部署向导。初始的应用程序性能可能在这一过程中运行缓慢,这是因为它依赖于传统的Windows远程桌面协议。一旦应用程序在云计算中正常运行了,它将使用本地AWS AppStream STX 协议,这是一个经优化以提高应用程序对延迟响应的协议。
接下来,通过设立一个授权服务来对用户进行验证和授权,从而确保AppStream应用程序的安全性。要做到这一点,可将用户提交信息与数据库中订阅信息进行比较,使用一个外部登陆服务或验证所有客户端。授权服务会向客户端发送一个URL信息以连接至可用应用程序。
当客户端会话结束时,AppStream数据将丢失。如果需要在AppStream应用程序之间实现数据共享,或者在客户端会话之间继续保留数据,那么可设立某种形式的持久性存储。AppStream控制台所提供的功能包括,使用简单存储服务、关系型数据库服务或DynamoDB来集成和保留会话数据。