低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Auth0 转向基于 AWS 的单云架构

2018 年 8 月 27 日

Auth0 是一家认证、授权和 SSO 服务提供商。近期,Auth0 完成将自身架构从三家云提供商(即 AWS、Azure 和 Google Cloud)转向 AWS 一家,这是因为它的服务越来越依赖于 AWS 服务。现在,Auth0 的系统分布在 4 个 AWS 域(Region)中,其中服务是跨区(Zone)复制的。

Auth0 在设计上支持运行在本地部署和云上。在过去的四年中,其系统扩展到每月服务超过15 亿次登录操作,所提供的服务也从10 种增加到30 种。同时,服务器数量从单个AWS 域中的数十台,增长到跨四个AWS 域中的一万多台。其架构中包括了一个以提供各种服务自动扩展组为后端的路由层,以及一个使用MongoDB、Elasticsearch、Redis 和PostgreSQL 的存储层,该存储层支持 Kinesis 流处理系统和 RabbitMQ、 SNS、SQS 等消息队列。

最初,Auth0 架构是跨 Azure 和 AWS 的,还有一小部分部署在 Google Cloud 上。 Azure 在一开始是作为主域,而 AWS 则用于故障转移。之后,二者的角色发生了互换。由于云间的故障转移是基于DNS 的,这意味着TTL 必须非常低,以使得客户在故障转移发生时可以快速切换。据Auth0 产品经理 Dirceu Tiegs 在企业技术博客上撰文介绍,“当我们开始使用更多的AWS 资源时,例如Kinesis 和SQS 等,为保持两个云服务提供商提供对等的特性,我们遇到了一些麻烦”。Azure 确实曾提供类似于SQS 的服务,称为Azure Service Bus。虽然博客中并未提及哪些AWS 服务在Azure 中缺失对等服务,但是存在一些情况使得特定AWS 域中缺少服务。为此, Auth0 技术团队曾撰文介绍他们是如何使用替代服务的

Auth0 在 2016 年曾发生了一次掉线故障,它们部署在 AWS 上的 VPN 终端开始丢弃来自于 Azure 和 GCE 的网络包。当时,Auth0 的数据库集群使用了所有三家云服务提供商。由于存在上述问题,导致 AWS 的主数据库节点不能接收到来自于 Azure 的心跳网络包。随后团队恢复尝试服务,所有集群节点将自身标记为后备节点,服务因而受到了影响。DNS 配置错误是导致问题的一个原因。由此,团队最终决定将 AWS 作为首要的云服务提供商,最小化部署在 Azure 的认证服务支持,只是在 AWS 宕机时使用。

图片来源: https://auth0.com/blog/auth0-architecture-running-in-multiple-cloud-providers-and-regions/

在 Auth0 的 AWS 架构中,包括数据库在内的所有服务运行在同一个域(Region)的三个可用区(AZ,Availability Zone)中。如果一个AZ 发生故障,那么其它两个AZ 将会继续提供服务。如果整个域发生故障,那么AWS 的DNS 服务 Route53 就会更新网络域名去指向另一个可用的域。一些服务相比于其它服务需要有更高的可用性保证。例如,尽管基于 Elasticsearch 的用户搜索服务可能会使用到一些过期的数据,但是所有核心功能并不会受此影响。数据库层在组成上包括了跨域的 MongoDB 集群、用于 PostgreSQL 的 RDS 复制以及部署在每个域中的 Elasticsearch 集群。

Auth0 在 2017 年之前运行着自己的 CDN ,之后转移到使用 CloudFront。企业自开发的 CDN 以 Amazon S3 为支持,使用 Varnish 和 nginx 构建。转移到 CloudFront 使得企业降低了维护工作,并且更易于配置。

Auth0 的监控最初使用 Pingdom 实现,此后企业开发了自己的健康检查系统,该系统运行node.js 脚本,并通过Slack 发布通知。企业当前的技术栈包括了Datadog、CloudWatch、Pingdom 和Sentinel。时序度量由Datadog 采集并发送给Slack,其中一小部分发送给PagerDuty。Slack 还用于实现符合 ChatOps 协作模型的任务自动化日志处理流水线使用 Amazon Kinesis、Elasticsearch 和 Kibana 收集应用日志。Sumologic 用于记录审计跟踪数据和 AWS 生成的日志。

查看英文原文:  Auth0's Move to a Single-Cloud Architecture on AWS

2018 年 8 月 27 日 19:001077
用户头像

发布了 376 篇内容, 共 94.6 次阅读, 收获喜欢 217 次。

关注

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

游戏夜读 | 数据分析的及时性

game1night

分布式缓存框架

Arvin

一致性哈希

独孤魂

练习 05-1

闷骚程序员

ARTS打卡-05

Geek_yansheng25

第五周总结

不在调上

Cypress与TestCafe WebUI端到端测试框架简介

软测小生

自动化测试 Cypress TestCafe Web UI 测试框架

消息队列与异步架构||负载均衡架构

独孤魂

【第五周】学习总结——缓存、消息队列、负载均衡

三尾鱼

极客大学架构师训练营

iOS sonar实践

余志斐

ios sonar

架构师训练营第五周总结

一剑

第五周作业

胡江涛

极客大学架构师训练营

【第五周】命题作业——实现一致性 hash 算法

三尾鱼

极客大学架构师训练营

架构师是怎样炼成的 05-1 分布式缓存,异步与集群

闷骚程序员

架构师训练营作业-Week5

wyzwlj

极客大学架构师训练营

实现一致性 hash 算法

不在调上

架构师训练营--第五周作业

花花大脸猫

极客大学架构师训练营

计算机操作系统基础(十二)---线程同步之自旋锁

书旅

php laravel 线程 操作系统 进程

第五周-作业2-学习总结

seng man

PHP实现一致性Hash算法

Arthur.Li

php 极客大学架构师训练营 一致性hash

一致性算法实现

罗亮

一致性哈希

区块链产业正开启“赛马”模式

CECBC区块链专委会

产业落地 政策扶持 赛马模式 技术革命

第五周总结

胡江涛

极客大学架构师训练营

架构师训练营 - 学习总结 第 5 周

水边

极客大学架构师训练营

架构师训练营第 0 期第 5 周作业

Arthur

极客大学架构师训练营

架构师训练营 - 第 4 周命题作业

红了哟

为什么C++可以返回Vector局部变量

韩小非

c++ 内存泄露 函数调用 堆内存管理

第五周-作业1

seng man

疫情防控加速数字化,亚洲普惠金融迎来大发展

CECBC区块链专委会

数字化 普惠金融 合作共赢

区块链各行业应用案例

CECBC区块链专委会

产业落地 政策扶持 去中心化信任 防篡改不可逆 低廉高效

架构师训练营第五周作业

CATTY

一致性Hash算法

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Auth0转向基于AWS的单云架构-InfoQ