对于云原生技术,很多安全从业者其实并不陌生。包含了微服务、网格服务、Devops等几项技术。今天青藤云安全为大家详细描述一下微服务。微服务是在云原生应用程序中使用的设计范例,它将大型组件分解为多个可独立部署的部分。
以人力资源系统为例。以前,整个人力资源系统部署在一个大软件包中(例如,使用MVC框架的WAR文件)。通过使用微服务,不再需要将人力资源组件部署为一个大软件包,该组件被划分并部署为按用途分组的若干个较小功能单元(工资、出勤和员工等微服务)。这样,维护一个模块时,如“工资”模块时,就不会影响其他功能,因为这些模块可以独立工作。
微服务是指将大型复杂软件应用拆分成多个简单应用,每个简单应用描述一个小业务,系统中的各个简单应用可独立部署。各个微服务之间是松耦合的,可以独立地对每个服务进行升级、部署、扩展和重新启动等流程,从而实现频繁更新而不会对最终用户产生任何影响。相比传统的单体架构,微服务架构具有降低系统复杂度、独立部署、独立扩展、跨语言编程等特点。
微服务的诞生是出于应对整体大型应用程序的复杂性和灵活性的需求。整体应用程序是一种应用程序,其中所有必需的功能都一起编码到同一服务中。 例如,这是一个表示整体事件(如音乐会,表演等)的预订应用程序的图,该应用程序负责预订付款处理和事件预订:
消费者可以使用该应用程序来预订音乐会或表演。这就需要一个用户界面。此外,我们还将需要搜索功能来查找事件,利用预订处理程序来处理用户预订然后保存,然后事件处理程序可以用来查找事件,确保有可用席位,然后将其链接到预订。在生产级应用程序中,将需要执行更多任务,例如付款处理,但现在让我们集中讨论上图中概述的四个任务。
这种整体应用程序在中小型负载下运行良好。该应用程序可以在单个服务器上运行,连接到单个数据库,并且可能使用相同的编程语言编写。
现在,如果业务呈指数级增长并且需要处理成千上万的用户,情况将会怎样?最初,短期解决方案将是确保应用程序运行所在的服务器具有强大的硬件规格来承受更高的负载,如果没有,则为该服务器增加更多的内存,存储和处理能力。这称为垂直缩放,这是增加硬件(如RAM)和硬盘驱动器容量的能力,以运行繁重的应用程序。但是,随着应用程序负载的持续增长,从长远来看,这通常是不可持续的。
整体应用程序的另一个挑战在于,由于仅限于一种或两种编程语言而导致灵活性差。这种不灵活性可能会影响应用程序的整体质量和效率。例如,node.js是用于构建Web应用程序的常用JavaScript框架,而R语言则在数据科学应用程序中非常常用。整体应用程序将很难利用这两种技术,而在微服务应用程序中,我们则可以方便地构建用R语言编写的数据科学服务和用Node.js编写的Web服务。
事件应用程序的微服务版本形式如下所示:
该应用程序将能够在多个服务器之间扩展,这被称为水平扩展。每种服务都可以部署在具有专用资源的不同服务器上,也可以部署在单独的容器中。可以用不同的编程语言编写不同的服务,以提高灵活性,并且不同的专业团队可以专注于不同的服务,从而为应用程序提供更高的整体质量。
青藤云安全表示,使用微服务的另一个显著优势是便于连续交付,这便可以随时随地部署软件。微服务便于实现连续交付的原因是,与整体应用程序相比,部署到一个微服务的新功能不太可能影响其他微服务。
本文作者:青藤云安全
原文 https://www.secpulse.com/archives/119745.html