微服务方法很好地补充了云和DevOps。
新兴技术的下一波浪潮正在我们身上,因为人工智能,可穿戴设备,物联网(IoT)以及更多的技术变得普遍。许多组织现在面临着管理这些单片应用程序的挑战。在当今的环境中,需要速度和灵活性。Netflix,Twitter,eBay和亚马逊等大型网络公司使用的下一个架构创新是微服务。据网络服务器供应商NGINX称,68%的组织正在使用或调查这种方法。
微服务架构正在IT行业中获得动力,因为它提供了许多优于传统架构方法的优势。例如,在医疗保健领域,这种架构为新的解决方案带来了巨大希望,例如远程患者监控,使用物联网设备数据的预测建模,医疗工作流程的自动化,精准医学的生物信息学分析等。随着组织采用现代微服务架构,有六个因素可以帮助他们取得成功,同时补充现有的云和DevOps基础架构。
微服务架构如何补充云和DevOps
微服务是一种软件开发和架构方法,它将应用程序构建为松散耦合,自治且可独立部署的服务的集合。这些小型的业务驱动服务具有明确定义的通信接口,这使得应用程序模块化,易于构建和测试,并且可以高效地独立部署。
微服务方法很好地补充了云和DevOps。多年来,云计算已经成熟,可以快速提供高效的原型设计基础架构解决方案,支持巨大的数据处理和生产需求,并与内部IT组织相比实现更高的服务水平。与此同时,DevOps可以更快地交付高质量的软件,同时缩小开发人员和运营团队之间的差距。
将微服务架构与合理的DevOps实践相结合,使分散的团队能够更快地进行创新,控制自己的技术堆栈和标准,管理性能指标,管理开发和发布周期,并最终缩短产品上市时间。与此同时,微服务可以通过将单片应用程序分解为微服务并将其部署在云平台上来促进逐步迁移到云。通过这种方法,团队可以更轻松地模拟生产工作负载,以确保软件的可用性,可扩展性和质量,同时以较短的间隔发布。
六种微服务架构设计考虑因素
以下六个注意事项有助于组织成功,同时补充现有的云和DevOps基础架构:
服务发现: 在复杂的分布式系统中,团队根据负载扩展服务实例,这意味着服务实例的数量及其位置可以动态变化。拥有适当的服务发现机制可确保客户端可以基于服务注册表与正确的服务进行通信。
服务间通信: 在微服务架构中,服务以同步或异步方式进行通信以完成事务。服务间通信机制协调这种通信。如果设计不合理,服务之间的过多通信会导致“繁琐”的应用程序和糟糕的性能。要优化,请使用这些经过验证的设计模式
- 传奇模式:由事件或消息触发的一系列事务。
- API网关:通过API网关通过单个API调用抽象调用多个API。
- 命令查询责任分离(CQRS):使用物化视图将读取与读取分开,并通过订阅事件更新视图。
- 事件采购:存储事件而不是状态; 通过重播事件来获得状态。
- Service Mesh:卸载服务与软件组件之间的网络通信,以确保弹性,服务发现等。
数据完整性: 由于每个微服务都有自己的数据库,因此确保跨多个服务的事务之间的数据一致性可能是一个挑战。上述模式(如Event Sourcing,CQRS和Saga)有助于实现数据一致性。
安全性:存在 加密机制以及强大的身份验证和授权工具,以确保在休息和传输过程中的数据安全性。一些组织采用身份即服务和授权即服务解决方案。此外,需要在API网关后面保护API,以确保未经授权的用户无法使用令牌获取访问权限。
监控和运行状况检查: 随着微服务架构中服务数量的增长,识别和故障排除问题变得具有挑战性。例如,单个事务可以跨越多个服务调用,因此很难确定性能瓶颈的确切原因。使用分布式事务跟踪和运行状况检查API监视系统可确保应用程序高效运行。通过正确的监控和检测,团队可以为关键指标创建可视化,收集性能趋势的历史数据,并在出现问题时接收警报。
质量保证:微 服务通过在服务之间传递消息来处理请求。随着服务数量的增加,自动化测试对于确保所有交互和通信都经过全面测试非常重要,包括单元测试,集成测试,组件测试和合同测试。此外,每个级别的全面测试确认服务可以与其他服务一起独立运行,以支持分布式事务。最后,测试表明整体架构足够灵活,可根据需要支持其他数据源,框架或库。
更快的创新是目标
微服务架构是当今重要的IT趋势,有充分的理由。与传统的建筑方法相比,它具有许多优势,并且具有很 虽然需要克服挑战,但采用精心设计的方法,精心组织和分散的团队以及可靠的DevOps流程的组织可以通过构建新产品和现代化应用程序的现代化来更快地进行创新 - 使用现代微服务架构。
什么是微服务?
“微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务。目前,这种架构方式还没有准确的定义,但是在围绕业务能力的组织、自动部署(automated deployment)、端智能(intelligence in the endpoints)、语言和数据的分散控制,却有着某种共同的特征。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。