随着云计算技术的不断普及,越来越多的企业和组织选择将业务部署在云平台上。云服务器作为云平台的基础设施,在云基础设施管理中扮演着至关重要的角色。利用云服务器API接口,可以实现云基础设施的端到端管理,包括服务器资源管理、网络配置、存储管理、安全控制等。
云服务器API接口介绍
云服务器API(Application Programming Interface)接口是一组用于管理云服务器的编程接口。通过调用这些API接口,开发者可以自动化云服务器的管理任务,从而提高效率和灵活性。
云服务器API接口一般分为以下几类:
- 实例管理:创建、删除、启动、停止、重启云服务器实例
- 网络管理:创建、删除、配置虚拟网络、子网、安全组
- 存储管理:创建、删除、挂载、卸载云硬盘
- 安全管理:配置防火墙、安全组、访问控制规则
- 监控管理:获取云服务器的性能和健康状态数据
- 计费管理:查询云服务器的使用情况和费用
利用云服务器API接口实现端到端管理
利用云服务器API接口,可以实现云基础设施的端到端管理,主要包括以下几个方面:
1. 服务器资源管理
通过调用实例管理API接口,可以创建、删除、启动、停止、重启云服务器实例。同时,还可以修改云服务器的配置,如CPU核数、内存大小、磁盘空间等。
2. 网络配置
通过调用网络管理API接口,可以创建和删除虚拟网络、子网、安全组等网络资源。还可以配置路由表、防火墙规则,实现网络隔离和安全防护。
3. 存储管理
通过调用存储管理API接口,可以创建和删除云硬盘,并将其挂载到云服务器实例上。同时,还可以对云硬盘进行快照、备份和恢复等操作。
4. 安全控制
通过调用安全管理API接口,可以配置防火墙、安全组和访问控制规则,保护云服务器实例免受网络攻击。同时,还可以进行安全扫描和漏洞修复,确保云基础设施的安全。
5. 监控管理
通过调用监控管理API接口,可以获取云服务器实例的性能和健康状态数据,如CPU使用率、内存使用率、磁盘IO等。这些数据可以帮助管理员及时发现和解决问题,确保云基础设施的高可用性和稳定性。
6. 计费管理
通过调用计费管理API接口,可以查询云服务器实例的使用情况和费用。这些数据可以帮助管理员进行成本控制和优化,确保云基础设施的合理使用。
利用云服务器API接口实现云基础设施端到端管理的优势
利用云服务器API接口实现云基础设施的端到端管理具有以下优势:
- 自动化管理:可以自动化云服务器的管理任务,减少人工操作的错误,提高管理效率。
- 灵活性和可扩展性:可以根据业务需求灵活地调整云服务器的配置和资源,支持业务快速发展。
- 成本优化:可以优化云服务器的使用,避免不必要的资源浪费,降低云基础设施的成本。
- 安全性增强:可以统一管理云基础设施的安全策略,增强云基础设施的安全性。
- 可视性和可控性:可以实时监控云服务器的状态和使用情况,
什么是云服务
云服务是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。
云是网络、互联网的一种比喻说法。
过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。
云服务指通过网络以按需、易扩展的方式获得所需服务。
这种服务可以是IT和软件、互联网相关,也可是其他服务。
它意味着计算能力也可作为一种商品通过互联网进行流通。
背景云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变。
云计算(Cloud Computing)是分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
2特点通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将与互联网更相似。
这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。
好比是从古老的单台发电机模式转向了电厂集中供电的模式。
它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。
最大的不同在于,它是通过互联网进行传输的。
3形式IaaS:基础设施即服务IaaS(Infrastructure-as-a- Service):基础设施即服务。
消费者通过Internet可以从完善的计算机基础设施获得服务。
PaaS:平台即服务PaaS(Platform-as-a- Service):平台即服务。
PaaS实际上是指将软件研发的平台作为一种服务,以SaaS的模式提交给用户。
因此,PaaS也是SaaS模式的一种应用。
但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度。
SaaS:软件即服务SaaS(Software-as-a- Service):软件即服务。
它是一种通过Internet提供软件的模式,用户无需购买软件,而是向提供商租用基于Web的软件,来管理企业经营活动。
按需计算顾名思义,按需(on—demand)计算将计算机资源(处理能力、存储等)打包成类似公共设施的可计量的服务。
在这一模式中,客户只需为他们所需的处理能力和存储支付费用。
那些具有很大的需求高峰并伴有低得多的正常使用期的公司特别受益于效用计算。
当然,该公司需要为高峰使用支付更多,但是,当高峰结束,正常使用模式恢复时,他们的费用会迅速下降。
按需计算服务的客户端基本上将这些服务作为异地虚拟服务器来使用。
无须投资自己的物理基础设施,公司与云服务提供商之间执行现用现付的方案。
按需计算本身并不是一个新概念,但它因云计算而获得新的生命。
在过去的岁月里,按需计算由一台服务器通过某种分时方式而提供。
4应用云物联“物联网就是物物相连的互联网”。
这有两层意思:第一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;第二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信。
物联网的两种业务模式:1.MAI(M2M Application Integration), 内部MaaS;2.MaaS(M2M As A Service), MMO, Multi-Tenants(多租户模型)。
随着物联网业务量的增加,对数据存储和计算量的需求将带来对“云计算”能力的要求:1.云计算:从计算中心到数据中心在物联网的初级阶段,PoP即可满足需求;2. 在物联网高级阶段,可能出现MVNO/MMO营运商(国外已存在多年),需要虚拟化云计算技术,SOA等技术的结合实现互联网的泛在服务:TaaS (everyTHING As A Service)。
云安全云安全(Cloud Security)是一个从“云计算”演变而来的新名词。
云安全的策略构想是:使用者越多,每个使用者就越安全,因为如此庞大的用户群,足以覆盖互联网的每个角落,只要某个网站被挂马或某个新木马病毒出现,就会立刻被截获。
“云安全”通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,推送到Server端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云存储云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。
当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。
5优缺点优势云开发的优势之一就是规模经济。
利用云计算供应商提供的基础设施,同在单一的企业内开发相比,开发者能够提供更好,更便宜和更可靠的应用。
如果需要,应用能够利用云的全部资源而无须要求公司投资类似的物理资源。
说到成本,由于云服务遵循一对多的模型,与单独的桌面程序部署相比,成本极大地降低了。
云应用通常是“租用的”,以每用户为基础计价,而不是购买或许可软件程序(每个桌面一个)的物理拷贝。
它更像是订阅模型而不是资产购买(和随之而来的贬值)模型,这意味着更少的前期投资和一个更可预知的月度业务费用流。
部门喜欢云应用是因为所有的管理活动都经由一个中央位置而不是从单独的站点或工作站来管理。
这使得员工能够通过Web来远程访问应用。
其他的好处包括用需要的软件快速装备用户(称为“快速供应”),当更多的用户导致系统重负时添加更多计算资源(自动扩展)。
当你需要更多的存储空间或带宽时,公司只需要从云中添加另外一个虚拟服务器。
这比在自己的数据中心购买、安装和配置一个新的服务器容易得多。
对开发者而言,升级一个云应用比传统的桌面软件更容易。
只需要升级集中的应用程序,应用特征就能快速顺利地得到更新,而不必手工升级组织内每台台式机上的单独应用。
有了云服务,一个改变就能影响运行应用的每一个用户,这大大降低了开发者的工作量。
不足也许人们所意识到的云开发最大的不足就是给所有基于web的应用带来麻烦的问题:它安全吗?基于web的应用长时间以来就被认为具有潜在的安全风险。
由于这一原因,许多公司宁愿将应用、数据和IT操作保持在自己的掌控之下。
也就是说,利用云托管的应用和存储在少数情况下会产生数据丢失。
尽管可以说,一个大的云托管公司可能比一般的企业有更好的数据安全和备份的工具。
然而,在任何情况下,即便是感知到的来自关键数据和服务异地托管的安全威胁也可能阻止一些公司这么做。
另外一个潜在的不足就是云计算宿主离线所导致的事件。
尽管多数公司说这是不可能的,但它确实发生了,亚马逊的EC2业务在2008年2月15日经受了一次大规模的服务中止,并抹去了一些客户应用数据。
(该次业务中止由一个软件部署所引起,它错误地终止了数量未知的用户实例。
)对那些需要可靠和安全平台的客户来说,平台故障和数据消失就像被粗鲁地唤醒一样。
更进一步讲,如果一个公司依赖于第三方的云平台来存放数据而没有其他的物理备份,该数据可能处于危险之中。
6评估云服务性能企业考虑云计算的关注点之一就是性能。
实现应用程序在云中的高速交付是一个涉及多方面因素的挑战性命题,其中包括一个整体的接入方法和一个对应用程序“请求-响应”路径的端到端查看。
性能问题包括:应用程序与数据相对于最终用户的地理位置,云中、云内外以及计算机层和数据存储多层次之间的I/O访问速度。
当今,诸如CloudSleuth和CloudHarmony之类的众多服务研究报告试图通过从不同地理位置和采用不同应用程序的方法来度量和评估云计算供应商所提供服务的性能。
云服务技术堆栈一直以来,一些云计算供应商都致力于提供特定软件堆栈的服务。
通常,这就意味着他们从基础设施即服务(IaaS)转变至平台即服务(PaaS)。
不同堆栈特定云可与其他的大多数流行软件堆栈相配合。
其典型代表包括:Heroku和Engine Yard的Ruby;VMforce和Google应用程序引擎(GAE)的Java/Spring(其中GAE还支持Python);PHP Fog的PHP以及微软公司Windows Azure的。
如果你的应用程序使用以上堆栈之一进行构建,你可能需要考虑这些云计算平台。
他们能够帮助你处理低层次基础设施的安装和配置工作,从而节省在时间和费用方面的巨大支出。
另一方面,他们往往会要求开发商在进行架构和编写应用程序时遵循某些推荐的要求,以便于创建高等级的供应商级同步。
云服务服务级别协议有些云供应商做出了提供更高等级服务的承诺,以示与其他行业竞争对手的不同。
比如Rackspace提供更高等级云服务SLA,从而展开与云计算业内的巨头Amazon公司的竞争。
请注意,SLA通常只是当服务发生故障时结果的一个指示,而不是实际服务的可靠性。
其典型代表是GoGrid %确保的SLA。
换而言之,GoGrid做出了100%正常运行时间的承诺。
如果它无法满足这一级别的可靠性,它将赔偿用户100倍停机时所需支付的费用。
虽然SLA是评估所有供应商承诺等级的一个有效指标,但了解特定云供应商的实际正常运行时间是一个更为棘手的难题。
大多数供应商都提供了一个用于表明服务正常运行的状态页面,但是这些页面显示的数据通常只是数天前甚至更早时候的。
为了获得实际具有可靠性和可用性的长期数据,用户最好依赖于客户反馈以及诸如CloudSleuth和CLoudHarmony的比较服务。
云服务API:同步、社区以及生态系统选择合适云供应商的另外一个关键因素在于开放应用程序编程接口(API),它为访问基础设施和执行操作(例如配置服务器或解除服务器配置)提供外部调用方法。
从很多方面来说,API都是重要的。
首先,一个API可得到多个供应商同时支持,同时供应商也为用户提供了更大的功能扩展自由度。
因为当从一个供应商转向另一个供应商,或同时与多个供应商合作时,基本上不用对应用程序做重大修改,所以显得更为容易。
其次,API得到了社区开发人员的广泛支持,供应商可基于它构建一个具有配套服务和功能的完整生态系统。
由Amazon web服务与应用(AWS)和Vmware云计算产品提供的API周围已形成庞大的生态系统,其中包括管理工具(如enStratus)、监控和管理工具(如Cloudkickh和RightScale)以及形成其完整云服务的其他服务。
Vmware本身不提供云服务,但是不同的供应商使用Vmware的堆栈和API,特别是vCloud。
例如Terremark和Savvis。
Amazon公司和WMware公司以及Windows Azure都允许用户使用自己的堆栈和API实施内部云,从而使用户能够很容易地在混合云上管理和运行应用程序。
所谓混合云是指由供应商托管,且在公司内部数据中心中运行的云。
以Amazon公司为例,使用AWS启动通过Eucalyptus的API为私有云提供软件堆栈。
业内的一个最新发展是Rackspace公司与美国航天局(NASA)合作,两者协同众多厂商和云供应商在其一个称为OpenStack的项目中对其软件堆栈公开了源代码。
它最有可能被视为行业标准,因此此举将有助于创建一个有望替代Amazon和Vmware生态系统的实际可行标准。
云服务安全性和法规遵从公司考虑实施据云计算的两大障碍依然是安全性与法规遵从。
Zenoss公司在2010年第二季度进行的调查显示,接近40%的受访者在被问及他们对云计算的最大关注问题时都选择了安全性。
而紧随其后的选项是管理,它占受访者的26.5%。
Zenoss的调查结果与其他云计算相关调查的数字是一致的。
而企业真正关注的问题并不是实际的安全威胁,而是他们无法遵守与安全相关的标准,如PCI。
作为回应,当今许多云供应商都在吹嘘和炫耀他们所拥有的SAS-70 II型审计、安全白皮书和其他标准的证书。
正在发展的云供应商Logicworks推出了具有法规遵从的云计算产品,即遵守一级PCI的云产品。
云服务成本一个比较云供应商的简单直接方法似乎就是成本。
问题在于考虑到客户实际使用的资源和支付的费用,在供应商中并不具备可比性。
供应商提供虚拟机(VM)资源,但其内存容量、CPU时钟速度以及其他功能却各异。
此外,实际提供给客户的部件也是虚拟的,这也造成难以对客户实际使用的资源进行度量以及其他同在云中客户如何影响这些资源。
Amazon公司拥有EC2计算部门,Heroku向Dynos提交而其它厂商则创建自己的度量部门。
度量评估不同云供应商成本和性能比的唯一真正可靠方法是使用相同的应用程序对多个供应商的服务进行试验,并比较运行结果。
费用对比云计算的安全和管理问题是众所周知的,除此之外,关于云服务的计费也是一个不小的挑战。
云服务供应商们总是喜欢吹嘘说他们的服务使用起来有多么的简单,实际上,广大IT经理们都已发现云计算服务的计费并不简单。
云服务的计费是基于许多因素的,从所需的存储空间,到所使用的时间周期,再到每个月的流量分配,等等这些因素都可能成为计费参考。
实际上还不止这些,一些云服务供应商还会基于SLA之内的一些隐性条款来收费。
为了弄明白一项云计算服务的总费用,用户需要了解供应商账单上的每一项服务要素,以及其计费方式。
服务的计费项目另一个决定服务真正费用的关键因素是所需的服务类型。
对于一些企业而言,所谓的云服务可能只是服务器托管、专用服务器租赁,或是将应用运行在云中。
而对于其它一些企业而言,云服务可能就是基于云的数据备份、业务持续性的维持,或是基本的存储托管。
对于广大用户而言,要弄明白云计算服务最简单的方式就是将注意力放在最主要的服务项目上。
大多数云服务供应商都会将它们的服务分为三个基本类型:云中服务器、云存储、云工作站和云应用。
每一项服务都有其自己的计费方式。
云中的服务器主要分为两种形式:虚拟服务器和物理服务器。
换句话说,你既可以在虚拟服务器(与其他人共享物理硬件)上购买使用时间,也可以在专用服务器(你是该服务器唯一的租户)上购买使用时间。
表1所示的就是云服务的计费方式:三大主流IaaS云服务计费方式对比整张图片实际上就是在对比不同云服务供应商的服务价格和计费方式。
图中列出的每个供应商都会对一些额外的服务和功能征收额外的费用。
此外,每项服务的价格也会随着协议长短、总的带宽需求或者所需存储规模的大小而有所变化。
在许多情况下,用户是可以和供应商进行讨价还价的。
不同的服务类型并不是说所有的云服务供应商都是一样的,如果你仔细观察一下供应商之间的区别以及他们各自处理用户需求的方式,就会发现这种差别是很明显的。
为了给大家做一个对比,我们挑选了最为知名的三家云架构供应商:GoGrid将负载均衡服务放在其服务器产品当中,而且不收取额外的费用,此外,他们还免费提供20GB的存储空间;Rackspace使用的是一种完全不同的计费机制,随着使用量的增长,他们会降低每十亿字节带宽的费用。
此外,该公司还在一些虚拟服务器上提供免费的备份服务;Amazon的大多数服务随着使用量的增加都提供打折优惠,但是对于存储服务的启用和终止都会收取一定费用。
如果你考虑一下最为简单的云存储服务概念,就会很明显地发现这几种计费方式及供应商业务的区别(图2)。
再次强调一下,这张图只是对比不同供应商的计费方式。
像其它云服务一样,云存储服务的价格也会受到协议时间长短、总的带宽需求或是说所需存储容量大小的影响。
此外,这些服务的价格也有足够的讨价还价的空间。
三大主流IaaS云服务计费方式对比对于使用其服务器托管服务的用户,GoGrid最初提供20GB的免费存储空间,而且他们只为服务器托管用户提供云存储服务。
独具特色的是,随着用户所购买的存储容量的增加,GoGrid的服务可以提供打折优惠。
GoGrid的云存储服务是以一种定量的方式提供,目前为止还不提供用于启动或停止其它命令的Web服务应用程序接口。
Rackspace试图让它的存储服务计费方式变得尽可能的简单化。
他们对于云存储服务的采购提供按比例增减的模式,随着总量的增加,服务的单价也会有所下降。
此外,如果文件的大小超过250KB,他们不会收取存取费用。
Amazon S3对于已删除数据不进行收费,根据所需存储总量的增加还会提供一定折扣。
对于那些试图将价格稳定下来的公司,他们提供定价合同。
对于一些规模较大的文件传输公司,他们建议使用其输入和输出服务,这样可以节省成本。
理想地讲,云计算服务的计费模式应该和选择所需的存储功能和服务器计算资源没什么差别。
而事实上,大多数IT经理都发现这种理想很难实现。
他们必须仔细去考虑一些“隐性成本”,或是计费标准的变化,从而确定某项服务的真正费用。
更大的挑战来自于一些“非技术”的因素,用户必须考虑到那些独立于谈判条款之外或是隐藏于SLA协议之中因素。
解决这一问题的技巧就是用清晰而又精确的语言将每个合同期内每项服务的总费用写在纸上,这样才能明白真正的总预算金额。
[1]7相关技术1、编程模式2、海量数据分布存储技术3、海量数据管理技术4、虚拟化技术5、云计算平台管理技术8相关问题数据隐私问题:如何保证存放在云服务提供商的数据隐私不被非法利用,不仅需要技术的改进,也需要法律的进一步完善数据安全性:有些数据是企业的商业机密没数据的安全性关系的企业的生存和发展。
云计算数据的安全性问题解决不了会影响云计算在企业中的应用。
用户的使用习惯:如何改变用户的使用习惯,使用户适应网络化的软硬件应用是长期而且艰巨的挑战。
网络传输问题:云计算服务依赖网络,目前网速低切不稳定,使云应用的性能不高。
云计算的普及依赖网络技术的发展。
缺乏统一的技术标准:云计算的美好前景让传统IT厂商纷纷向云计算方向转型。
但是由于缺乏统一的技术标准,尤其是接口标准,各厂商在开发各自产品和服务的过程中各自为政,这为将来不同服务之间的互连互通带来严峻挑战。
持续集成工具有哪些
市场上持续集成工具众多,找到一个合适的工具并非易事,下面介绍了 21 个比较受欢迎的 CI 工具,并附上了下载链接。
对 Web 开发者来说,Buddy 是一个智能的 CI/CD 工具,降低了 DevOps 的入门门槛。
Buddy 使用 DeliveryPipeline 进去软件构建、测试及发布,创建 Pipeline 时,100 多个就绪的操作可随时投入使用,就像砌砖房一样。
特点:
清晰的配置,友好的交互,15分钟快速配置基于变更集(changeset)的快速部署构建运行在使用缓存依赖的独立容器中支持所有流行的语言、框架和任务管理器Docker / Kubernetes 专用操作手册与 AWS,Google,DigitalOcean,Azure,Shopify,WordPress 等集成支持并行和 YAML 配置
下载链接:Jenkins
Jenkins 是一个开源的持续集成工具,使用 Java 编程语言编写的。
它有助于实时检测和报告较大代码库中的单一更改。
该软件可帮助开发人员快速查找和解决代码库中的问题并自动测试其构建。
特点:
支持海量节点扩展并在节点中同等分发工作负载在各版本Linux、Mac OS 或 Windows 等全平台轻松更新提供了 WAR 格式的简易安装包,执行导入 JEE 容器中即可运行安装可以通过 Web 界面轻松设置和配置 Jenkins可轻松跨机器分发
下载链接:TeamCity
TeamCity 是一款拥有很多强大功能的持续集成服务器。
特点:
可扩展性和自定义为项目提供更好的代码质量即使没有运行构建,也能保持 CI 服务器健康稳定可在 DSL 中配置构建项目级云配置文件全面的 VCS 集成即时构建进度报告远程运行和预先测试的提交
下载链接:Travis CI
Travis 是一款流行的 CI 工具,可免费用于开源项目。
在托管时,不必依赖任何平台。
此 CI 工具为许多构建配置和语言提供支持,如 Node,PHP,Python,Java,Perl 等。
特点:
Travis 使用虚拟机构建应用程序可通过 Slack,HipChat,电子邮件等通知允许运行并行测试支持 Linux、Mac 以及 iOS易于配置,无需安装强大的 API 和命令行工具
下载链接:GoCD
GoCD 是一个开源的持续集成服务器。
它可轻松模拟和可视化复杂的工作流程。
此 CI 工具允许持续交付,并为构建 CD Pipeline 提供直观的界面。
特点:
支持并行和顺序执行,可以轻松配置依赖随时部署任何版本使用 Value Stream Map 实时可视化端到端工作流程安全地部署到生产环境支持用户身份验证和授权保持配置有序有大量的插件增强功能活跃的社区帮助和支持
下载链接:Bamboo
Bamboo 是一个持续集成的构建服务器,可以自动构建、测试和发布,并可与 JIRA 和 Bitbucket 无缝协作。
Bamboo 支持多语言和平台,如 CodeDeply、Ducker、Git,SVN、Mercurial、AWS 及 Amazon S3 bucket。
特点:
可并行运行批量测试配置简单分环境权限功能允许开发人员和 QA 部署到他们的环境可以根据 repository 中检测到的更改触发构建,并从 Bitbucket 推送通知可托管或内部部署促进实时协作并与 HipChat 集成内置 Git 分支和工作流程,并自动合并分支
下载链接:Gitlab CI
GitLab CI 是 GitLab 的一部分。
它是一个提供 API 的 Web 应用程序,可将其状态存储在数据库中。
GitLab CI 可以管理项目并提供友好的用户界面,并充分利用 GitLab 所有功能。
特点:
GitLab Container Registry 是安全的 Docker 镜像注册表GitLab 提供了一种方便的方法来更改 issue 或 merge request 的元数据,而无需在注释字段中添加斜杠命令为大多数功能提供 API,允许开发人员进行更深入的集成通过发现开发过程中的改进领域,帮助开发人员将他们的想法投入生产可以通过机密问题保护您的信息安全GitLab 中的内部项目允许促进内部存储库的内部 sourcing
下载链接:CircleCI
Circle CI 是一个灵活的 CI 工具,可在任何环境中运行,如跨平台移动应用程序、Python API 服务器或 Docker 集群,该工具可减少错误并提高应用程序的质量。
特点:
允许选择构建环境支持多语言及平台,如Linux,包括C ,Javascript,NET,PHP,Python 和 Ruby支持 Docker,可以配置自定义环境触发较新的构建时,自动取消排队或正在运行的构建跨多容器分割和平衡测试,以减少总体构建时间禁止非管理员修改关键项目配置通过发送无错误的应用程序提高 Android 和 iOS 商店评级最佳缓存和并行性能,实现高性能与 VCS 工具集成
下载链接:Codeship
Codeship 是一个功能强大的 CI 工具,可自动化开发和部署工作流程。
Codeship 通过简化到 repository 的 push 来触发自动化工作流程。
特点:
可完全控制 CI 和 CD 系统的设计。集中的团队管理和仪表板轻松访问调试版本和 SSH,有助于从 CI 环境进行调试可完全定制和优化 CI 和 CD 工作流程允许加密外部缓存的 Docker 镜像允许为您的组织和团队成员设置团队和权限有两个版本1)Basic 和 2)Pro
下载链接:Buildbot
Buildbot 是一个软件开发 CI,可以自动完成编译/测试周期。
它被广泛用于许多软件项目,用以验证代码更改。
它提供跨平台 Job 的分布式并行执行。
特点:
为不同体系结构的多个测试主机提供支持。报告主机的内核崩溃维护单源 repository自动化构建每个提交都在集成机器上的主线上构建自动部署开源
下载链接:Nevercode
Nevercode 是一个基于云端的 CI 传送服务器,可以构建、测试和分发应用程序而无需人工交互。
此 CI 工具自动为每个提交构建项目,并在模拟器或真实硬件上运行所有单元测试 或 UI 测试。
特点:
基于云服务,因此无需维护服务器易于学习和使用良好的文档,易于阅读和理解通过持续集成和交付自动化整个开发过程与众多工具集成
下载链接:Integrity
Integrity 是一个持续集成服务器,仅适用于 GitHub。
在此 CI 工具中,只要用户提交代码,它就构建并运行代码。
它还会生成报告并向用户提供通知。
特点:
目前仅适用于 Git,但它可以轻松地映射其他 SCM支持多通知机制,如 AMQP,电子邮件,HTTP,Amazon SES,Flowdock,Shell 和 TCPHTTP 通告功能将以 HTTP POST 请求发送到特定URL
下载链接:Strider
Strider 是一个开源工具,用 / JavaScript 编写。
它使用 MongoDB 作为后端存储。
因此,MongoDB 和 对于安装此 CI 至关重要。
该工具为不同的插件提供支持,这些插件可修改数据库 schema 并注册HTTP路由。
特点:
Strider 可与 GitHub,BitBucket,Gitlab 等集成。允许添加钩子来执行构建操作持续构建和测试软件项目与 GitHub 无缝集成发布和订阅 socket 事件支持创建和修改 Striders 用户界面强大的插件,定制默认功能支持 Docker
下载链接:AutoRABIT
AutoRABIT 是一个端到端的持续交付套件,可以加快开发过程。
它简化了完整的发布流程,并可以帮助任何规模的组织实现持续集成。
特点:
专门设计用于在 Salesforce Platform 上部署支持基于 120 多种元数据类型的更改,实现精简和快速部署从版本控制系统获取更改并自动部署到 Sandbox 中直接从 Sandbox 自动向版本控制系统提交更改
下载链接:FinalBuilder
FinalBuilder 是 VSoft 的构建工具。
使用 FinalBuilder,无需编辑 XML 或编写脚本。
在使用 Windows 调度程序调度构建脚本时,可以定义和调试构建脚本,或者与 Jenkins,Continua CI 等集成。
特点:
以逻辑结构化的图形界面呈现构建过程使用 try 和 catch 操作处理本地错误与 Windows 调度服务紧密集成,支持定时构建支持十几个版本控制系统提供脚本支持构建过程中所有操作的输出都将定向到构建日志
下载链接:Wercker
Wercker 是一个 CI 工具,可自动构建和部署容器。
它可以创建可以通过命令行界面执行的自动化管道。
特点:
与 GitHub 和 Bitbucket 完全集成使用 Wercker CLI 进行更快的本地迭代同时执行构建以保持团队的机动运行并行测试以减少团队的等待时间集成了 100 多种外部工具通过产品和电子邮件接收系统通知
下载链接:Buildkite
Buildkite 代理是一个可靠的跨平台构建工具。
此 CI 工具可以在础架构上轻松地运行自动构建。
它主要用于运行构建 Job,报告 Job 的状态代码并输出日志。
特点:
可在各种操作系统和体系结构上运行可以从任何版本控制系统运行代码允许在计算机上运行任意数量的构建代理可与 Slack,HipChat,Flowdock,Campfire 等工具集成永远不会读取源代码或密钥提供稳定的基础设施
下载链接:Semaphore
Semaphore 是一个持续集成工具,只需按一下按钮即可测试和部署代码。
它支持多种语言、框架并可与 GitHub 集成,还可以执行自动测试和部署。
特点:
配置简单允许自动并行测试市场上最快的 CI 之一可以轻松覆盖不同大小的项目数量与 GitHub 和 Bitbucket 无缝集成
下载链接:CruiseControl
CruiseControl 既是 CI 工具又是一个可扩展的框架。
它用于构建自定义连续的构建。
它有许多用于各种源代码控制的插件,包括针对电子邮件和即时消息的构建技术。
特点:
与许多不同的源代码控制系统集成,如 vss,csv,svn,git,hg,perforce,clearcase,filesystem 等允许在单个服务器上构建多个项目与其他外部工具集成,如 NAnt,NDepend,NUnit,MSBuild,MBUnit 和 Visual Studio支持远程管理
下载链接:Bitrise
Bitrise 是一个持续集成和交付 PaaS,它可以为整个团队提供移动持续集成和交付。
它允许与 Slack,HipChat,HockeyApp,Crashlytics 等许多流行服务集成。
特点:
允许在终端中创建和测试工作流程无需手动控制即可获得应用程序每个构建在其自己的虚拟机中单独运行,并且在构建结束时丢弃所有数据支持第三方 beta 测试和部署服务支持 GitHub Pull Request
下载链接:UrbanCode
IBM UrbanCode 是一个 CI 应用程序。
它将强大的可见性,可追溯性和审计功能整合到一个软件包中。
特点:
通过自动化,可重复的部署流程提高软件交付频率减少部署失败简化多渠道应用程序的部署,无论是在本地还是在云中,都可以部署到所有环境企业级安全性和可扩展性混合云环境建模拖放自动化
下载链接:
微服务:JavaEE的拯救者还是掘墓人?
引言
有人说,Java确实过于臃肿,经常“小题大做”。但PHP、扩展方面短板太明显,做小应用可以,大型应用就玩不转了。另外,JavaEE领域有太多优秀框架可以解决开发效率的问题,事实上借用Spring等框架,开发的效率丝毫不亚于PHP。
互联网时代的Java开发者,很多都不是基于Servlet和EJB来开发Web应用,而且WebLogic、WebSphere也只会存在于大公司的存量系统中,互联网公司的Java都是Tomcat的世界。
那么,微服务能完全弥补JavaEE的短板吗?对于JaveEE来说,微服务扮演的,究竟是拯救者还是掘墓人的角色?
在Java问世之初,包括IBM、BEA、Oracle在内的一些巨头公司,看到了Java作为一门杰出的Web编程语言可能给他们带来的巨大商机。那么如何通过一门编程语言来赚钱呢?答案就是,使用这门语言构建复杂无比的服务器,让那些大公司支付一大笔费用来购买这些服务器。于是紧接着就出现了JavaEE规范、JSR规范,以及WebLogic、WebSphere等服务器中间件。
在这些服务器上面部署了大型的程序包,它们运行缓慢,消耗大量的内存。
基于这些容器的开发和调试对开发人员来说简直就是噩梦,作为对他们的补偿,他们从雇主那里获得了丰厚的报酬。
因为耗资巨大,几乎找不到一家公司可以使用合理的费用长时间地支持Java。
如果你要用Java构建一个网站,你必须支付一大笔费用来运行这些服务器,哪怕你只用到了Servlet容器。
在很长一段时间里,Java被用在企业和公司里,因为只有这些大公司能够负担得起数百万美元的服务器费用,并为那些企业级开发人员支付高额的薪水。
RodJohnson在2003年发布了Spring框架,Spring提供了IoC和对POJO的支持,帮助开发人员逃脱EJB魔掌。
开发效率因此得到大幅的提升,大量开发人员转向Spring,把EJB丢在一边。
应用服务器开发商看到了这一点,他们在JavaEE5里提供了一些可以减轻开发人员负担的特性。
可惜的是,Spring被一路追捧,人们几乎把它跟JavaEE容器混为一谈,它仍然运行在JavaEE的Servlet容器里,这些容器沿用的是十年前的设计,并没有考虑到多核CPU和NIO。
在这期间,PHP奋起直追。
PHP使用更少的内存和资源,得到很多公司的支持。
一些CMS平台,比如WordPress、Drupal等都是基于PHP构建的,这些平台吸引了大批PHP开发人员。
不过,虽然PHP仍然是现今最流行的编程语言,但它也有自己的短板。
它运行速度不是很快,而且难以横向扩展。
2009年,RyanDahl启动了项目,它支持异步非阻塞的、基于事件驱动的I/O。
如果服务器的线程使用得当,可以极大地提升响应速度,单个服务器的吞吐量可以媲美一个JavaEE服务器集群。
是一个很好的作品,但它也有自己的局限性。
难以扩展,也难以与遗留的系统集成。
2014年,Undertow出现了,它是一个基于Java的非阻塞Web服务器。
从#的测试结果来看,在一个价值8000美金的戴尔服务器上,它可以每秒钟处理几百万个请求,而谷歌需要使用一个集群才能处理一百万个同样的请求。
它是轻量级的,它的核心部分只需要1M内存,它还包含了一个内嵌的服务器,这个服务器使用不到4M的堆内存。
基于UndertowCore构建的LightJavaFramework是一个微服务容器,它支持设计驱动及生成代码,并支持运行时安全和运行时验证。
多年前,JavaEE厂商,比如Oracle和IBM,他们花费数亿美元开发应用服务器(WebLogic和WebSphere),这些服务器以数百万的价格卖给了大型组织。
但现在这些服务器卖不动了,因为JBoss迅速抢占了市场份额,Oracle对JavaEE的支持正在走下坡路:
#/story/16/07/02//oracle-may-have-stopped-funding-and-developing-java-ee
随着微服务越来越多地受到关注,这些应用服务器很难有好的销量,因为这些服务器更适合用来部署单体应用。
有一个包含了数百个EJB的应用,为了在WebLogic上测试一行代码改动,居然用了45分钟时间。
JavaEE客户
从客户角度来看,耗费巨资购买这些服务器是不值得的,因为JavaEE所承诺的未必都是真的。
一个为WebSphere开发的应用无法部署在WebLogic上,所以你需要花更多的钱去升级服务器,因为厂商可能不再支持旧版的服务器,而这样的更新会花费你数百万美元。
于是一些聪明人不禁要问,为什么我们要把应用部署在这些庞然大物上?为什么我们要把应用打包成一个ear包或war包,而不是jar包?为什么我们不能把大型的应用拆分成更小的块,让它们可以独立部署和扩展?
微服务
微服务是这些问题的解药。
Wikipedia把微服务定义为“??一种软件架构风格,复杂的应用由一些独立的进程组成,这些进程使用与语言无关的API进行交互。
这些进程服务规模很小,高度离散,聚焦在一个很小的任务上,使用模块化方式来构建系统”。
微服务架构让构建应用变得更加容易,而且应用被拆分成单独的服务,这些服务可以被任意组合。
每个服务可以被独立部署,也可以被组合成一个应用。
这些服务还可能会被其他应用依赖。
它加快了服务的开发速度,因为只要定义好接口,服务可以并行开发。
微服务具备弹性和伸缩性。
微服务不只依赖单个服务器和部署,它们可以被发布到多个机器上,或者多个数据中心及其它任何可用的区域。
如果一个服务失效,可以启动另外一个。
因为整个应用被分解成了微服务(小型服务),可以很容易地对其中某些热门的服务进行横向扩展。
如果你曾经使用过COM、DCOM、CORBA、EJB、OSGi、J2EE、SOAP和SOA等,那么你就会知道服务和组件并不是什么新生事物。
企业在使用组件方面存在的一个最大问题是他们依赖大型的硬件服务器,并在同一个服务器上运行很多应用。
我们有EJB、WAR包和EAR包,以及各种组件包,因为服务器资源太过昂贵,要尽可能地物尽其用。
不过从最近几年的发展情况来看,之前的方式有些落伍。
操作系统服务器一直在变化,虚拟资源可以被当成组件发布,比如EC2、OpenStack、Vagrant和Docker。
世界变了。
微服务架构看到了这种趋势,硬件、云技术、多核CPU和虚拟技术也在发展,所以我们要改变以前的开发方式。
在开始新项目的时候不要再使用EAR包或WAR包了。
现在我们可以在Docker里运行JVM,Docker只不过是一个进程,但它可以表现得像一个操作系统一样。
Docker运行在云端的操作系统上,而云端的操作系统运行在虚拟机里,虚拟机运行在Linux服务器上。
这些服务器不是归谁所有,而是被很多互不相识的人共享。
如果出现流量高峰怎么办?很简单,使用更多的服务器实例。
这就是为什么要把Java微服务运行在一个单独的进程里,而不是JavaEE容器或servlet容器。
微服务一般会提供基于HTTP/JSON的API端点。
这样可以很容易地与其他服务(开源或闭源的)集成,只要这些服务提供了HTTP/JSON接口。
服务可以通过更有意义的方式被消费、被组合。
EC2、S3及其他来自Amazon(或其他公司)的服务就是最好的例子。
基础设施会成为应用程序的一部分,而且它们是可编程的。
使用微服务架构的应用程序应该是模块化、可编程和可组合的。
微服务之间可以相互替换。
应用程序的局部可以被重写或改进,而不会影响到整个应用。
如果所有的组件都提供了可编程的API,那么微服务之间的交互就会变得更简单(永远不要相信那些不能通过curl访问的微服务)。
随着微服务逐渐流行起来,很多厂商开始尝试把他们的JavaEEWeb服务转成微服务,这样他们就可以继续卖他们的过时产品,APIGateway就是这些厂商中的一个。
JasonBloomberg是Intellyx的主席,他在一篇文章里指出了传统Web服务和微服务的区别,并对把传统Web服务转成微服务的趋势提出了质疑:
#/dangers-microservices-washing-get-value-strip-away-hype
微服务不是企业服务总线里的Web服务,也不是传统的面向服务架构,尽管它沿袭了SOA的一些基本概念。
从根本上来说,微服务跟SOA是不一样的,因为整个环境已经发生了彻底的转变。
微服务架构的环境是没有边界的:端到端,基于云的应用程序运行在完全虚拟和容器化的基础设施上。
容器把应用程序和服务组件化,DevOps为IT基础设施提供框架,帮助自动化开发、部署和管理环境。
虽然容器对微服务来说不是必需的,不过微服务可以很容易地运行在容器里。
况且,把非微服务的代码部署在容器里不是一个明智的选择。
Docker和其他容器技术在某种程度上已经被视为微服务的最好伴侣。
容器是运行微服务的最小资源子集。
Docker简化了微服务的开发,让集成测试变得更简单。
容器有助于微服务开发,但不是必需的。
Docker也可以被用来部署单体应用。
微服务与容器可以很好地相融并进,不过微服务包含的东西远比容器多!
结论
应用开发的风格这几年一直在变化,而微服务变得越来越流行。
大公司把大型应用拆分成可以单独部署的小型应用,这些小型应用被部署在云端的容器里。
开源微服务框架LightJava为这些运行在容器里的微服务提供了很多特性,它支持设计驱动,开发者只需要把注意力专注在业务逻辑上,剩下的事情可以由框架和DevOps流程来处理。
那么问题来了,你怎么看?