Auth0 "서비스 상태" 시작 회사 아니라 무거운 클라우드 서비스 사용자입니다. 그들에 대 한 서비스 중단의 의미 많은 사용자 관리 응용 프로그램에 로그인 할 수 없습니다 가용성은 그들에 게 중요 합니다. 최근, Auth0 엔지니어링 감독 호세 Romaniello 그들은 공급자 Microsoft 푸른 중단의 넓은 범위에서에서 면제 수 흐린 아키텍처를 공유.
다음 번역
Auth0 지역, 및 등 기본 인프라를 무시 하 고 제공 하는 네트워크 인증, 권한 부여 및 스택, 모바일 등 모든 유형의 응용 프로그램에 대 한 단일 로그온 기능을 사용자가 허용 하는 "서비스 정체성" 시작입니다.
대부분의 응용 프로그램에 대 한 인증은 중요 합니다. 따라서 디자인 타임에 우리 중 하나는 관리 되는 다중 레벨 중복을 사용 합니다. Auth0는 어디서 나 실행 될 수 있습니다: 사설 클라우드, 공용 클라우드 또는 컴퓨터 룸 임대료는 엔터티 호스트. 이 기능을 감안할 때, Auth0 또한 여러 클라우드 서비스 제공 업체를 선택를 백업 여러 지리적으로 다양 한 분야.
이 문서는 app.auth0.com에 대 한 고가용성 보장 전략으로 app.auth0.com 인프라에 대 한 매우 간단한 소개 될 것입니다.
코어 서비스 아키텍처
핵심 서비스의 아키텍처는 실제로 매우 간단 하다:
프런트 엔드 서버:
여러 개의 X 큰 Vm 및 Microsoft Azure에서 실행 되는 우분투
에 의하여 이루어져 있다. 스토리지: MongoDB, 전문된 스토리지 최적화 했을 몇 가지-Vm에서 실행 노드 내에서 서비스 라우팅: Nginx
Auth0의 모든 구성 요소에서 각 노드를 백업 하 고 동일.
구름/고가용성
클라우드 아키텍처
얼마 전, Azure 시간에 대 한 글로벌 중단을 했다. 이 기간 동안, Auth0 시스템에 대 한 HA 전략 활성화 하 고 서비스 좋은 유연성 AWS로 전환 했다. 대부분의 서비스는 주로 Microsoft Azure (IaaS)에서 실행 되며 또한 대기 보조 노드 AWS에 있습니다. Auth0 시스템 장애 조치 라우팅 전략을 갖춘 ROUTE53를 사용 합니다. TTL은 60 초로 설정 됩니다. Route53 상태 체크 검사 기본 데이터 센터, 그리고 데이터 센터 응답 하지 않는 (3 번, 10 초), DNS 포털은 신속 하 게 전환 대기 데이터 센터에. 따라서, Auth0에 대 한 최대 실패 시간 초과 하지 않습니다 2 분. 꼭두각시 마스터 각 "푸시" 배포 됩니다. 꼭두각시를 사용 하 여 클라우드 공급자 기능의 독립 구성/배포 프로세스를 수 있습니다. 꼭두각시 마스터 우리 건설 (지금 teamcity) 서버에서 실행 됩니다. MongoDB 보통 백업 보조 데이터 센터에서 보조 데이터 센터는 읽기 전용 모드로 설정 하는 동안. 우리는 등 응용 프로그램 정보, 연결, 사용자, 로그인에 필요한 모든 구성에 백업 한다. 우리는 다시 하지 않습니다 토큰 등 로그 트랜잭션 데이터를. 장애 조치가 발생 하면 하나 이상의 로그 레코드 손실 된 있을 수 있습니다. 여기, 우리는 Azure와 AWS에 실시간 백업을 기대 합니다. 우리가 혼돈 원숭이 인프라 복구, 코드 참조 Https://github.com/auth0/chaos-mona
테스트를 사용자 지정
자동 테스트
는
우리가 실시 한 1000 + 단위 및 통합 테스트. Saucelabs 사용 하 여 잠금 및 자바 로그인 창에 대 한 크로스 브라우저 (데스크탑/모바일) 시험. 우리는 통합 테스트를 수행 하려면 Phantomjs/캐스퍼를 사용 합니다. 이러한 테스트의 모든 제품 생산 환경에 추진 하기 전에 완료 됩니다.
캐나다
Auth0 CDN 사용 케이스는 매우 간단 합니다, 우리는 JS 라이브러리 서비스 (허용 다른 제공 업체, 등)을 사용 하 여 필요 다른 구성, Assset 및 구성 데이터를 s 3에 로드 됩니다. 따라서, 우리의 사용자 정의 도메인 이름 (https://cdn.auth0.com)는 TLS를 지원 해야 합니다. 궁극적으로, 우리는 우리 자신의 Sdn 구축 하기로 결정 했습니다. 우리 3 유명한 캐나다 공급자를 시도 하 고이 과정에서 다양 한 문제가 발생:
우리가 우리 자신의 CDN 도메인 이름이 없어, 우리가 첫 번째 CDN 서비스를 하려고 합니다. 또한 그 당시, 우리는 우리가 우리 자신의 SSL/TLS 도메인 이름이 있어야 합니다 깨달았다. 그 당시, CDN 서비스는 비싼 요구 자체 SSL 및 사용자 지정 도메인 이름을 사용 하는 경우. S3와 gzip 사용 될 때 우리는 몇 가지 구성 문제를 발생 했습니다. CDN 콘텐츠 협상 메커니즘 (내용 협상) 없는 S3 (압축 및 압축 되지 않은) 동일한 파일의 두 버전을 처리할 수 없습니다, 때문에 일부 브라우저에 대 한 좋은 그래서. 그래서 우리는 다른 CDN 서비스, 매우 저렴 한 CDN 서비스를 이동 했다. 두 번째 CDN 서비스를 사용 하 여, 우리가 너무 많은 문제가 발생 하 고 심지어는 몇 가지 문제를 찾을 수 없습니다 루트 매듭 전혀. 서비스 공급자 그래서 우리는 답을 찾고 시간을 많이 보내고 원격 지원을을 제공 합니다. 문제 중 일부 S3에 의해 발생할 수 및 일부 라우팅 문제가 있을 것 같지만 우리는 모든 종류의 문제. 두 번째 CDN 서비스 후 우리는 돈을 저축 하기 위해 유일한 방법은 그 문제, 해결 되지 않으면 우리 CDN 서비스 변경 다는 것을 발견. 이후이 CDN 서비스는 GitHub와 다른 높은 로드가 응용 프로그램 선택, 우리는 우리의 요구를 충족 해야 생각 합니다. 그러나, 다음 우리는 우리의 필요와 GitHub 간의 매우 큰 차이 발견. 때문에 GitHub, CDN 서비스 다운 되 면, 사용자는 단지 readme.md 미러를 볼 수 없습니다 하지만 서비스로 우리의 정체성에 대 한 응용 프로그램 서비스의 사용자에 로그인 할 되지 않습니다. 궁극적으로, 우리가 우리 자신의 CDN, Nginx, 광택 및 s 3를 사용 하 여 구축 하기로 결정 했습니다. 그것은 어떤 가동 불능 시간 없이 아주 잘 실행 하는 모든 지역 AWS와 지금까지에서 호스팅됩니다. 우리는 Route53 지연에 따라 라우팅 메커니즘을 사용 합니다.
(인증 되지 않은 코드를 실행)에 대 한 샌드 박스
Auth0의 1 개의 기능은 로그인 거래의 일환으로 사용자 지정 코드를 실행 하는 사용자 수 및 사용자가 필요에 따라 유효성 검사 규칙을 작성할 수 있습니다. 물론, 우리는 또한 몇 가지 일반적인 규칙에 대 한 일반적인 기술 자료를 구축.
샌드 CoreOS, 독 노동자 및 다른 구성 요소가 구성 됩니다. 필요에 따라 독 노동자, 세 입자에 대 한 인스턴스 풀에 리소스를 할당 합니다. 각 거주자는 별도 독 노동자 인스턴스를 할당 하 고 유휴 시간에 따라 재활용 정책을 사용 하 여. 컨트롤러를 사용 하 여 재활용 정책을 실행 하 고 해당 컨테이너에 요청을 프록시 서버를 사용 하 여.
더 샌드 박스 디자인 11 월 2014 강의 동영상 및 유인물에서 볼 수 있습니다.
감시
처음에, (완전 하지 않게 삭제 지금), pingdom 사용 하지만 우리가 우리 자신의 건강 체크 시스템 (어떤 건강 테스트 node.js에 근거 할 수 있다)를 사용자 지정할 필요가 발견. 다음 작업은 우리의 AWS의 모든 실행 됩니다.
는 서비스에 대 한 특수 개발 된 샌드박스를 사용 합니다. 우리는 HTTP API에서 샌드박스를 호출 하 고 Node.js 스크립트는 HTTP post로 게시할 수 있습니다. 모든 구성 요소는 모니터링, 로그온 트랜잭션 등 통합된 서비스 뿐만 아니라.
상태 확인 작동 하지 않는 경우 우리는 여유에서 알림 거 야, 우리 두 여유 채널-#p1和 #p2. 오류가 발생 하면 1 번, #p2频道的同事会收到消息, 오류가 발생 한 행에 두 번을 하면, 경고 #p1 채널을 통해 발표 하 고 모든 우리의 개발 연산자 (Twillio)를 통해 SMS를 받을.
우리는 더 나은 성능 통계 Librato 통계 보내기를 STATSD를 사용 합니다. 다음 그림은 예제에 표시 됩니다.
우리는 또한 얼마나 값 증가 하거나 시간이 지남에 감소 등 파생된 지표에 따라 알림을 설정 합니다. 예를 들어 우리는 로그인에 대 한 통계: 만약 Derivate (로그인) > X와 다음 보내기 경고 느슨하게.
마지막으로, 우리는 또한 인프라 구성 요소를 모니터링 하려면 Newrelic를 사용 합니다.
로그인 서비스, Elasticsearch, Logstash 및 Kibana을 사용. 여기 사용 Nginx와 mongdb 로그를 저장 합니다. 우리는 또한 Logstash을 사용 하 여 느린 쿼리를 식별 하기 위해 몽고 로그를 구문 분석.
웹사이트
auth0.com, 블로그, 등 등 모든 관련 사이트는 완전히 응용 프로그램 런타임, 그리고 우분투 + 독 노동자에서 실행에 관련 vm.
미래
우리 CoreOS 독 노동자를 마이그레이션하는. 우리는 항상 모델, 이동 하 고 싶 었 고이 모델을 바탕으로, 우리 각 노드 구성 관리를 별도로 하 고 보다는 오히려 전체로 클러스터를 관리할 수 있습니다. 의심 없이 독 노동자 미러 배포에 따라 작업의 일부를 해결 하는 우리를 도울 수 있다. AWS와 교차 하는 데이터 센터 백업 위해 Azure 사이 MongoDB. 지금, 우리는 지연을 테스트 합니다. 모든 검색 관련 기능에 대 한 우리는 Elasticsearch로 마이그레이션 됩니다. 이 시나리오에서는 MongoDB 성능이 매우 좋지 않다 멀티 테 넌 트의 특성을 감안할 때.
원본 링크: Auth0 여러 클라우드 공급자와 지역에서 건축 실행 (컴파일/동양 Zebian/제 남 중)
오신 것을 환영 합니다에 대 한 자세한 클라우드 "CSDN 클라우드" 마이크로-신호에 가입.
최신 클라우드 컴퓨팅 및 대형 데이터 정보에 대 한 @csdn 클라우드 컴퓨팅 마이크로 블로그에 오신 것을 환영 합니다.