大数跨境
0
0

理论篇,混沌工程之于大型系统的质量保障

理论篇,混沌工程之于大型系统的质量保障 SYMBIO UTech
2023-03-31
2
导读:事前破坏,为了事后稳定

优•橙一个践行信必优愿景2030的技术品牌

新技术引领业务 新业务驱动技术

刊文是IT工程师视角的信息流分享或集合。我们希望引领售前、架构、交付及数字化团队选择最合适的技术和理念服务我们的客户,也可作为工程师保持技术敏感及提升的参考来源。

#适合读者: 测试工程师、交付管理线、架构师。

#整理自互联网社区,如有侵权请联系删除。

刊文解释了混沌工程的基础知识和优势,以及它如何影响测试团队并确保高质量的软件。


刊文希望帮助读者做主题方向理论的普及。


您是否非常好奇您日常正在使用的行业排名前20的电商或社交类解决方案,是如何实现6个9甚至9个9 高服务标准的?混沌测试可能是重要手段之一。


混沌工程是通过引入故障并允许工程师研究行为并对结果进行修改来测试分布式软件或系统的学科,以便在最终用户使用软件和系统时避免故障。它与站点可靠性工程 (SRE) 相结合,后者试图计算不太可能的影响。

在混沌工程中,从业者故意将故障注入系统以评估其弹性。这门科学涉及实验和假设的实施,然后将结果与稳定状态进行比较。

分布式系统中混沌工程的一个例子是随机关闭服务以观察对用户的响应和影响。应用程序需要以下基础架构才能运行:网络、存储、计算和应用程序。在混沌实验中,有效的实验包括在堆栈的任何随机部分注入湍流或故障条件。该工程允许在很大程度上对故障进行受控测试。


☞ 混沌工程的演变

一些互联网组织是分布式、大规模系统的先驱。这些系统的复杂性需要一种新的方法来测试故障。这导致了混沌工程的产生。

2010 年,Netflix 将重点从物理基础设施转移到云基础设施。Amazon Web Services (AWS) 提供了这种云基础设施。此处的要求是确保如果亚马逊丢失一个实例,Netflix 流媒体体验不受影响。针对这一需求,Netflix 团队开发了一款名为 Chaos Monkey 的工具。

2011年,猿猴军成立。这支陆军向 Chaos Monkey 附加了一些故障注入模式,可以测试整套故障并在套件中开发弹性。任务是设计一个云架构,其中不同的单个组件可以在不影响整个系统可用性的情况下发生故障。

2012 年,GitHub 上有 Netflix 分享的 Chaos Monkey 的源代码。Netflix 声称他们已经发明了针对意外大规模故障的最佳防御措施。然而,它显示它被频繁使用,导致无法以令人难以置信的弹性强制构建服务。

2014 年,Netflix 创造了一个新角色,混沌工程师。Gremlin 联合创始人 Koltron Andrus 和他的团队宣布他们已经开发出一种新工具,故障注入测试 (FIT),它为开发人员提供了对故障注入的爆炸半径的更精细控制。此外,FIT 使开发人员能够控制故障范围,这使他们了解混沌工程的洞察力和潜在负面影响的缓解措施。

2016 年,Matthew Fornaciari 和 Kolton Andrus 建立了 Gremlin,这是混沌工程的第一个托管解决方案。2017 年底,Gremlin 公开可用。2018 年,第一个与混沌工程相关的大型会议 Chaos Conf 由 Gremlin 发起。仅仅两年时间,参加人数就翻了将近十倍。这些与会者包括来自交付、金融、零售和软件等行业的资深人士。

2020 年,AWS 确保将混沌工程添加到 AWS 架构完善的框架 (WAF) 可靠性支柱中。今年年底,AWS 宣布故障注入模拟器 (FIS) 问世。这个完全托管的服务在 AWS 的服务上本地运行 Chaos 实验。

2021 年,Gremlin 发布了第一份“混沌工程现状”报告。这份报告包括混沌工程的主要优势、其实践在组织中的扩展,以及表现最好的团队进行混沌实验的频率。


☞ 混沌工程如何工作?

混沌工程从分析软件系统的预期行为开始。以下是实施混沌实验所涉及的步骤。

假设:当工程师改变一个变量时,他们会问自己应该发生什么。他们假设如果他们随机终止服务,服务将继续不间断。假设由问题和假设组成。

