云架构师面试问题:架构、迁移与安全

Milad Bonakdar
作者
通过多云设计、云迁移、微服务、灾难恢复、零信任和成本权衡等实用问题,准备云架构师面试。
引言
云架构师面试通常考察你如何做架构取舍:可靠性与成本、托管服务与可移植性、统一标准与团队自治、安全控制与交付速度。好的回答会说明业务目标、约束条件、目标架构、主要风险,以及上线后的运营模型。
使用本指南练习云架构师面试中常见的问题:多云策略、迁移规划、微服务、服务网格、灾难恢复、零信任和成本优化。
多云策略
1. 你如何设计多云策略?
回答: 多云利用多个云服务提供商来实现弹性、成本优化并避免供应商锁定。
关键考虑因素:
架构模式:
1. 主动-主动(Active-Active):
- 工作负载在多个云上同时运行
- 跨提供商进行负载均衡
- 最大可用性
2. 主动-被动(Active-Passive):
- 主云用于生产
- 辅助云用于灾难恢复
- 具有成本效益
3. 云无关服务(Cloud-Agnostic Services):
- 使用 Kubernetes 实现可移植性
- 使用 Terraform 实现跨云的 IaC(基础设施即代码)
- 标准化的 CI/CD 管道
挑战:
- 管理复杂性
- 数据传输成本
- 技能要求
- 一致的安全策略
稀有度: 常见 难度: 困难
2. 你如何计划和执行云迁移?
回答: 云迁移需要仔细的计划、风险评估和分阶段执行。
迁移的 7R 原则:
迁移策略:
1. 重新托管(Rehost,Lift and Shift):
- 用最少改动迁移应用
- 适合需要快速退出数据中心的场景
- 迁移后通常还需要优化
2. Relocate:
- 不改变应用本身,迁移平台或虚拟化工作负载
- 当目标云提供兼容迁移路径时很有用
- 验证网络、身份、备份和许可证假设
3. 重新平台化(Replatform):
- 做有限改动,例如迁移到托管数据库或容器平台
- 在迁移速度和运营改进之间取得平衡
4. 重构/重新架构(Refactor/Re-architect):
- 为云原生扩展、韧性或交付速度重新设计
- 成本和风险最高,应优先用于高价值系统
5. 重新购买(Repurchase):
- 用 SaaS 替换应用
- 例如用托管 CRM 平台替换自研 CRM
6. 退役(Retire):
- 停用不再创造业务价值的应用
7. 保留(Retain):
- 因合规、延迟、成本或迁移顺序原因暂时保留系统
迁移阶段:
迁移执行:
1. 评估:
- 清点应用程序和依赖项
- 分析成本(TCO,总拥有成本)
- 识别风险和约束
2. 规划:
- 为每个应用程序选择迁移策略
- 定义成功标准
- 创建回滚计划
3. 试点迁移:
- 从非关键应用程序开始
- 验证方法
- 优化流程
4. 数据迁移:
5. 切换策略:
- 大爆炸(Big Bang): 一次性全部迁移(风险高)
- 分阶段(Phased): 逐步迁移(更安全)
- 并行运行(Parallel Run): 同时运行两个环境
风险缓解:
- 全面测试
- 自动化回滚程序
- 性能基准
- 安全验证
- 成本监控
稀有度: 非常常见 难度: 中等-困难
微服务架构
3. 你如何设计微服务架构?
回答: 微服务将应用程序分解为小型、独立的服务。
架构:
关键原则:
1. 服务独立性:
- 每个服务拥有自己的数据
- 独立部署
- 允许技术多样性
2. 通信:
3. API 网关:
- 单一入口点
- 身份验证/授权
- 速率限制
- 请求路由
4. 服务发现:
- 动态服务注册
- 健康检查
- 负载均衡
优点:
- 独立扩展
- 技术灵活性
- 故障隔离
- 更快的部署
挑战:
- 分布式系统复杂性
- 数据一致性
- 测试复杂性
- 运营开销
稀有度: 非常常见 难度: 困难
4. 你如何在微服务中实现服务网格?
回答: 服务网格 为服务到服务通信提供基础设施层,处理流量管理、安全性和可观察性。
架构:
主要特点:
1. 流量管理:
- 负载均衡
- 断路器
- 重试和超时
- 金丝雀部署
- A/B 测试
2. 安全性:
- mTLS 加密
- 身份验证
- 授权策略
3. 可观察性:
- 分布式追踪
- 指标收集
- 访问日志
Istio 实现:
断路器配置:
mTLS 安全性:
使用 Kiali 进行可观察性:
服务网格比较:
何时使用:
- 共享流量、身份和可观察性策略能够抵消运营复杂性的微服务环境
- 需要高级流量管理
- 安全要求(mTLS)
- 多集群部署
- 可观察性要求
稀有度: 常见 难度: 困难
设计模式
5. 解释断路器模式以及何时使用它。
回答: 断路器(Circuit Breaker) 模式可以防止分布式系统中的级联故障。
状态:
- 关闭(Closed): 正常运行
- 打开(Open): 检测到故障,请求快速失败
- 半开(Half-Open): 测试服务是否已恢复
用例:
- 外部 API 调用
- 数据库连接
- 微服务通信
- 第三方集成
稀有度: 常见 难度: 中等-困难
事件驱动架构
6. 解释事件驱动架构以及何时使用它。
回答: 事件驱动架构(Event-Driven Architecture,EDA) 使用事件来触发和在解耦的服务之间进行通信。
架构:
核心概念:
1. 事件(Event):
- 发生的不可变的事实
- 包含相关数据
- 带有时间戳
2. 事件生产者(Event Producer):
- 发布事件
- 不知道消费者
3. 事件消费者(Event Consumer):
- 订阅事件
- 异步处理
4. 事件总线/代理(Event Bus/Broker):
- 路由事件
- 示例:Kafka、RabbitMQ、AWS EventBridge
Kafka 实现:
事件溯源模式(Event Sourcing Pattern):
CQRS(命令查询职责分离):
优点:
- 松耦合
- 可扩展性
- 灵活性
- 审计跟踪(事件溯源)
- 实时处理
挑战:
- 最终一致性
- 事件模式演变
- 调试复杂性
- 重复事件处理
用例:
- 电子商务订单处理
- 实时分析
- 物联网数据处理
- 微服务通信
- 审计和合规系统
稀有度: 常见 难度: 困难
灾难恢复
7. 你如何设计灾难恢复策略?
回答: DR 确保中断期间的业务连续性。
关键指标:
- RTO(恢复时间目标): 最大可接受的停机时间
- RPO(恢复点目标): 最大可接受的数据丢失
DR 策略:
实施示例:
自动化:
测试:
- 根据工作负载关键性定期进行 DR 演练
- 自动化测试
- 文档化运行手册
- 事故后审查
稀有度: 非常常见 难度: 困难
安全与合规
8. 你如何在云架构中实施零信任安全?
回答: 零信任(Zero Trust) 假设没有隐含的信任,验证一切。
原则:
- 显式验证
- 最小权限访问
- 假设违规
实施:
组件:
1. 身份和访问:
2. 网络分段:
- 微分段
- 服务网格(Istio、Linkerd)
- 网络策略
3. 加密:
- 静态数据
- 传输中的数据
- 端到端加密
4. 持续监控:
- 实时威胁检测
- 行为分析
- 自动化响应
稀有度: 常见 难度: 困难
成本优化
9. 你如何优化跨多个云提供商的成本?
回答: 多云成本优化策略:
1. 工作负载放置:
- 分析定价模型
- 考虑数据传输成本
- 利用区域定价差异
2. 预留容量:
- AWS 预留实例
- Azure 预留虚拟机实例
- GCP 承诺使用折扣
3. 竞价型/抢占式实例:
4. 监控和治理:
- 统一的成本仪表板
- 预算警报
- 基于标签的成本分配
- 自动化资源清理
5. 架构优化:
- 用于可变工作负载的无服务器架构
- 自动缩放策略
- 存储分层
- 用于静态内容的 CDN
稀有度: 非常常见 难度: 中等-困难
结论
云架构师面试更看重实际决策能力,而不是背诵架构图。请准备好解释:
- 多云: 为什么某个工作负载需要多个云提供商,以及这会增加哪些复杂性
- 迁移: 7R 选项、依赖发现、分阶段切换、回滚和迁移后优化
- 微服务: 服务边界、数据所有权、API 契约、韧性和运营成本
- 服务网格: 什么时候 mTLS、流量策略和可观察性足以证明额外平台层的价值
- 设计模式: 断路器、Saga、CQRS、幂等性、重试和超时
- 事件驱动系统: 事件契约、顺序、重复处理、模式演进和最终一致性
- 灾难恢复: RTO/RPO、区域策略、运行手册、测试和恢复证据
- 安全: 以身份为中心的访问、最小权限、加密、分段、日志和假设已被入侵的思维
- 成本优化: 合理规格、承诺折扣、标签、清理闲置资源、数据传输和 FinOps 治理
回答时先说明业务约束,再说清取舍,并解释你会如何在生产环境中验证设计。


