Azure Stack技术深入浅出系列5:在Azure Stack上使用Web App PaaS服务及其背后原理窥探(开发案例)

App Service 是微软Azure的PaaS产品。 为任何平台或设备创建Web App PaaS服务和mobile App PaaS服务。 将应用与SaaS解决方案集成、与本地应用程序进行连接,以实现业务流程的自动化。在我们日常开发中,经常会使用Web App PaaS服务来承载企业的业务。

本文试图通过一个案例来分别详细说明Azure Web App业务的下列几大特点:

  1. 应用服务计划
  2. 多种语言和框架
  3. 持续集成和部署
  4. 连接数据库服务
  5. 可用性全局缩放

就在本文撰写过程中,Azure Stack Development Kit GA,Azure Stack Tools也进行了一定程度的更新。后续,我们会根据更新内容测试之后,更新相关技术文档。

1. 应用服务计划

App Service Plan(应用服务计划) :表示托管应用的物理资源的集合,例如region(区域)、scale count(规模计数,多少个实例)、instance size(实例大小)、SKU(免费、共享、基础、标准、高级)。

App Service中的 Web 应用、移动应用、API 应用、Function App(或 Functions)均在应用服务计划中运行。 同一订阅、区域和资源组中的应用可共享应用服务计划。

值得注意的是, Azure Stack App Service提供的服务与目前Moonccake版本有所不同 。Azure Stack App Service提供了Serverless服务 Function App。这为应用开发的架构师提供了另一种技术路径。对于已有的企业级系统,Logic App提供了一种工作流程,把已有的系统与Azure Stack连接,进行数据的交互和处理。

功能 Azure Stack Azure Mooncake
Web App
Mobile App
API App
Logic App
Function App

2. 多种语言和框架

对于开发者而言,不需要知道Web App PaaS服务背后的支撑框架。不管是LAMP也好,还是Windows+.NET+IIS也罢,开发人员只需要使用熟悉的技术栈做相同的事情就行。Web App PaaS服务支持多种语言,如C#、Python、Java、PHP等,同时也支持.NET、J2EE之类的开发框架。下图很好的说明了Web App PaaS服务的组成,虚线之外是独立存在的开发者。把开发者与Web App PaaS连在一起的是众多的开发工具(我们会在第二节介绍使用情况)。

下面我们通过一个简单PHP 网站案例介绍,该特性。首先创建一个Web App应用。在New->Web + Mobile->Web App (preview)

初次创建Web App的过程中,需要用户新建 Resource Group (资源组)和 App Service Plan(应用服务计划)

创建完成之后,我们点击左侧导航栏 App Services

选择 Advanced Tools,点击 Go 图标

点击Go之后,显示 App Service 注册认证页面

选择用户名,输入密码。(用户名和密码为创建该Web App的租户信息)

此时,我们进入 Kudu Services

Kudu是一个用于git部署的CI/CD引擎。详情可以参阅:https://github.com/projectkudu/kudu/wiki。

我们点击页面顶部的 debug console -> CMD,正如使用Windows操作系统cmd指令窗口一样,可以在该窗口进行command line的操作。

为了验证Web App PaaS服务的多语言性,输入php -v 检查Web App是否安装PHP语言。

如果需要安装python或者nodejs,点击 Site extensions->Gallery.

拖动滚动条,寻找需要安装的语言和第三方工作包。找到 Composer 工具包,点击 + 按钮。

等待片刻后,在 Installed 栏中出现我们要安装的工具包。

在返回Debug->console目录,在home/SiteExtensions下,我们可以看到Composer文件目录。

输入composer指令,此时工具包已经安装完成。

3. 持续集成和部署

编程语言和相关工具包是开发Web应用的基础,我们可以将代码部署到微软Web App PaaS服务中。Azure 公有云提供了包括Visual Studio Online、Git、Github、FTP等多种持续集成和部署的方式。虽然在Azure Stack PoC环境中,我们暂时只能测试 local gitrepository和external repository两种模式,但相信在GA之后,会有更多的第三方provider为开发者提供优质的软件服务。