测试:工程师使用模拟不确定性、负载测试以及网络和设备监控来检验他们的假设。堆栈中的故障打破了假设。

爆炸半径:使用故障分析,工程师可以了解在不稳定的云条件下会发生什么。测试的效果被称为它的“爆炸半径”。混沌工程师可以通过控制测试来操纵爆炸半径。

见解:它有助于提高软件和微服务的弹性,以应对不可预见的事件。


☞ 混沌工程的优势

混乱的实验提供了有价值的见解。这些被用来降低高严重性扩展 (SEV) 的频率,确保更短的时间来检测 SEV,增强系统设计,更好地理解系统故障模式,减少随叫随到的负担,并最大限度地减少事故。这些都是技术优势。

该组织可以加强 SEV 管理计划,更好地对工程团队进行随叫随到的培训,使工程师更加投入和快乐,并防止维护和收入支出方面的巨大损失。这些都是商业优势。

可能不会出现妨碍日常活动的中断。这意味着组织的服务随着可用性的提高而更加持久。这些都是客户的利益。

其他优点
❶ 团队成员可以增强参与度和信心来实施灾难恢复方法,从而使应用程序变得高度可靠。
❷ 发生故障后,相关系统会变得更有弹性。结果,系统的总可用性增加了。
❸ 团队可以在发生故障时确认系统的行为。然后,团队可以执行适当的操作。
❹ 未来生产事故会有所下降。


☞ 谁使用混沌工程?

混沌工程团队通常是小型 DevOps 团队的一部分,通常处理预生产和生产软件应用程序。然而,由于其对各种系统的广泛影响,混沌实验可以影响组织各级的团体和利益相关者。

各种利益相关者可以参与并促成涉及硬件、网络和云基础设施的中断,包括网络和基础设施架构师、风险专家、网络安全团队,甚至采购人员。


☞ 混沌工程原理

混沌工程的原理分为四种实践。在这里,假设系统是稳定的,然后你必须找到方差。如果稳定状态更难中断,则系统在一定程度上更健壮。

❶ 从基线定义开始(稳态)

您必须了解正常或稳定状态的特征。这对于找出回归或偏差至关重要。根据您正在测试的内容,您可以选择一个合适的指标来衡量常态。指标可以是在规定时间内完成用户旅程或响应时间。在实验中,稳态是对照组。

❷ 假设稳态可以维持

假设一个假设永远适用于系统,您将获得很小的测试范围。混沌工程的设计使其能够在稳定而健壮的系统上运行,并具有检测故障(例如基础设施或应用程序故障)的能力。如果您针对不稳定系统运行混沌实验,则该过程并不重要,因为已知此类系统不稳定且不可靠。

❸  启动实验或变量

实验涉及在系统中引入变量以观察系统对变量的响应。这些实验代表了影响一个或多个应用程序支柱的真实场景:基础设施、存储、网络和计算。一个例子是当出现故障时,它可能是网络中断或硬件故障。

❹ 试图反驳假设

让我们考虑假设是针对稳态的。实验组和对照组之间的差异是稳定状态的中断或变化。这些与稳定的想法相矛盾。现在,您可以专注于设计变更或修复,以打造更稳定、更强大的系统。

☞ 混沌工程:高级原理

在 Sun Microsystems,科学家 L. Peter Deutsch 和他的同事起草了一份清单,列出了八个分布式系统的谬误。以下是工程师和程序员对分布式系统的错误假设。在将混沌实验应用于某个问题时,上述八个谬误是一个很好的起点。

❶ 网络是同构的
❷ 运输费用为零
❸ 有一个管理员
❹ 拓扑从不进行修改
❺ 网络是安全的
❻ 带宽是无限的
➐ 零延迟
➑ 网络是可靠的

混沌工程师将它们视为理解网络和系统问题的核心原则。这些谬论的基本主题是网络和系统永远不可能 100% 可靠或完美。由于所有人都接受了这一事实,因此在高可用性系统的情况下存在“五个九”的概念。

所以,混沌工程师力争的可用性不到 100%,最接近完美的是 99.999%。在分布式计算环境中,您很容易做出这些错误假设,并基于它们,您可以识别复杂分布式系统中产生的随机问题。


☞ 混沌工程工具

Netflix 被认为是著名的混沌实验先驱。该公司是第一个在生产环境中使用混沌工程的公司。它设计了测试自动化平台并使其开源。对于这些平台,它统称为“猿猴军队”。


