前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >印尼医疗龙头企业Halodoc的数据平台转型之路:数据平台V1.0

印尼医疗龙头企业Halodoc的数据平台转型之路:数据平台V1.0

作者头像
ApacheHudi
发布2022-05-18 08:43:38
2.2K0
发布2022-05-18 08:43:38
举报
文章被收录于专栏:ApacheHudiApacheHudi

1. 摘要

数据是每项技术业务的支柱,作为一个健康医疗技术平台,Halodoc 更是如此,用户可以通过以下方式与 Halodoc 交互:

  • • 送药
  • • 与医生交谈
  • • 实验室测试
  • • 医院预约和药物

所有这些交互都会产生高度敏感、多样化且通常是非结构化的数据。因此随着公司的成长,必须拥有一个强大的数据平台,平台需要满足如下需求:

  • • 确保数据的隐私和安全
  • • 在处理结构化和半/非结构化数据时可靠、可扩展、快速且高可用
  • • 促进为业务/运营团队生成报告和实时仪表板
  • • 为数据科学团队提供一个平台来运行实验、模型和存储结果

2. 数据平台

Halodoc 基础设施托管在 AWS 上,公司的数据基础设施是 AWS 托管服务和自托管服务的组合,Amazon Redshift 是我们存储各类型数据的主要数据仓库。

该平台的关键组件如下所述

2.1 数据源

Halodoc 生成的数据属于以下类别:

  • • 事务数据 - 各种后端服务生成的数据,如咨询、药房订单、约会等,这些数据主要来自关系数据库 (MySQL)。
  • • 数字健康记录 - 医生预约、医疗账单、处方、保险索赔等的医疗报告。这些可能是图像或文件,具体取决于医院和商家合作伙伴。
  • • 商户库存数据 - 我们商户药店的库存数据可以采用不同的格式(csv、xls),通过不同的工具(SFTP、定制软件)上传。
  • • 来自后端服务的事件——我们的后端由微服务和一个事件生成/消费平台组成,用于这些服务之间的异步通信。因此跨不同后端服务生成的事件需要进行实时处理。
  • • 保险索赔/医疗账单- Halodoc作为 TPA 还参与索赔解决、验证索赔和检测欺诈。这些文档可以以各种格式(csv、xls、PDF)获取,需要及时处理以便为患者和保险提供商提供更顺畅的理赔体验。

2.2 批处理管道

批处理管道是我们数据平台的核心,对后端服务和第三方分析工具生成的事务/临时数据进行处理并写入数据仓库。该管道的主要组成部分包括:

  • • ETL 工具:ETL 代表提取、转换、加载,ETL 工具有多种选择。在 Halodoc ETL 主要使用 Airflow 和 Pentaho。
  • • Pentaho:Pentaho 是一个提供数据提取、集成、转换、挖掘和加载功能的工具。Pentaho 很大程度上是由 UI 驱动,并且受限于软件提供的功能,在 Halodoc我们正在慢慢地从 Pentaho 转向 Airflow。
  • • Airflow:Airflow 是一个非常灵活的工具,可以更好地控制转换,同时还可以在现有operator之上构建自己的框架,Airflow 还提供了一个很好的仪表板来监控和查看作业运行状态。

数据仓库和数据湖:数据仓库是经过优化的数据库,可以分析来自不同系统的关系型数据,数据结构和模式是预先定义的,以优化快速 SQL 查询,结果通常用于报告和分析。数据被清理、丰富和转换,以便它可以作为用户可以信任的“单一事实来源”。数据湖则是不同的,因为它存储来自业务线应用程序的关系数据以及来自移动应用程序、物联网设备和社交媒体的非关系数据,捕获数据时未定义数据结构或模式。

  • • Amazon S3 数据湖:Amazon S3 是 Halodoc 的数据湖。来自各种来源的所有数据首先转储到各种 S3 存储桶中,然后再加载到 Redshift(我们的数据仓库)中,S3 中的数据也充当备份,以防任何 ETL 作业失败。
  • • Amazon Redshift:我们使用 Amazon 的 Redshift 作为集中式数据仓库,包含一个六节点 Redshift 集群,数据以有规律的节奏从各种来源流入,Amazon Redshift 针对批量加载和通过复制命令从 S3 加载进行了优化,我们所有的业务分析师、数据科学家和决策者都通过各种可视化工具(Looker/Metabase)、SQL 客户端和其他分析应用程序访问数据。

存储在 Redshift 中的数据被建模为星型模式,根据我们拥有的业务单位,由维度表包围中心事实表。

2.3 实时处理管道

