从 .Net Framework 到 Windows 和 Linux 容器的 .Net Core 微服务

旧有的 .Net Framework 应用程序仍在企业环境中发挥着重要作用,其中大部分是基于 .Net framework 的单体应用。调查显示,不少公司对 .Net Core 微服务和容器技术有兴趣。 然而,让 .Net framework 和 .Net Core 共同存在并相互协作,还需要一些时日。大多数公司必须面对的挑战之一在于,如何构建一个能够供两代使用的统一支持基础架构和平台。 在本次演讲中,Hongxi 将展示一个实际案例并介绍包括以下内容的解决方案:1.)使用 Kubernetes 实施和管理的 Windows Server 2016 容器环境和 .Net Framework 服务;2.) 在 Linux 容器中运行的 .Net Core 服务;3.) Kubernetes 支持的 Windows 容器部署中的一些技术挑战。
展开查看详情

1. 案例分享 从传统.NET单体到.NET Core微服务架构 马洪喜 行云创新CTO Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 0

2.行云创新CTO—马洪喜  过去十年一直聚焦于云计算产品研发和项目交付  为最早一批金融、电信行业云计算提供咨询服务  热衷于参加社区活动,连续三年荣获微软MVP 称号  曾供职于 Oracle 、Citrix 、Rancher Labs  现任行云创新 CTO,负责公司开发云产品研发和交付 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 1

3. 从一个真实的案例说起 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 2

4. X项目曾经面临的挑战 X项目是基于.NET构建的一套复杂的远程实验交付系统。自2011年以来,从最早的远程实验接入,到后来的的复杂实验业务场景交 付,其重要性和担当的业务价值越来越大,但其技术架构发展较为缓慢,无法高质量满足多变的业务需求,在运行和维护中由于陈 旧架构导致的问题较为突出,也不符合互联网化大背景下的技术架构发展方向。 1 X项目业务发展 2 挑战一:业务需求越来越难以满足。X项目交付量从最初几千班 业界技术架构变迁 天,发展到几万班天,要处理多种业务。业务需求越来越复杂、差异化明显 X项目运行维护挑战 且具有多变性。相对地,X项目架构在过去四年内并未做任何升级改造,客 户需求多以“打补丁”的方式满足,难以继续满足未来业务发展需求。 X项目架构发展情况 3 1 2012年3月, X项目二 期:引入拓扑图式实验交 互模式,增强整体可用 挑战二:部分技术已经逐渐落后于行业发展。从行业趋势来 性。 讲,企业业务正面向互联网化转型,在 “高频率版本发布”、 “更加注重 用户体验”等目标驱动下,企业架构更多的开始学习BAT,采用开放平台和 技术,如 Linux, Apache, MySQL,Docker等;同时,在开发运维模式上,企 业正在由传统的开发和运维分离,向开发运维一体化即DevOps转变。 2 挑战三:运维压力越来越大。当前架构涉及到的组件全部是自行部 2011 2012 2013 2014 2015 2016 署和维护,平台、数据库、监控、应用配置、大数据等,对运维团队提出了 较高的要求。具体表现为:底层组件无法跟随上层业务压力变化而变化,出 2012年8月,X项目三期: 现问题后定位过程时间长且难度高。 2011年5月,原型验证阶 X项目架构在过去四年主要 引入执行引擎,逻辑分 段:引入虚拟应用交付技 是修修补补,没有实质性 离,与设备管理平台对接 术。 等。 Copyright © 2016 Cloud To Go 变化。 Confidential – do not redistribute without written permission from Cloud To Go 3 3

5. 代码可 维护性 项目问题具体分析 较差 执行力 不足 新版本 上线问 2016年8月,行云顾问组对X项目进行了评估,与 题较多 ,开发 全球访 包括管理组、需求分析、PM、架构师、开发、测 沟通理 返工问 接口不 问速度 解变形 够丰富 试、运维等多位同事进行了访谈,特别就不同角 题突出 架构未 慢,体 验不佳 无规范 色对项目的痛点进行了识别,其中技术架构与流 演进, 不能满 标准 程相关问题较为突出,组织和管理方面问题也占 用户需 足未来 采用临 求响应 需求 有一定比例。 慢 时技术 手段 多个版 虚拟机 由架构陈旧引发的问题 本同时 无法迁 维护, 开发测 IT技术架构问题 移、资 源利用 试 压力巨 不充分 大 需求不 清晰, 应用扩 升级导 分析不 展性不 致线上 虚拟机 足 强 服务中 等资源 断 混乱 构建测 测试不 试环境 充分 、测试 上线调 进度缓 试时间 慢 长 流程、管理、组织问题 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 4

6.X项目业务发展诉求 功能强 体验优 服务广 监管严 成本低 发版要快 云要用好 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 5

7.技术解决思路 瀑布模式 DevOps 单体架构 微服务 .NET Framework .NET Core 虚拟机 容器 单一云 多朵云 Windows Linux 商业专有 开放共享 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 6

8. 微服务是X项目重要的技术架构变革 传统的单体应用架构与DevOps方法格格不入,特别是X项目经过数年发展,其单体架构已经成为项目发展的关键阻碍。 无法有效演进,阻碍对需求 模块间依赖性强,相互影响 的快速匹配 测试成本高,测试不充分, 架构修修补补,越发复杂 质量无法保证 上线时间长,成本高,问题 核心技术组件成为发展瓶颈 较多 单体架构 DevOps 持续交付 模块间松耦合,相互独立 持续演进,快速达成需求 测试范围明确,促成自动化 架构灵活扩展,清晰明了 测试提高效率 只上线变更的服务,通过自 按功能点打散,解除瓶颈 动化手段形成持续部署能力 微服务架构 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 7