使用“猴子”这个词的理由:没有人能够预测猴子何时会进入数据中心以及猴子会破坏什么。数据中心有一组服务器,托管在线活动期间完成的所有关键功能。让我们假设一只猴子进入这个数据中心,然后表现得很随意,破坏设备,撕裂电缆,并归还经过他手的所有东西。

因此,IT 经理面临着设计他们负责的信息系统的挑战,尽管这些猴子造成了破坏,但信息系统仍能继续运行。


Simian Army 套件包括许多工具,其中一些如下:

延迟:它启动延迟以假装性能下降和网络中断。

Chaos Monkey:随机禁用生产环境实例导致系统故障。它不会对客户的活动产生任何影响。该工具的主要用途是测试系统的弹性。

它的功能是禁用一个生产系统以造成中断,然后测试其他剩余系统的响应方式。该工具的设计是强制系统中的故障,然后检查系统响应。

Chaos Gorilla:它与 Chaos Monkey 相同,但规模更大。它在测试期间删除了整个可用区。

Chaos Kong:它的功能是禁用完整的 AWS 可用区。

随着时间的推移,正在生成大量混沌程序来测试流媒体服务的能力。正因如此,猿军的队伍不断扩大。

其他混沌工程工具
AWS Fault Injection Simulator:它由故障模板组成,可以在 Production by AWS 的实例中引入。故障注入测试不会导致系统问题,因为平台有保护机构和内置冗余。
Gremlin:它与 Kubernetes 和 AWS 合作,专注于金融和零售领域。当混沌 实验达到可能威胁系统的阶段时,其内置冗余会停止混沌实验。
Monkey-Ops:它在“Go”中实现,是一个开源工具。它旨在测试和结束部署配置和随机组件。
Simoorg:这是一个导致故障的开源程序。LinkedIn 使用它在混乱中执行实验。
Security Monkey:它的工作原理是检测漏洞和安全违规,然后终止违规实例。这被视为 Conformity Monkey 的扩展。
看门猴:它的功能是处理任何废物。它确保云服务正常运行并且没有未使用的资源。
Conformity Monkey:它通过检测不遵守与协议相关的最佳实践的实例来工作。此外,它还会向该实例的所有者发送电子邮件通知。
Doctor Monkey:它检查系统的健康状态以及与系统健康相关的组件。一个例子是找到不健康实例并最终修复这些实例的 CPU 负载。
Latency Monkey:它会产生导致网络中断的通信延迟。通过这种方式,该工具检查服务的容错能力。


☞ 指导混沌工程的理论

在混沌实验中,基本思想是故意破坏系统并收集可用于增强系统弹性的数据。这种类型的工程与软件测试和软件质量保证方法密切相关。因此,它主要适用于复杂的分布式系统和进程。

您会发现预测容易出错的情况并解决这些错误很麻烦。分布式系统的规模和复杂性在随机事件的产生中发挥着重要作用。分布式系统的规模和复杂性越大,其行为的不可预测性就越大。

为了测试系统并确定其弱点,在分布式系统中有意创造了动荡的条件。这个混沌实验导致了以下问题的识别。

性能瓶颈:这些场景具有提高性能和效率的潜力。

隐藏的错误:这些问题会导致软件故障,例如故障。

盲点:这些是指监控软件无法获取足够数据的位置。

在当前时代,越来越多的组织正在迁移到云端或企业边缘。这一运动的结果是这些组织的系统变得越来越复杂和分散。这一结果也适用于强调持续交付的软件开发方法。组织的基础设施和基础设施内的流程的复杂性增加,增加了组织采用混沌工程的需求。


☞ 混沌工程的例子

让我们考虑一个每秒管理有限数量事务的分布式系统。应用混沌测试来确定软件在达到事务限制时的响应模式。观察系统是否崩溃或性能受到阻碍。

现在让我们考虑一个见证单点故障或资源短缺的分布式系统。混沌实验决定了该系统在上述两种情况下的响应。在系统出现故障的情况下,开发人员会被指示执行设计修改。在这些修改之后,混沌测试被重复以批准预期的结果。

2015 年,一个被认为与混沌工程相关的现实世界系统故障被确认。Amazon 的 DynamoDB 在区域区域中出现了可用性问题。在该地区,超过 20 个依赖 DynamoDB 的亚马逊 Web 服务在运行过程中失败。

