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


相关文章
|
1月前
|
运维 监控 Devops
如何理解DevOps在IT环境中的应用及价值
本文介绍DevOps的定义、适用团队、实施步骤及常用工具链,帮助初创公司实现自动化流程、持续集成与交付,增强灵活性和产品质量,快速响应市场需求。
72 0
如何理解DevOps在IT环境中的应用及价值
|
4月前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
141 2
|
5月前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
5月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
285 3
|
6月前
|
数据库 Java 数据库连接
Hibernate 实体监听器竟如魔法精灵,在 CRUD 操作中掀起自动化风暴!
【8月更文挑战第31天】在软件开发中,效率与自动化至关重要。Hibernate 通过其强大的持久化框架提供了实体监听器这一利器,自动处理 CRUD 操作中的重复任务,如生成唯一标识符、记录更新时间和执行清理操作,从而大幅提升开发效率并减少错误。下面通过示例代码展示了如何定义监听器类,并在实体类中使用 `@EntityListeners` 注解来指定监听器,实现自动化任务。这不仅简化了开发流程,还能根据具体需求灵活应用,满足各种业务场景。
56 0
|
6月前
|
NoSQL API 数据库
揭秘!Flask如何一键解锁RESTful API高效微服务?打造未来互联网架构的隐形力量!
【8月更文挑战第31天】本文介绍如何使用 Flask 构建高效且易维护的 RESTful 微服务,涵盖环境搭建、基本应用创建及代码详解。通过示例展示用户管理系统的 CRUD 操作,并讨论数据库集成、错误处理、认证授权、性能优化及文档生成等高级主题,助力开发者打造强大的后端支持。
94 0
|
6月前
|
敏捷开发 运维 监控
DevOps 在敏捷开发中的应用
【8月更文第30天】随着软件开发行业对快速迭代和持续交付的需求不断增加,敏捷开发方法论已经成为标准实践。DevOps 作为一种文化理念和技术实践的结合,强调开发与运维团队之间的紧密协作,以提高软件产品的质量和交付速度。本文将探讨 DevOps 如何支持敏捷开发流程,并通过具体的代码示例来展示其在迭代发布和反馈循环中的应用。
308 0
|
6月前
|
Prometheus 运维 监控
Grafana 在 DevOps 中的应用
【8月更文第29天】Grafana 是一个开源的数据可视化平台,它可以连接到多种数据源,从简单的指标到复杂的查询,都能轻松创建出漂亮的图形化仪表板。在 DevOps 领域,Grafana 被广泛应用于性能监控、故障排查、服务可用性监控等方面。本文将详细介绍 Grafana 如何支持 DevOps 团队的工作,并提供一些具体的使用案例和代码示例。
74 1
|
6月前
|
运维 监控 安全
构建高效自动化运维系统:DevOps在企业级应用的实现路径
【7月更文挑战第54天】在当今IT领域,DevOps作为一种文化和实践,旨在弥合开发与运维之间的鸿沟,以实现更快速、更可靠的产品交付。本文将深入探讨在企业环境中如何构建一个高效的自动化运维系统,不仅涵盖理论框架,还包括具体实施步骤和最佳实践。通过持续集成(CI)、持续部署(CD)、基础设施即代码(IaC)等关键概念的融合运用,文章旨在为读者提供一个清晰的指导,以便在其组织中落实DevOps策略,并实现运维效率的显著提升。
|
6月前
|
缓存 运维 前端开发
阿里云云效操作报错合集之如何解决在使用流水线构建net8应用时遇到无法构建的报错
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。

热门文章

最新文章