在本案中,我们使用Github作为Web App的代码版本管理工具,进行简单的持续部署和开发的工作。
选中 Web App->Deployment credentials , 在此界面设置 Git 或者 FTP 的用户认证信息。这里,输入自己的Github账户密码,点击 确定 

然后,选择 Deployment options, 选择 external repository

填写相关的Repository URL,同时选择 branch 分支。

笔者自己开发了一个基于php和mysql的简单web应用,想要了解朋友,可以下载代码。地址:https://github.com/Penergy/AzSwebDemo01.git

点击 确定 后,Azure Stack中的Web App便会自动更新代码。

下图显示了第一次更新后的结果。

值得一提的是在Azure Stack PoC环境中无法使用Deployment Slots。而这个功能的作用是定时从代码库中读取代码,这对于持续集成和部署作用不可言喻。相信在GA之后,开发者要想的功能会逐步的上线。我们仪电集团也会跟进后续的研究和开发。下图为上传的网站。

在本地环境中,我们更新了部分代码,上传到Github中。在Azure Stack Web App中,同步代码。

底下的按钮变成 Hello 字样。

4. 连接数据库服务

现在我们已经创建了Web App环境,上传代码,完成了网站静态页面的显示。接下来,将介绍Web App 如何与数据库对接,进行动态展示。

Azure Stack提供了众多的数据库存储环境,如Azure Table、SQL Server这样的微软产品。同时,微软也引入了第三方的Provider。对于熟悉LAMP网站开发的朋友,微软提供了MySQL数据库服务。在我们的案例中,也将为大家介绍Web App与MySQL链接实现持久化。

a. 创建MySQL Database (preview)

首先创建一个MySQL Database服务。点击 New -> Data + Storage -> MySQL Database (preview),输入基本信息。


创建之后,新建的MySQL数据库会显示在所属的Resource Group(资源组),此时数据库已经创建成功。

b. 使用MySQL Workbench或者Navicat

对于新建的数据库,我们需要为数据库新建 Schema(模式),并从中插入表格。开发者可以使用不同的工具,如MySQL Workbench、Navicat或者是其他指令行软件。这里为了方便,我们使用Navicat。
首先,进入新建的MySQL Database。在 Essential 中,获取 Connection String.

server=192.168.102.15;password= ** ** ** ** ** **;
user id=root;port=3306;database=pengtestdb02

从上述字符串中,我们获得了几个重要信息,如server(数据库服务器ip地址)、user id(数据库用户名),port(端口号),database(数据库名称)。出于对credential信息保护的缘故,Azure Stack了屏蔽密码这类敏感信息。

打开Navicat,填写之前获取的信息,点击 连接

进入数据库,数据库已经显示在软件中,我们要做的就是创建数据表。这里,创建名为 users 的数据表,分别添加idusernameemail三个字段。

这样,创建数据表的工作做完。MySQL Database Server已经开始运转。

c. Web App连接数据库

为了让Web App连接已经创建好的MySQL服务器,我们需要将获取的Connection String填写到Web App中的 Application Settings 中。

在Application Settings中,有 Connection Strings 一栏,在这个表格中可以填写任意参数。这个由Key和Value组成的变量,会作为环境变量存在于Web App中。

在PHP代码中,我们使用如下代码,获取环境变量。

$appsetting = getenv("MYSQLCONNSTR_test");$conn = connectForAzure($appsetting);

对于不同的数据库,Web app提供了不同的命名规则:

数据库类型 Key值 变量名称
Sql Databases sqldbdemo SQLAZURECONNSTR_sqldbdemo
SQL Server sqlserverdemo SQLCONNSTR_sqlserverdemo
MySQL mysqldemo MYSQLCONNSTR_mysqldemo
Custom customdemo CUSTOMCONNSTR_customdemo

在我们的案例中,点击 Hello 按钮之后,跳转到动态页面。开发者可以操作向数据库输入用户名和邮箱信息。

5. 可用性全局缩放

微软Web App PaaS提供两种自动全局缩放模式,一种是 扩大(Scale Out),另一种是 增加(Scale Up)