利用这些服务的网站(其中之一是 Netflix)已关闭数小时。然而,在所有网站中,Netflix 是受阻最少的网站。引用的原因是 Netflix 已经使用混沌工程工具 Chaos Kong 来准备应对这种情况。该工具禁用了所有 AWS 可用性区域。

这些是为特定地理区域提供服务的 AWS 数据中心。在使用该工具的过程中,Netflix 获得了解决区域中断的实践经验。这一事件有力地巩固了使用混沌实验的重要性。


☞ 测试与混沌工程之间的区别

测试不会导致新知识的产生。测试工程师了解正在考虑的系统功能并编写测试用例。这里有关于系统已知属性的陈述。使用现有知识,测试做出断言。测试运行后,断言被视为 True 或 False。

混沌工程是实验。它导致新知识的产生。在实验中,提出了一个假设。如果假设不矛盾,你对假设的信心就会增强。如果假设被否定,你就会学到新东西。

有一项调查以确定假设不正确的原因。因此,混沌实验有两种可能的结果:增加您对系统新功能的信心或理解。简而言之,这是关于探索未知。

即使是大量的测试也无法匹配由于实验而产生的洞察力。测试由提前提出断言的人完成。实验是发现新特性的正式方法。通过实验发现新的系统属性后,您可以将它们转化为测试。

假设您创建了一个系统的新颖假设并将它们编码为一个新颖的假设。在这种情况下,结果是一个“回归实验”,可用于探索系统随时间的变化。正是复杂的系统问题催生了混沌实验。因此,实验比测试更受青睐。


☞ 混沌工程不意味着什么?

通常,混沌工程与反脆弱性和“破坏生产中的东西”相混淆。

❶ 抗脆弱性

Nassim Taleb 介绍了反脆弱性的概念。他创造了“反脆弱”一词来指代那些在受到随机压力时会增加强度的系统。他表示复杂技术的适应能力并没有被术语“毒物兴奋作用”充分暗示。

有人说,混沌实验是反脆弱性所指示的过程的软件版本。然而,这两个术语意味着不同的概念。在反脆弱性中,您向系统添加混乱,并希望它不会屈服于混乱,而是以增强其强度的方式做出响应。混沌工程提醒团队注意系统中固有的混乱,以便团队可以更有弹性。

在反脆弱性中,增强系统鲁棒性的第一步是识别薄弱区域并消除它们。弹性工程提出,识别什么在安全方面正确工作比识别什么不正确工作提供更多信息。

反脆弱性的另一个步骤是增加冗余。这一步源于直觉。在弹性工程中,有多个冗余导致安全故障的实例。但是,冗余几乎可以像减少故障一样轻松地对故障负责。

弹性工程有几十年的支持历史。反脆弱性被认为是同行评审和学术界之外的理论。这两种思想流派都处理复杂的系统和混乱,因此人们认为它们是相同的。然而,混沌实验在反脆弱性精神中缺乏基本的基础和经验主义。因此,您必须意识到这两者是完全不同的。

❷ 打破东西

如今,有些人认为混沌实验和“破坏生产中的东西”是同义词。仔细研究后,混沌实验的正确同义词似乎是“在生产中修复东西”。

打破东西相对容易。更具挑战性的工作是缩小爆炸半径,批判性地考虑安全性,决定修复某些东西是否值得,并得出你在实验上的投资是否必要的结论。通过这种方式,混沌实验与“破坏事物”有所区别。

☞ 开始混沌工程之前的基线指标

在开始混沌实验之前,必须获得以下指标。

应用程序指标是面包屑、上下文、堆栈跟踪和事件。高严重性事件 (SEV) 指标是按服务划分的 SEV 的 MTBF、MTTR 和 MTTD、按服务划分的每周 SEV 总数以及按 SEV 级别划分的每周事件总数。

警报和待命指标是每项服务每周前 20 个最频繁的警报、每周服务的嘈杂警报(自行解决)、解决每项服务警报的时间以及每周服务的警报总数。

基础设施监控指标是网络(数据包丢失、延迟和 DNS)、状态(时钟时间、进程和关闭)和资源(内存、磁盘、IO 和 CPU)。

收集完所有上述指标后,您可以确定混沌实验是否产生了成功的影响。此外,您可以为您的团队设定目标并确定成功指标。

