Nkreddy15/aws-medical-saas-cloud-architecture

GitHub: Nkreddy15/aws-medical-saas-cloud-architecture

一份面向医疗 SaaS 平台的 AWS 云迁移架构案例研究,涵盖网络分段、弹性伸缩、高可用数据库及审计监控等设计决策。

Stars: 0 | Forks: 0

# AWS 医疗 SaaS 云架构 这是一个关于将医疗 SaaS 平台从托管/本地部署基础设施迁移至 Amazon Web Services 的云架构案例研究。 ## 业务问题 这家虚构的医疗公司运营着一个支持医疗社交网络、远程咨询和 AI 辅助诊断的医疗 SaaS 平台。其现有的 Windows Server 和 SQL Server 环境无法: - 在需求高峰期将 Web 和应用服务器从两台扩展到四台; - 为美国、亚太地区和欧洲的用户提供低延迟的内容分发; - 提供托管数据库备份和自动故障转移; - 将开发环境与生产环境中的医疗工作负载进行隔离; - 为敏感的医疗数据提供足够的监控、审计、身份隔离和保护。 ## 提议方案 该设计在 `us-east-1` 中使用了独立的开发和生产 VPC,每个 VPC 跨越两个可用区。公有子网仅包含面向 Internet 的负载均衡器。Web 服务器、应用服务器和 SQL Server 数据库保持在私有子网中。 核心服务包括: - Amazon VPC 和 Internet Gateway - Amazon EC2 和 Auto Scaling - Elastic Load Balancing - 适用于 SQL Server 且具备 Multi-AZ 的 Amazon RDS - Amazon S3 - Amazon CloudFront - Amazon Cognito、AWS IAM 和 AWS STS - AWS Secrets Manager 和 AWS KMS - AWS CloudFormation - Amazon CloudWatch、AWS CloudTrail、VPC Flow Logs 和 Amazon SNS ## 架构 ``` flowchart TB Users[Patients, Doctors, Staff] --> CF[Amazon CloudFront] Users --> Cognito[Amazon Cognito] Cognito --> STS[AWS STS / Role Mapping] CF --> IGW[Internet Gateway] subgraph PROD["Production VPC — 10.1.0.0/16 — us-east-1"] direction TB subgraph PUB["Public subnets — AZ 1 and AZ 2"] ALB1[External Web Load Balancer] end subgraph WEB["Private web subnets — AZ 1 and AZ 2"] WebASG[EC2 Web Tier Auto Scaling\nWindows Server + IIS\nMin 2 / Max 4] end subgraph APP["Private application subnets — AZ 1 and AZ 2"] ALB2[Internal Application Load Balancer] AppASG[EC2 App Tier Auto Scaling\nWindows Server + IIS\nMin 2 / Max 4] end subgraph DB["Private database subnets — AZ 1 and AZ 2"] RDS1[(RDS SQL Server Primary)] RDS2[(Multi-AZ Standby)] end S3[(Amazon S3)] Secrets[AWS Secrets Manager] KMS[AWS KMS] ALB1 -->|HTTPS 443| WebASG WebASG -->|HTTPS 443| ALB2 ALB2 -->|HTTPS 443| AppASG AppASG -->|SQL Server 1433| RDS1 RDS1 -. synchronous standby / failover .-> RDS2 AppASG --> S3 AppASG --> Secrets Secrets --> KMS end IGW --> ALB1 IAM[AWS IAM] -. administrative access .-> PROD CFn[AWS CloudFormation] -. repeatable infrastructure design .-> PROD CloudTrail[AWS CloudTrail] --> LogBucket[(Encrypted S3 Log Bucket)] Flow[VPC Flow Logs] --> LogBucket CloudWatch[Amazon CloudWatch] --> SNS[Amazon SNS Alerts] CloudWatch -. metrics and logs .-> PROD ``` 与之匹配的开发 VPC 使用非重叠的 CIDR 范围(`10.0.0.0/16`),并镜像生产子网层级,但不共享生产资源。 ## 关键设计决策 ### 身份隔离 - AWS 管理员使用 IAM 角色、组、最小权限策略和 MFA。 - 患者、医生和员工通过 Amazon Cognito 进行身份验证。 - 当应用程序用户需要获得访问 AWS 资源的授权时,可以通过 AWS STS 签发临时凭证。 - Secrets Manager 可防止数据库凭证被硬编码。 ### 网络分段 - 外部流量通过 CloudFront 和面向 Internet 的负载均衡器进入。 - EC2 Web 和应用实例保持私有。 - 内部应用负载均衡器仅接受来自 Web 层的请求。 - RDS 仅接受来自应用层的 SQL Server 流量。 - 安全组是一种状态控制机制,用于限制哪一层可以向下一层发起通信。 ### 可扩展性与可用性 - Web 层:`t3.medium`,最少 2 台,最多 4 台实例。 - 应用层:`m5.xlarge`,最少 2 台,最多 4 台实例。 - 数据库层:在课程设计中使用 `db.m5.2xlarge` 的 RDS for SQL Server Standard Edition。 - Multi-AZ RDS 提供备用数据库和自动故障转移。 - CloudFront 改善了主区域之外用户的内容交付体验。 ### 监控与审计 - CloudTrail 记录账户和 API 活动。 - CloudWatch 监控资源并触发警报。 - VPC Flow Logs 捕获网络流量元数据。 - SNS 发送操作通知。 - 审计日志应进行加密并保留在 S3 中。 ## 我的文档贡献 这是一个两人团队项目。我已核实的展示职责涵盖: - 网络和安全服务; - 开发和生产 VPC 设计; - 跨两个可用区的子网隔离; - Web、应用和数据库层的规模规划; - 外部和内部负载均衡器; - 安全组通信规则; - EC2 Auto Scaling 和业务连续性设计; - CloudTrail、CloudWatch 和 VPC Flow Logs。 请参阅 [`docs/individual-contribution.md`](docs/individual-contribution.md)。 ## 仓库结构 ``` . ├── README.md ├── diagrams/ │ ├── architecture-overview.mmd │ ├── architecture-overview.svg │ └── architecture-overview.png ├── docs/ │ ├── architecture-decisions.md │ ├── design-requirements.md │ ├── individual-contribution.md │ ├── limitations-and-next-steps.md │ ├── monitoring-and-auditing.md │ ├── scalability-and-continuity.md │ └── security-and-identity.md └── original-deliverables/ └── README.md ``` ## 重要限制 - 这是一个架构设计,并非已部署生产环境的证明。 - 该项目提出了与 HIPAA 对齐的控制措施;仅凭架构文档无法确立符合 HIPAA 合规性。 - 虽然建议使用 CloudFormation 模板,但并未作为提交项目的一部分完成。 - CloudFront 改善了全球交付,但计算和数据库架构仍是单区域的。 - 生产环境的实施需要成本建模、威胁建模、备份测试、恢复测试、安全审查和合规性验证。 ## 团队 - Nikhil Kumar Reddy Chalamalla - Isaiah Lacet 课程:ITC 6480 — Amazon Web Services,东北大学
标签:AWS, DPI, SaaS, 云架构, 医疗信息化, 系统迁移