9..NET Core是X项目重要的技术实现变革 使用.NET CORE的开发者比例 使用.NET CORE的业务场景 使用.NET CORE的开发工具 已经使用 计划使用 暂无计划 企业应用 互联网后端 其它 VisualStudio VS Code 其它 暂无计划 其它 8% 6% 企业应用 其它 27% VS Code 已经使用 37% 26% 44% 计划使用 VisualStudi o 48% 68% 互联网后端 36% 数据来自张善友老师《2018 .NET开发者调查报告》 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 8

10.变革中需要重点考虑的几个主要问题 微服务改造 .NET Core 支撑平台 切入点 迁移难度 如何搭建 从核心业务还是周边业 现有.NET都能迁移 怎么样利用好容器相关 务开始 到.NET Core吗 技术支撑变革 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 9

11. X项目微服务改造的切入点 对于X项目,微服务改造并非‘推倒重来’,而是在过去几年运营的积累上循序渐进完成。‘实验预订’被选为微服务改造的切入点。 前端 为什么选择‘实验预订’业务?  核心的主线业务流程,覆盖30%以上业务;  完成‘实验预定’的微服务,其余部分迎刃而解;  可以与现有系统较好地过渡,用户无感知; 设备查询 设备面板 实验信息 设备预定 认证 通知  优先解决已成为瓶颈的技术组件,利于后期发展。 服务 图服务 服务 服务 服务 服务 基础数据 实验模板 业务数据 域配置数 组网 虚拟应用 账号 虚拟机 服务 服务 服务 据服务 服务 服务 服务 服务 微服务拆分的原则是什么?  功能完整性、职责单一性; 基础数据 实验模板 业务数据 域配置 虚拟应用 账号 虚拟机  促进可重用性; DB DB DB DB DB DB DB  逐步优化,迭代演进;  接口协议先行,保证兼容性。 设备管理 活动目录 X项目‘实验预定’业务微服务架构 服务 服务 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 10

12..NET Framework to .NET Core  已有.NET代码和.NET Core的兼容性如何  哪些类型服务需要继续在.NET Framework上运行  数据库选型的考虑,依然SQL Server还是要切换到MySQL  面对新的语言、新的架构,开发人员知识转换难度  设立团队的一些考虑,对需求的准确理解是“重中之重” Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 11

13. 处于技术变革中的应用, .NET和.NET Core可能会并存一段时间 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 12

14. 微服务支撑平台的必要性 向微服务架构的转变,仅仅在代码设计上做出改变是不够的,必须结合支撑微服务的平台能力才能让微服务落地、发挥出它的功效。 传统 微服务 对支撑平台的依赖程度 运行环境 虚拟机 容器技术 构建方式 手动编译 持续集成 流程 生产上线 人工部署 自动发版 诉 求 工具 微服务规模(即业务规模) 业务响应 被动模式 自动伸缩 5 10 20 研发成果 互不透明 共享复用 仅有一两个微服务时,似乎手工操作 标准 也可以解决,随着微服务规模扩大, 发版频率几何增多,变更和运维压力 代码管理 资源隔离 上收统管 大大增加。 支撑平台 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 13

15.容器——更轻量、更快速、更灵活 极低的开销 轻量 高效使用资源 虚拟机 容器 运行在系统内核上 快速 业务秒速启动 易于迁移 灵活 易于管理 虚拟机 容器 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 14

16. Microsoft Linux Microsoft Docker Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 15

17.挑战:如何管理好多朵云和多操作系统下的容器环境? Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 16

18.X项目中多云交付的三种典型场景 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 17

19.Kubernetes关注的是单一集群内容器管理 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 18

20.Federation (联邦) 项目为多集群而生,但还远未可用 “Keep it simple, don't bake too much into 14年开发至今依然Alpha Federation Api server…Migrating Azure to google is not a question for Federation” 技术主张和实际需求偏差巨大 ——Kelsey Hightower, Google 社区活跃度越来越低 对AWS and GKE/GCE严重依赖 V1已经废弃,V2才刚刚开始 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 19

21.X项目采用的多容器集群技术架构 K8S之外的能力组件 业务接入网关 部署于集群的管理Agent 多集群应用部署和调度控制器 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 20

22.支持跨区域、跨云商、跨操作系统的容器管理和应用交付 X项目 .NET Core .NET frmwk 微服务 微服务 11个 6个 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 21

23.X项目采用的DevOps和微服务支撑平台总体架构 1 2 3 4 5 为创新加速 的开发服务 应用架构设计器 前端设计器 Web IDE 自动化测试 代码管理 云应用商店 6 以业务为中心 的PaaS平台 基于Docker 采用K8S 多集群和多云 Windows, Linux 服务治理和 全面支持 容器技术 管理容器 应用交付 容器统一管理 安全保护 DevOps方法论 私有云 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 22

24.演示:混合管理Linux, Windows容器 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 23

25.X项目成果 主体开发语言 微服务模块个数 .netcore 17 2.0 服务协议 数据库 承载技术 HTTP MySQL Docker RESTful Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 24

26.X项目验证的收益 分工清晰、 高度可重用 多种开发语言 采用简单标准 协同高效, 模块化 及开放技术 的协议进行 团队新成员 快速交付业务 符合发展趋势 服务间调用 快速开始 一键 灰度发布功能 持续集成让测 根据压力不同 随需而用的 让新版本上线 试和发版 快速交付到 有针对性的伸 基础服务 的复杂度 高度自动化 任意云端 缩微服务 大大降低 Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 25

27. 谢谢大家! 技术讨论微信:cloudtogo Copyright © 2016 Cloud To Go Confidential – do not redistribute without written permission from Cloud To Go 26