当您收集了指标后,您将能够为一些相关问题提供答案
❶ 当 CPU 出现峰值时,一般的上游或下游影响是什么?
❷ 导致 CPU 峰值的三大主要原因是什么?
❸ 下个季度事故减少的目标是什么?
❹ 哪个上层五个服务的事件数最多?
❺ 哪五个上层服务的警报数量最多?


☞ 混沌工程实验的顺序

假设我们有一个共享的 MySQL 数据库。有一组 100 个 MySQL 主机,每个主机有多个分片。在区域 A 中,有一个主数据库主机和两个副本。在 Region B 中,有一个伪主节点和两个伪副本。

在这种情况下,混沌实验的顺序如下。

第一个实验:Known-Knowns:这是关于你所理解和意识到的。第一步是将副本数量从两个增加到三个。从主节点克隆一个新的副本,并将其添加到集群中。如果副本关闭,它将从集群中删除。现在,您可以开始实验了。

关闭一个replica后,需要统计检测关闭、replica移除、clone启动、clone完成、clone加入集群的时间。您必须保持执行此关闭实验的稳定频率,在此期间您需要确保实验不会在任何时候导致零副本。

您必须起草一份报告,说明副本关闭后恢复所需的平均时间。最后一步是将这个平均总时间分解为天数和小时数以确定高峰时间。

第二个实验:Known-Unknowns:这是关于你不完全理解但知道的事情。您知道克隆将会发生,并且您有日志,您可以从中知道克隆是成功还是失败。但是,您同时不知道每周平均值。平均时间是从故障发生到克隆被有效地添加到集群中计算的。

在第一个实验中,您将获得结果和数据。例如,如果集群只有一个副本,您会在五分钟后收到警报。在这种情况下,您不知道是否需要调整警报阈值以更有效地避免事件发生。

现在,您必须利用这些数据来回答第二个实验中提出的问题。您可以使用从目睹故障转移到添加克隆所需平均时间的每周平均值来了解这一系列活动的影响。您还可以评论,为了防止 SEV,适当的警报阈值是否为五分钟。

第三个实验:Unknown-Knowns:这是关于你完全理解但没有意识到的事情。在集群中,如果您同时关闭两个副本,您将不知道在星期一早上克隆现有主副本的两个新副本是必不可少的。

但是,您知道事务可以由一个伪主节点和两个副本完成。在此实验中,您需要将副本数增加到四个。同时,您应该关闭两个副本。然后,您必须在星期一早上获取在多个月内克隆现有主副本的两个新副本所必需的时间,以计算此过程的平均时间。

这个实验可以导致未知问题的识别。此类问题的一个示例是主服务器无法同时承受克隆和备份负载。因此,您必须以更好的方式使用副本。

第四个实验:Unknown-Unknowns:这是关于你不知道和不明白的事情。如果关闭主区域的整个集群,您不知道结果会怎样

您还需要了解伪区域是否可以有效地进行故障转移。在这个实验中,你必须关闭主和两个副本,整个集群。在现实生活中,这种失败是出乎意料的;因此,您不会准备好处理它。

这样的关闭需要一些工程工作。您的任务是为该工程工作分配高优先级以解决此类故障情况。完成这项工程工作后,您可以继续进行混沌实验。


混沌测试理论篇,欢迎转发和点赞👍


             

附录:混沌工程最佳实践支柱一,渲染足够的覆盖

你永远不可能在软件中达到 100% 的测试覆盖率。一是扩大覆盖面费时费力。您永远无法解释所有情况。
您可以通过确定具有最大影响的测试来提高覆盖率。
这意味着您要针对影响最严重的场景进行测试。
一些例子是网络故障、网络饱和和存储不可用。
确保实验经常运行、模拟或在生产环境中运行。
基础设施、系统和软件可能会被修改。这三项的健康状况或状况可能会发生快速变化。因此,进行实验的最佳位置是CI/CD管道。您应该在进行修改时执行这些管道。当变更开始在管道中建立信心的旅程时,最好衡量修改的潜在影响。

附录:混沌工程最佳实践支柱二,在生产环境中进行实验

生产环境由用户活动组成,流量负载或流量峰值是真实的。假设您决定在生产环境中运行混沌实验。在这种情况下,您可以彻底测试生产系统的弹性和强度,并最终获得所有重要的见解。

附录:混沌工程最佳实践支柱三:最小化爆炸半径