实时数据处理管道作为 Halodoc 事件平台的底层基础设施,Halodoc 的所有后端服务在每次操作/状态更改后都会生成事件,并通过此管道进行处理,大多数基于流的系统由以下 4 个组件组成:

  • • 基于日志的事件存储:分布式、可追加的基于日志的系统,它收集和存储来自不同来源的数据。例如:Kafka、AWS Kinesis Streams、Google PubSub 等。
  • • 流计算系统:使用来自事件存储的数据并在其上运行聚合函数,然后将结果存储在服务层存储中,例如AWS Kinesis Data Analytics、Apache Flink、Apache Storm、Apache Spark 等。
  • • 服务层存储:存储聚合数据并提供优化的查询响应,它也可以存储时间序列数据。例如InfluxDB、Elasticsearch、AWS DynamoDB 等。
  • • 服务层:为聚合数据提供可视化表示,例如:Kibana、Grafana 等。

架构

  • • Apache Kafka – Kafka 已成为大多数开源流处理存储层的事实标准,用于以低延迟的流方式存储大量数据。
  • • Apache Flink:开源平台,为数据流上的分布式计算提供数据分发、通信、状态管理和容错。
  • • Elasticsearch:开源数据存储,主要针对搜索进行了优化,但后来作为运营和业务指标的服务层存储变得非常流行。
  • • Kibana/Grafana :一个连接到 Elasticsearch 数据存储并充当服务层的开源可视化框架。

2.4 数据可视化

有很多可用的数据可视化工具,其中大多数都支持用于构建仪表板的各种数据源。我们对工具的选择主要受以下因素驱动:

  • • 易用性:BI 开发人员/分析师必须很容易即可创建和维护报告和仪表板。
  • • RBAC:我们应该能够为公司中的不同用户提供细粒度的访问。
  • • 可维护性:工具必须易于维护,无论是在软件升级、部署和故障排除等方面。

考虑到所有这些因素,我们得出了以下工具:

Looker

  • • Looker 是一款高级工具,可提供丰富的可视化效果,是我们所有 BI 报告的一站式平台。
  • • 它提供了一种简单的方法来衡量 WoW / MoM 增长并跟踪我们的年度目标。
  • • 在解决问题时Looker 的支持团队反应迅速,同时提供具有最新功能的软件升级。

Metabase

  • • Metabase 是一个简单的开源工具,可供公司中的每个人提问和可视化数据。
  • • 在 Halodoc,Metabase 用作自助服务工具,操作人员和 BI/后端开发人员可以在其中查询以创建自定义报告和仪表板。
  • • 集成插件以发送有关某些关键业务指标的实时警报,警报渠道包括slack/电子邮件。

Kibana

  • • 由于使用 Elasticsearch 作为数据源,Kibana 提供了方便的仪表板可视化。
  • • 所有用于监控实时指标(如商家取消、医生取消等)的实时仪表板都在 Kibana 中创建。
  • • 客户支持和运营团队依靠这些仪表板做出及时的决策。

2.5 监控数据基础设施

监控和警报对于检查系统和发现生产问题是不可或缺的,它还直接影响平台的可靠性。Halodoc 数据基础设施由各种工具组成,其中一些由 AWS 管理(Redshift、MSK),而另一些则由内部托管(Elasticsearch、Flink)并由我们的开发运营/数据团队维护,用于监控的工具包括: Cloudwatch:它是 AWS 用于监控指标和警报的事实标准,所有 AWS 托管服务(Redshift、MSK、RDS、DynamoDB)都将其指标发布到 Cloudwatch,我们为以下各项设置了警报:

  • • CPU 使用率和 Redshift 集群运行状况
  • • RDS 上的慢查询
  • • Lambda 错误
  • • 数据库连接数等等

警报渠道包括通过 Lambda 发送的 slack/电子邮件。 Prometheus 与 Grafana:Prometheus 和 Grafana 的组合越来越流行,作为 DevOps 团队用于存储和可视化时间序列数据的监控,Prometheus 充当存储后端,Grafana 充当分析和可视化的界面。Prometheus 通过这些目标上的导出器从 HTTP 端点抓取指标,从受监控的目标收集指标。我们已经自托管了一些平台组件,例如 Airflow、Elasticsearch、Flink 等,自托管这些工具的决定是考虑到成本、devops/数据团队的经验和监控成本。我们为所有这些工具提供了 prometheus 指标导出器,并且使用了用于 Elasticsearch、Airflow 和 Flink 的开源 Grafana 仪表板,同时在 prometheus 上设置了基于多种可用指标的各种阈值的警报设置,以通过 slack/email 告警。

3. 总结

在这篇博客中总结了Halodoc的数据平台,从不同来源的数据到各种可视化工具,我们在选择这些工具时的思考过程,维护和运行此基础设施是一项艰巨的任务,我们不断挑战自己以保持基础设施简单并更有效地解决问题。可扩展性、可靠性和可维护性是构建 Halodoc 技术平台的三大支柱。后续还将介绍数据平台架构到Lakehouse架构的演进,敬请期待。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ApacheHudi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 摘要
  • 2. 数据平台
    • 2.1 数据源
      • 2.2 批处理管道
        • 2.3 实时处理管道
          • 架构
        • 2.4 数据可视化
          • Looker
          • Metabase
          • Kibana
        • 2.5 监控数据基础设施
        • 3. 总结
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档