扩大(Scale Out)

用于Web 应用访问的不确定性,可能导致不断变化的使用需求。Azure Stack中的扩大就是通过增加虚机实例的个数,使用负载均衡做到按需访问。这样做的好处在于动态分配资源,不用浪费资源。

下面是Scale Out界面,我们可以增加或者减少虚机实例。

增加(Scale Up)

通过改变App Service Plan的类型来增加单个虚机实例的虚机资源,包括 CPU个数、内存大小、存储资源 等。

不同于公有云Azure中的App Service服务, Azure Stack 管理员portal提供了一种配置App Service服务各种角色性能的可能性。

我们可以为App Service 新增角色,包括Web Worker、Front End、Publisher、Database、File Server、Controller等角色。这里新增 Worker Tier角色。

对于新增的角色,选择 SharedSmallMediumLarge等角色。

6. 总结

微软的Web App PaaS服务,作为一种面向云端的快捷、有效的的开发模式之一。相较于传统Web App开发需要搭建服务器环境、安装相关的编程语言、配置相应的软件包和数据库而言,开发者只需要关注业务逻辑和代码本身,有效的提高了开发的质量和速度。

本文通过一个简单案例的实现,介绍了Azure Stack中Web App PaaS服务的开发过程。其目的是为开发者介绍如何在Azure Stack中进行应用的开发。希望开发者了解Azure Stack提供的服务和能力,更好的帮助开发者从应用开发、代码实施部署、需求动态分配、PaaS服务协同等四个角度,了解Web App PaaS功能。同时,我们也对Azure Stack和Azure Mooncake版本做了简短的对比介绍,Azure Stack提供了目前比较热门的Serverless服务- Function App,并为云管理员提供 动态分配App Service资源 的权利。可以说这两点是Azure Stack特有的亮点之一。

作者:彭毅程