你不能以科学为借口阻碍生产。因此,限制混沌实验的爆炸半径是一种负责任的做法。您需要专注于小型实验。这些可以为您提供有关必须识别的内容的见解。因此,您必须专注于测试和范围。一个例子是两个不同服务之间的网络延迟测试。

混沌工程团队在实验过程中必须遵守纪律严明的方法,并测试以下内容: 他们没有意识到并且不完全理解的领域。
他们没有意识到但他们理解的领域。
他们知道但不完全理解的领域。
他们了解和理解的领域。


附录:混沌工程最佳实践支柱一,渲染足够的覆盖

你永远不可能在软件中达到 100% 的测试覆盖率。一是扩大覆盖面费时费力。您永远无法解释所有情况。
您可以通过确定具有最大影响的测试来提高覆盖率。
这意味着您要针对影响最严重的场景进行测试。
一些例子是网络故障、网络饱和和存储不可用。
确保实验经常运行、模拟或在生产环境中运行。
基础设施、系统和软件可能会被修改。这三项的健康状况或状况可能会发生快速变化。因此,进行实验的最佳位置是CI/CD管道。您应该在进行修改时执行这些管道。当变更开始在管道中建立信心的旅程时,最好衡量修改的潜在影响。

附录:混沌工程最佳实践支柱二,在生产环境中进行实验

生产环境由用户活动组成,流量负载或流量峰值是真实的。假设您决定在生产环境中运行混沌实验。在这种情况下,您可以彻底测试生产系统的弹性和强度,并最终获得所有重要的见解。

附录:混沌工程最佳实践支柱三:最小化爆炸半径

你不能以科学为借口阻碍生产。因此,限制混沌实验的爆炸半径是一种负责任的做法。您需要专注于小型实验。这些可以为您提供有关必须识别的内容的见解。因此,您必须专注于测试和范围。一个例子是两个不同服务之间的网络延迟测试。

混沌工程团队在实验过程中必须遵守纪律严明的方法,并测试以下内容:他们没有意识到并且不完全理解的领域。
他们没有意识到但他们理解的领域。
他们知道但不完全理解的领域。
他们了解和理解的领域。

附录:混沌工程最佳实践支柱一,渲染足够的覆盖

你永远不可能在软件中达到 100% 的测试覆盖率。一是扩大覆盖面费时费力。您永远无法解释所有情况。
您可以通过确定具有最大影响的测试来提高覆盖率。
这意味着您要针对影响最严重的场景进行测试。
一些例子是网络故障、网络饱和和存储不可用。
确保实验经常运行、模拟或在生产环境中运行。
基础设施、系统和软件可能会被修改。这三项的健康状况或状况可能会发生快速变化。因此,进行实验的最佳位置是CI/CD管道。您应该在进行修改时执行这些管道。当变更开始在管道中建立信心的旅程时,最好衡量修改的潜在影响。

附录:混沌工程最佳实践支柱二,在生产环境中进行实验

生产环境由用户活动组成,流量负载或流量峰值是真实的。假设您决定在生产环境中运行混沌实验。在这种情况下,您可以彻底测试生产系统的弹性和强度,并最终获得所有重要的见解。

附录:混沌工程最佳实践支柱三:最小化爆炸半径

你不能以科学为借口阻碍生产。因此,限制混沌实验的爆炸半径是一种负责任的做法。您需要专注于小型实验。这些可以为您提供有关必须识别的内容的见解。因此,您必须专注于测试和范围。一个例子是两个不同服务之间的网络延迟测试。

混沌工程团队在实验过程中必须遵守纪律严明的方法,并测试以下内容:他们没有意识到并且不完全理解的领域。
他们没有意识到他们理解的领域。
他们知道但不完全理解的领域。
他们了解和理解的领域。

【声明】内容源于网络
0
0
SYMBIO UTech
信必优信息技术有限公司--全球领先的软件产品研发、解决方案和外包服务提供商。为客户提供完整的研发即服务(RDaaS)、行业解决方案和全套的IT外包服务。发布最新IT业界资讯,欢迎随时进行互动交流。
内容 14
粉丝 0
SYMBIO UTech 信必优信息技术有限公司--全球领先的软件产品研发、解决方案和外包服务提供商。为客户提供完整的研发即服务(RDaaS)、行业解决方案和全套的IT外包服务。发布最新IT业界资讯,欢迎随时进行互动交流。
总阅读0
粉丝0
内容14