先介绍了一下公有云计算环境下的一些特点,再根据这些特点探讨一下作为云计算用户而言,如何对应用程序做好自动化部署和水平扩展(弹性计算)的问题。阅读本文需要有一定的云计算知识、开发运维知识。

公有云环境的优势及其特点

公有云为企业用户或个人用户(以下统称为用户)可提供三种服务,基础服务、应用服务和运维服务。

基础服务,为用户节省了服务器、网络、存储等硬件成本以及这些硬件相关的运维成本,通过虚拟化这一核心技术能让用户通过公有云服务平台使用和管理自己硬件资源。

应用服务,为用户提供可用性和可靠性等系统级解决方案,如负载均衡、智能DNS、CDN等了;为用户的软件等应用程序提供应用级解决方案,包括文件共享、对象存储、关系型/非关系型数据库等。

运维服务,为用户提供安全防护、监控报警、虚拟机备份等功能,保证用户数据的机密和安全。

根据这些公有云的特点可以看出,用户将应用程序部署在公有云是非常方便和容易的,既能降低硬件成本和运维成本,又能利用云服务提供商提供的各种应用服务,又对用户的用户屏蔽了服务的具体细节,提升了用户体验和用户满意度(具体不一一详细列出)。

用户要做什么

用户要公有云是为用户本身或者用户的用户来提供服务的。用户有了公有云环境后,作为用户而言,要解决的问题的核心就在于如何在尽可能降低成本的情况下将用户体验和用户满意度最大化。

尽管相对于传统的计算和服务模式而言,公有云环境的是相当廉价的,但当用户的用户达到一定的数量时,几个云主机就不足以承担巨大的用户量,造成用户体验和用户满意度急剧下降,为此用户需要更合理的软件架构和服务提供方式。

关于系统架构,此处特指硬件基础架构已经由所选择的云计算环境所决定,因此暂时不做分析。

软件架构的改良包括提高单个软件或应用程序自身的可用性和可扩展性:能尽可能的选择合适的模型承载更多服务但占用更少的软硬件资源;软件或应用程序支持一定规模的水平扩展,以便于服务更多的用户。

服务提供方式,这个是说更好的部署升级方式,对用户而言产品/服务的变更升级变得更加的无缝和细腻,对开发人员和运维人员来说,要更加快速更加省力的开发、部署方式。

只有以上两者同时具备才能做好、维护好一个产品。

软件架构的改良

由于自身是运维出身,只能从系统架构和运维的角度对软件的开发上提出一些合理化的建议和要求,无非就是上面提到的提高单个软件或应用程序自身的可用性和可扩展性,这是为用户提供服务的基础,也是服务的开始。

自动化(部署、升级、变更等)

一套产品可能是由多个软件或应用程序共同完成的,而这些软件和应用程序可能用不同的语言或者工具开发的,因此对自动化部署的要求可能比较高,比如一套自动化部署工具可能不能满足由不同语言和开发工具开发出的软件和应用程序。针对操作系统的云端自动化部署提出了虚拟机模板(镜像)的概念,而针对应用程序自然也有虚拟化的相关概念,例如最近火热的docker这一应用虚拟化工具。

引入之前总结的IT架构概括,“原先传统模式是物理主机、操作系统和业务应用。当虚拟化、集群和高可用等技术发展较为成熟时,传统模式就形成了三种演变模式。第一种纵向发展(分层解耦合),典型的就是虚拟化的分层技术;第二种横向发展(单层(个体)解耦合),典型的就是无状态,无状态的特性使得横向扩展和动态伸缩变得更加容易,具有无关性(无依赖性)和无差别性(一致性);第三种就是混合发展,即纵向和横向都有,例如典型的例子就是硬件采用Cisco UCS结合VMware vSphere,然后再结合优秀的软件架构,实现高可用的业务系统。”

还是以分层为例,除了虚拟化中所提到的分层技术还应该不能忘记OSI和TCP的分层思想。毫无疑问,应用层是OSI和TCP的顶层,但应用层以上是什么还能有什么就没有一个固定的标准和模型来概括。可以将企业管理人员、最终用户、开发人员和运维人员等都容纳到应用程序之上。为了切近问题的实际,把应用层看作是各种软件和应用程序的基础(如应用层为软件和应用程序提供协议),可以把软件和应用程序拿到应用层之上,而自动化部署以开发运维的角度就可以拿到软件和应用程序之上。

应用的虚拟化可以说将应用层以上的软件和应用程序再虚拟出一层,有了应用虚拟层,所有的应用程序可以认为对自动化部署是无差别的,屏蔽了软件和应用程序的差异,所有的软件和应用程序对部署而言都是透明的,这样仅有一些简单配置的一套自动化部署工具或许就能实现部署、升级和变更的自动化。

TODO: 此处应该有图。

关于Docker

也许还有其他应用虚拟化方案,但docker可以被认为与软件和应用程序靠的最近的虚拟化提供工具。

借助docker可以实现在单一操作系统中同时快速部署多个隔离的应用,尽管这些应用可能需要持有不同的访问端口。

