最火爆的软件开发架构,微服务那些事!

微服务最近很火,尤其是在DevOps圈子中。因为微服务是利用云计算交付模式概念的技术。然而,与任何快速发展的新事物一样,面对众多声音,对于微服务实际应用情况都可能需要了解和辨识。

最火爆的软件开发架构,微服务那些事!

1.微服务是什么?

微服务是基于将应用程序构建为一系列小型服务的软件开发体系结构的方法。每个服务都有自己独特且定义明确的角色,运行在自己的进程中,并通过HTTP API或消息进行通信。每个微服务都可以独立于应用程序中的所有同级服务进行部署,升级,扩展和重启。它们通常由自动化系统编排,使得在不影响最终用户的情况下频繁更新实时应用程序成为了可能。

想一想:现在,普通云用户(包括非技术性人员)很容易和自然地使用多种云产品,实质上是微型产品和微型应用程序。 (他们没有称它为“The App Store”)。虽然普通企业组织至少使用了十几种不同的软件产品和集成:一种用于记录业务费用的工具,另一种用于计划跟踪,另一种用于工资管理。你可能大概明白了!

采用紧凑而专业的工具来正确完成每项工作是合理的。微服务就是这样,扩展到了企业级别。

将微服务视为乐高积木拼合在一起构建统一模型。首先,开发人员确定构建其项目所需的单独服务“部分”,例如搜索,认证,消息传递,销售处理等。然后,他们从可用选项的大杂烩中选择,从开源到交钥匙企业解决方案,以及把所有东西都编织成一个功能性应用程序。

“微服务”和“容器”经常一起使用。但是,容器和微服务不是同一回事。微服务可以在容器内运行,但也可以作为完全配置的虚拟机运行。也就是说,像Docker和Kubernetes这样基于容器的开源系统是开发,部署和管理微服务的一种非常有效的方式。容器空间中已经存在许多成熟和强大的工具,平台和其他服务,使得容器化非常适合基于微服务的应用程序。

2.微服务的好处

答案显而易见:微型服务使开发人员不必浪费时间重新解决已解决的技术问题,通过让小型自治团队独立开发,部署和扩展各自的服务。微服务本质上是“并行化开发”,从而加速生产周期的成倍增长。

此外,持续集成和开发基本上已被纳入微服务架构。微服务从项目中承担了很多基础设施风险。随着基础设施几乎不可见,微服务团队可以快速迭代,通常每小时循环一次,这样价值就会增加,而“错误特征”风险会持续下降。

换句话说,在微服务中,团队中的每个开发人员都会忘记底层基础架构,并专注于他们的项目。然后,在生产中,如果各个项目模块不能完全正确地一起工作,则很容易将它们隔离,拆卸并重新配置,直到完成为止。真的有点像乐高积木。

3.是否有潜在的缺点?

微服务是经典的单一应用程序的对立面,具有明显的优势。但是,与任何开发技术一样,早期采用曲线可能会非常陡峭。目前,Netflix和PayPal等超大型公司在有效地采用这种方法,凭借强大的内部资源和技术团队,他们已经能够转向微服务架构。

当你的企业一个非常庞大,资源丰富的企业,但每个团队都能够管理每项服务并确保可重用性和可发现性时,那真是太棒了。Matt Biilmann是Netlify的首席执行官和联合创始人,他最近添加了一个微服务网关,他的一体化平台用于开发和自动化Web项目。Netlify已经注意到越来越多的牵引力,以及个人开发者“出于兴趣,玩微服务的小项目。”

但是,转向微服务的困难是真实存在的。摆脱单一的应用程序架构意味着失去了将所有碎片粘合在一起的工作流程。

Biilmann强调,“微服务让我们面临一个非常分散的系统,开发人员需要花费大量的时间和精力将服务和工具粘合在一起,并且缺乏可以跨项目工作的通用模式和平台。所以要真正利用微服务,需要供应商出现可以建立一键式安装的粘合剂。”

Biilmann举例了LAMP堆栈的出现。像Linux,Apache网络服务器,MySQL和PHP等免费提供的工具为Web开发开辟了新的可能性。但是当公司围绕WordPress,Drupal和Joomla等项目构建集成工具时来提升架构时。你不会通过设置Apache,并设置MySQL数据库,并将它们配置为彼此交互后,来启动WordPress。你期望是去一个面板,点击一个按钮,说“开始一个新的WP项目”。

幸运的是,微服务正在启动同样的市场跨越。但平台,工具和框架必要的无缝连接在一起。

4.微服务是否适合你?

但是,在这个早期阶段,要衡量这些新兴资源的最佳适应性和技术生命周期可能很困难。更不用说微服务还可能需要增加测试复杂性并可能增加内存/计算资源。因此,尽管有丰富的潜在利益,但请注意,微服务并非一定是成为每个项目的正确解决方案。

一位行业资深顾问表示,他仍然是某些场景下单片架构的拥蹩。“当你运行同一服务或工作的多个实例时,你不一定需要微服务。一个精心打造的单一系统可以适用于某些类别的问题。”

5.微服务的趋势

在一个真正的微服务方法中,你只运行需要的确切的小服务,而没有别的。这是一个平滑设置,但是除非你还介入编排它们,否则这些服务并不彼此呼应。现在,这种实施和编排需求多了起来。微服务架构更快,更安全,更便宜;在很多时候,这是更好的方式。下一步是可访问性,可行的工作流程。这意味着微服务现在可以成为开发人员工具箱中的另一个工具!

相关推荐