如果对文章内容感兴趣请联系: 
仪电(集团)有限公司Azure Stack技术支持团队( [email protected] /[email protected])
转载请注明:转载自Azure Stack Notes博客(http://a-stack.com)

时间: 2024-10-13 16:20:12

Azure Stack技术深入浅出系列5:在Azure Stack上使用Web App PaaS服务及其背后原理窥探(开发案例)的相关文章

Azure Stack技术深入浅出系列1:Azure Stack与Azure的有QoS保证的网络联通实现方法和对比测试

源自Azure的Azure stack作为一款业界唯一的和领先的公有云平台一致的混合云平台,能够帮助企业客户从自有数据中心交付Azure云服务.它作为微软混合云战略中的重头戏,官方宣称其将在今年年中GA了.上海仪电集团高度重视这一产品,同时成立了一个专门的团队来跟踪最新的Azure Stack技术动态并积极推动Azure Stack在中国落地.在今后一段时间内容,我们将在过去一年间追踪Azure Stack的技术内容汇总为Azure Stack技术深入浅出系列文章分享给对微软混合云产品感兴趣的相

Azure Stack技术深入浅出系列4: Azure Stack自定义虚拟机镜像和Gallery Item

Azure Stack环境中服务的提供者或运营者从微软变成了Azure Stack集成环境的运营者,通过Azure Stack的MarketPlace,我们可以根据用户的特定需求,提供一些定制化的应用,获得与公有云不一样的用户体验.本文将主要介绍如何在Azure Stack的MarketPlace中如何添加一个自定义的虚拟机进行并定制满足需求的Gallery Item,同时通过自服务的模式提供给业务的消费者. 这一篇,我们将探讨以下几个问题: 如何制作自定义镜像 从自定义镜像创建虚拟机的几种方式

Azure Stack技术深入浅出系列3: Azure Stack运维工具Azure Stack Tools的使用及实战

源自 Azure 的 Azure stack 作为一款业界唯一的和领先的公有云平台一致的混合云平台,能够帮助企业客户从自有数据中心交付 Azure 云服务.作为<Azure Stack 技术深入浅出系列>的第三篇文章,本文将介绍 Azure Stack 部署完成以后,如何快速的管理和维护这套系统环境,包括虚拟机的管理.远程 VPN 连接.传输部署镜像.远程监控等.本文将通过一套 Azure Stack 运维工具集--Azure Stack Tools 来尝试使用和管理 Azure Stack

Azure Stack技术深入浅出系列2:谈Azure Stack在私有云/混合云生态中的定位

一. 国内私有云业务前景 就在今年4月,工信部发布<云计算发展三年行动计划(2017-2019)>,提出2019年云计算产业规模将达到4300亿.云计算已成为国家新一代信息产业发展的重要战略.从中国整个IT投入来看,政府.央企.国企以及大型民企占据主要份额,这些企业都意图拥抱云计算以提升生产力,但出于安全的考虑,又暂时对公有云有所顾忌.因此未来几年,私有云业务仍然会占据中国大部分市场份额. 根据Right Scale发布的<2017 State of the CloudSurvey>

Azure IoT 技术研究系列5-Azure IoT Hub与Event Hub比较

上篇博文中,我们介绍了Azure IoT Hub的使用配额和缩放级别: Azure IoT 技术研究系列4-Azure IoT Hub的配额及缩放级别 本文中,我们比较一下Azure IoT Hub和Event Hub,同时启动Azure Event Hub(事件中心)的研究. Azure IoT Hub的另一个主要应用场景是从设备侧接收遥测数据. 与 Azure IoT Hub一样,Azure Event Hub是一个事件处理服务,主要用于向云端提供大规模的事件与遥测数据入口,并且具有较低的延

Azure IoT 技术研究系列2-设备注册到Azure IoT Hub

上篇博文中,我们主要介绍了Azure IoT Hub的基本概念.架构.特性: Azure IoT 技术研究系列1-入门篇 本文中,我们继续深入研究,做一个起步示例程序:模拟设备注册到Azure IoT Hub, 设备到云通信,云到设备通信. 整体篇幅较大,我们先来第一步:将模拟设备注册到Azure IoT Hub. 首先,我们需要有一个联网的设备,例如树莓派.Win10 IoT设备等等,只要能联网,Azure IoT Hub有编程SDK即可,为了方便演示,本篇中我们做了一个模拟设备: TeldP

Azure IoT 技术研究系列1-入门篇

物联网技术已经火了很多年了,业界各大厂商都有各自成熟的解决方案.我们公司主要搞新能源汽车充电,充电桩就是我们物联网技术的最大应用,车联网.物联网. 互联网三网合一.作为Azure重要的Partner和使用者,我们对Azure的IoT方案也是非常期待的,因此,最近计划研究一下Azure的IoT技术,同时将研究的成果分享给大家. 以本文作为IoT入门的第一篇吧. IoT:Internet of Things,即连接一切. Azure提供了Azure IoT Hub:直译为Azure的物联网中心. A

Azure IoT 技术研究系列1

物联网技术已经火了很多年了,业界各大厂商都有各自成熟的解决方案.我们公司主要搞新能源汽车充电,充电桩就是我们物联网技术的最大应用,车联网.物联网. 互联网三网合一.作为Azure重要的Partner和使用者,我们对Azure的IoT方案也是非常期待的,因此,最近计划研究一下Azure的IoT技术,同时将研究的成果分享给大家. 以本文作为IoT入门的第一篇吧. IoT:Internet of Things,即连接一切. Azure提供了Azure IoT Hub:直译为Azure的物联网中心. A

远程调试 Azure Web App

当我们将 Web App 部署在 Azure 上时,如果能够实现远程调试,将会极大的提高我们修复 bug 的效率.Visual Studio 一贯以功能强大.易用著称,当然可以实现基于 Azure 应用的创建.发布和调试.接下来就让我们一起看看如何使用 Visual Studio 远程调试部署在 Azure 上的 Web App,以及一些常见的注意事项. 文章来源:葡萄城产品技术社区 注意工具的版本 在开始正文前让我们先检查一下使用的 Azure SDK 版本和 Visual Studio 版本