题外话:如果能有什么方法实现docker容器内部与宿主主机进行无端口无socket式的通信方法,也许会更让人觉得不可思议或是更不可理喻吧。

tag:差异化的自动化部署,IT架构总结,公有云计算优势和特点,应用虚拟化,docker自动化部署

--end--

本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1690176,如需转载请自行联系原作者

公有云环境下应用程序的自动化部署与水平扩展问题相关推荐

  1. 在Windows Azure公有云环境部署企业应用

    作者 王枫 发布于 2014年4月5日 企业内部应用转换为在线服务 Windows Azure已经成为众多IT服务提供商们热议的话题,其中,有的认为只有提供互连网用户服务的应用才适合放在公有云环境内运 ...

  2. 如何将你在公有云环境中的漏洞找出来?

    渗透测试可以帮助企业将他们在公有云环境中的漏洞找出来.但是针对AWS.谷歌和Azure的测试需求有什么不同呢? 很多企业IT部门使用云渗透测试来确定和解决他们在云计算环境中的潜在安全缺陷.但是,在公有 ...

  3. 如何找到 AWS 环境下应用程序中易于得手的漏洞?

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 本文作者介绍如何从AWS环境下的应用程序中找到易于发现的漏洞.如下是全文. 毋庸置疑,云环境已主导当前市场.服务提供商中,AWS 的地位正在上升 ...

  4. 多线程环境下,程序真是危机四伏

    姿势在不断的更新迭代, 太卷了. 你管这也叫线程安全? 最近大意了,竟然想将<面试官:实现一个带值变更通知能力的Dictionary>一文中的临界锁只应用到写操作. 内心旁白:读操作又不会 ...

  5. 如何在Linux桌面环境下自动启动程序?

    2019独角兽企业重金招聘Python工程师标准>>> 如何在Linux桌面环境下自动启动程序? 2014-01-06 11:24 布加迪编译 51CTO.com 字号:T | T ...

  6. 快捷键关闭c语言程序,C语言:VS环境下的程序快捷键大全以及Windows快捷键命令...

    //如果要找程序调试的快捷键,请看博客"C语言:VS环境下的程序调试快捷键" Alt+空格+R:恢复最小化窗口           Alt+空格+N:最小化当前窗口 Alt+空格+ ...

  7. 部署docker swarm(解决公有云环境网络问题)

    文章目录 swarm部署 一.节点docker环境安装 二.swarm环境安装 1. swarm 管理节点初始化 2. slaver1节点加入swarm集群 3. 服务发布 4. 管理命令 5. 网络 ...

  8. Docker环境下的前后端分离部署与运维 脚本

    <Docker环境下的前后端分离部署与运维>脚本 文章目录 <Docker环境下的前后端分离部署与运维>脚本 一.Docker虚拟机常用命令 二.安装PXC集群,负载均衡,双机 ...

  9. 一个关于laragon环境下多个laravel项目部署问题

    一个关于laragon环境下多个laravel项目部署问题 开发环境说明: 需求说明: 请问应该如何配置? 自己有做过如下尝试: 尝试1:在apache的httpd.conf里添加代码: 尝试2:直接 ...

最新文章

  1. 常见的“公共标志和说明”英文表达
  2. 计算机基础学习必看书籍汇总
  3. 2012-5-3 线程和进程的区别
  4. 绝对Linux服务器管理利器webmin
  5. 【PAT乙级】1088 三人行 (20 分)
  6. 关系数据可视化gephi
  7. MVC View 中 html 属性名与关键字冲突问题的分析与解决
  8. C++ 查看输入流中的下一个字符
  9. 记录一次docker项目连接不上docker mysql的问题
  10. Ubuntu16.04 安装Gitlab
  11. 使用FileDialog查看文件内容
  12. ODP.NET 之 ExecuteNoQuery 执行 Merge into 返回值
  13. C++ OS 网络 数据库 (面试)
  14. 斗鱼php开发面经,斗鱼面经
  15. 街头篮球服务器ip地域位置图,浅谈《街头篮球》韩服与国服六个位置的不同之处...
  16. Android Mars XLog的编译
  17. js 递归创建文件夹
  18. python爬取凤凰新闻网_python凤凰新闻数据分析(一)python爬虫数据爬取
  19. Alphapose论文代码详解
  20. 在计算机领域中通常用英语单词bit来表示,1在计算机领域中,通常用英文单词byte来表示资料...

热门文章

  1. NSUserDefaults的用法
  2. 在Android中进行单元测试遇到的问题
  3. tomcat报 Context [] startup failed due toprevious errors
  4. 拨号连接或 ××× 连接的错误代码列表
  5. 首次成功实施 XSS 攻击,盗取目标网站大量 VIP 帐号
  6. 运行hadoop fs -ls 命令显示本地目录问题
  7. WCF实现RESTFul Web Service
  8. 如何终止正在在发送的ajax请求
  9. cisco PIX防火墙的配置及注解完全手册
  10. jupyter安装与初探