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

简介: 构建互联网医疗平台的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流程,达到开发、测试部署、测试环境测试、生产版本升级、成产版本测试、网关重定向的过程。


相关文章
|
Kubernetes Devops 应用服务中间件
基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线
本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。
1311 2
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
3348 32
|
监控 容器
云效构建在线调试来啦!保留构建现场,高效排查构建问题
阿里云云效「构建在线调试」功能全新上线,助您一键开启 Debug 模式,在线高效调试,轻松解决构建难题!
718 120
|
监控 容器
云效构建在线调试来啦!保留构建现场,高效排查构建问题
云效构建在线调试来啦!保留构建现场,高效排查构建问题
云效构建在线调试来啦!保留构建现场,高效排查构建问题
|
运维 监控 Devops
如何理解DevOps在IT环境中的应用及价值
本文介绍DevOps的定义、适用团队、实施步骤及常用工具链,帮助初创公司实现自动化流程、持续集成与交付,增强灵活性和产品质量,快速响应市场需求。
764 0
如何理解DevOps在IT环境中的应用及价值
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
运维 监控 Devops
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第26天】DevOps作为一种将开发与运维紧密结合的文化和实践,通过促进团队协作与自动化流程,实现快速、稳定且高质量的软件交付。本文重点探讨持续交付与持续反馈两大支柱,通过实际案例和示例代码,展示其构建与实践过程。例如,使用Jenkins构建CI/CD流水线,通过Grafana和Prometheus实现实时监控,确保软件质量和快速响应。
314 1
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
625 2
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
运维 Devops jenkins
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第27天】DevOps文化强调开发和运维的紧密合作,以实现快速、高质量的软件交付。核心在于持续交付和持续反馈。本文探讨了如何通过改变组织结构、构建跨功能团队、使用自动化工具(如Jenkins)和积极收集用户反馈,来构建和实践DevOps文化。
341 0