今天,我想与大家分享 GlucoTracker 项目背后的技术细节。
当我们从零开始创建应用程序时,经常面临如何以及在哪里部署它们的决策。在这篇文章中,我想带大家深入了解这个项目,从我们要解决的问题,到为什么我决定采用基于亚马逊云科技的传统云架构,包括成本、挑战和收获。
GlucoTracker 为何诞生?
在玻利维亚,许多糖尿病患者仍然手动监测他们的血糖水平。这意味着数据分散,有时记录在纸上,这使得几乎无法及时检测到超出正常范围的数值,也无法快速与医生共享这些信息。传统系统通常缺乏可扩展性,并且不提供安全或实时的存储功能。
GlucoTracker 究竟是什么?
GlucoTracker 是一个云端血糖监测系统。它允许:
患者安全地记录他们的血糖水平。
医生实时查看患者的病史。
当记录的值超出正常范围时,自动生成警报。
管理不同的角色:支持人员、患者和医生。
亚马逊云科技上的系统架构
对于最小可行产品而言,目标不仅仅是拥有一个能运行的应用程序,而是验证一个安全且可访问的云架构。我们选择了容器化的单体架构。我们没有采用微服务,而是决定保持对运行环境的控制。
流程相当直接:
用户通过浏览器访问前端(使用 Angular 开发)。
前端通过超文本传输协议与我们的后端(使用 Node.js 和 Express 构建)进行通信。
前端和后端都生活在同一虚拟实例上,并使用 Docker Compose 进行编排的容器中。
根据请求的不同,后端会查询关系型数据库或与我们的文件存储进行交互。
使用的亚马逊云科技服务
为了确保可用性并将应用程序的“状态”与“计算”分离,我们使用了以下服务:
亚马逊弹性计算云(t3.small 类型):我们使用一个虚拟实例来托管前端和后端的 Docker 容器。我们选择亚马逊弹性计算云是因为它让我们完全控制环境,并且得益于 Docker,极大地简化了部署过程。
亚马逊关系数据库服务(PostgreSQL):我们在这里存储用户、血糖记录和警报。将数据库与亚马逊弹性计算云实例分离,确保了即使网络服务器宕机,医疗数据仍然完好无损且可用。
亚马逊简单存储服务:我们用它来保存用户的个人资料照片以及医生的敏感文档,如执业资格证和身份证。亚马逊简单存储服务提供了高耐久性,而不是让亚马逊弹性计算云的磁盘饱和。
亚马逊云科技身份和访问管理及安全组:这是安全层。我们为亚马逊弹性计算云实例分配了一个身份和访问管理角色,赋予其严格的权限(仅允许上传对象和删除对象)以与亚马逊简单存储服务交互,从而避免在代码中硬编码凭证。此外,亚马逊关系数据库服务中的数据库受到安全组的保护,该安全组仅接受来自亚马逊弹性计算云实例通过 5432 端口的流量。
资金:系统成本
作为开发者,我们总是担心让服务一直运行,结果第二天早上收到一张巨额账单
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。