构建互联网医疗平台的Devops应用架构

本文涉及的产品
云原生 API 网关,700元额度,多规格可选
简介: 构建互联网医疗平台的Devops应用架构

构建互联网医疗平台架构平台,我们尝试了用DevOps的方式,这个跟实际情况有直接关系。我们当时的技术场景比较多,业务场景极其复杂。


后端


是Spring cloud构成的微服务,postgresql作为主数据集库支撑互联网医院和互联网医疗业务中台两个平台的业务数据,redis作为用户会话存储,RabbitMQ作为业务预约队列使用,netty作为即时消息通讯使用。统一由openresty的api网关与客户端交互。


后端架构图比较庞大,抽时间再画。


前端


形态更为复杂,前期研发app,分为两端,患者和医生,统一使用flutter减少业务开发的工作量(不过也带来了对flutter技术深入适配调试的工作量),后期又增加了H5的微信公众号,以及小程序。


2021031921314055.png


集成环境


需要形成互联网医院->医疗中台->医院HIS的三端接口集成和数据协作,实现互联网处方和支付,可以直接同步至医院HIS。


20210319213140349.png


产品场景


产品面向的是不限制医院数量的架构,也就是可以通过配置,不断接入更多的医院进入互联网医疗平台,并且实现医疗HIS系统的对接,支付缴费的协同。


20210319213140567.png


云端使用N o.1云,后期根据业务需求又纳入了其他云(区域医疗的独立运营需求导致),因此云端部署复杂度非常高!


20210319213140950.png


微服务


这个过程中我们的架构设计首先要解决的就是发布问题,微服务的使用是必须的,因为业务场景过于复杂,面向的客户特别多,单体统一发布就是一种灾难,但好处是医疗业务的应用架构形态比较清晰,很容易进行微服务的模块化划分,这样我们就形成了多个粒度适中的微服务。


20210319213141284.png


**部署 **


过程微服务和api网关都分成两个版本同时在云端运行,一个是Test,一个是Prod。为什么要使用这种形式呢?因为在复杂的业务与计算环境中,我们的测试环境尽量贴近实际生产环境是最好的,否则,测试出的系统如果上线,会因为生产环境的各种特殊情况而出现严重bug,那么这个过程中的反复回归测试,会导致大量的时间浪费,影响上线。


还有就是测试与生产差异过大的环境,会导致发布工程的过程涉及到的工程师之间交流更多,出现的实际变数更大,协调成本也就更高,甚至导致重复性再配置,再测试的循环煎熬。


20210319213141589.png


我们的目标是Test环境的微服务进行严格的测试后,达到生产级别的需求和质量后,只需要push到生产环境的升级版本,再次经历升级版本的测试确认后,api网关对生产环境的指向更新到最新版本。


图库


另外API网关还有下一级的nginx,主要为前端H5提供发布服务和图片下载服务,一方面互联网医疗的患者图属于隐私级别,因此必须通过细粒度的用户/图对应关系形成ACL权限访问表进行健康图的访问控制;另一方面为了提升图访问的并发性能,API网关负载了通过2台图代理服务,代理服务通过LUA脚本访问数据库对当前回话用户进行ACL鉴权后,才可连接OSS访问健康档案图。


20210319213141781.png


最麻烦的还是app的应用商店发布问题,一方面苹果的审核慢,第二方面有些内容审核过程必须屏蔽,否则很难通过,因此这也是生产环境必须使用多版本,尤其增加了审核版本,这与最终升级版本是不同的,那么即便是android版本发布成功了,也不能直接提供最新功能,否则影响ios用户的使用,必须等待ios审核完成。


实际上网关很难在这个问题上独立实现统一版本调整,所以还要依赖app和后端版本管理进行一定的审核过程协调适配,审核未完成时仍要保持微服务的老版本,当审核成功后,APP版本再与后端保持一致的动态升级,网关、H5也需要配合升级。这个过程往往出现在重大功能的升级过程。为了防止客户使用出现严重抖动,所以很难想象没有前后端开发、测试与QA、运维工程师的协同配合会是什么情况。


所以整个系统的后端从基础软件、微服务统一使用docker部署,后端工程师和运维工程师对docker的发布管理基本上直接在docker管理工具中完成,也就是dev push -> test push -> prod version+1 -> api gateway redirect的devops流程,达到开发、测试部署、测试环境测试、生产版本升级、成产版本测试、网关重定向的过程。


相关文章
|
10天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
16天前
|
运维 持续交付 API
从零构建微服务架构:一次深度技术探索之旅####
【10月更文挑战第28天】 本文记录了作者在从零开始构建微服务架构过程中的深刻技术感悟,通过实战案例详细剖析了微服务设计、开发、部署及运维中的关键要点与挑战。文章首先概述了微服务架构的核心理念及其对企业IT架构转型的重要性,随后深入探讨了服务拆分策略、API网关选型、服务间通信协议选择、容器化部署(Docker+Kubernetes)、以及持续集成/持续部署(CI/CD)流程的设计与优化。最后,分享了在高并发场景下的性能调优经验与故障排查心得,旨在为读者提供一套可借鉴的微服务架构实施路径。 ####
54 3
|
10天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
5天前
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
32 4
|
14天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
19天前
|
运维 监控 Devops
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第26天】DevOps作为一种将开发与运维紧密结合的文化和实践,通过促进团队协作与自动化流程,实现快速、稳定且高质量的软件交付。本文重点探讨持续交付与持续反馈两大支柱,通过实际案例和示例代码,展示其构建与实践过程。例如,使用Jenkins构建CI/CD流水线,通过Grafana和Prometheus实现实时监控,确保软件质量和快速响应。
28 1
|
18天前
|
运维 Devops jenkins
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第27天】DevOps文化强调开发和运维的紧密合作,以实现快速、高质量的软件交付。核心在于持续交付和持续反馈。本文探讨了如何通过改变组织结构、构建跨功能团队、使用自动化工具(如Jenkins)和积极收集用户反馈,来构建和实践DevOps文化。
29 0
|
7天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
6天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####