67
edits
(Document the current infrastructure) |
(Add production services) |
||
Line 12: | Line 12: | ||
* Importer DB - stores extra import data | * Importer DB - stores extra import data | ||
* C&M GUI - Contribution and moderation interface | * C&M GUI - Contribution and moderation interface | ||
* | * Table renderer - for MDN and other services | ||
* Authentication - end-user authentication services | * Authentication - end-user authentication services | ||
* API documentation - describes data schema, other parts | * API documentation - describes data schema, other parts | ||
Line 31: | Line 31: | ||
The '''C&M interface''' is backed by the [https://github.com/mdn/browsercompat-cm mdn/browsercompat-cm project]. It is running [http://emberjs.com Ember.js], with the [http://ember-cli.com ember-cli] project. Developers will need to install the dependencies, including Node.js, Bower, ember-cli, and PhantomJS. See the [https://github.com/mdn/browsercompat-cm README.md] for details. | The '''C&M interface''' is backed by the [https://github.com/mdn/browsercompat-cm mdn/browsercompat-cm project]. It is running [http://emberjs.com Ember.js], with the [http://ember-cli.com ember-cli] project. Developers will need to install the dependencies, including Node.js, Bower, ember-cli, and PhantomJS. See the [https://github.com/mdn/browsercompat-cm README.md] for details. | ||
The ''' | The '''Table Renderer''' is still in planning, and the project has not started. A prototype renderer is implemented in KumaScript, in the [https://developer.mozilla.org/en-US/docs/Template:EmbedCompatTable EmbedCompatTable macro]. | ||
Local accounts are used for '''Authentication'''. For development, it is easiest to create local Django accounts backed by username and password. <code>./manage.py createsuperuser</code> can be used to create a superuser account with access to the Django admin. | Local accounts are used for '''Authentication'''. For development, it is easiest to create local Django accounts backed by username and password. <code>./manage.py createsuperuser</code> can be used to create a superuser account with access to the Django admin. | ||
Line 83: | Line 83: | ||
'''API Documentation''' is hosted at http://browsercompat.readthedocs.org/en/latest/ | '''API Documentation''' is hosted at http://browsercompat.readthedocs.org/en/latest/ | ||
== On The Way To Production == | |||
''To do'' | |||
== Production Services == | |||
''Note: this is the proposed infrastructure, and hasn't been reviewed by operations or QA'' | |||
'''MDN''' is planning to move to an AWS-based infrastructure in Q1/Q2 2016. | |||
'''MDN''' will add an OAuth2 provider interface, to allow BrowserCompat users to use their MDN account on BrowserCompat sites. | |||
BrowserCompat will be deployed as a set of small services hosted on subdomains of browsercompat.org: | |||
* https://browsercompat.org will redirect to https://www.browsercompat.org | |||
* https://www.browsercompat.org - the '''Data Explorer'' and '''C&M GUI''' server / load balancer | |||
* https://api.browsercompat.org - the '''Data API''' server / load balancer | |||
* https://importer.browsercompat.org - the '''Importer''' server, retired after import is complete. | |||
* https://integrate.browsercompat.org - the '''Table Renderer''' server / load balancer | |||
* https://www.cdn.browsercompat.org - assets for the '''C&M GUI''' interface | |||
* https://api.cdn.browsercompat.org - assets for the '''Data API''' server | |||
* https://admin.browsercompat.org - deployment coordinator | |||
* https://qa.browsercompat.org - Jenkins server for testing and deployment | |||
Backend services will not be publicly available, but will use a similar DNS scheme: | |||
* db01.prod.internal01.browsercompat.org - '''BrowserCompat DB''' and '''Importer DB''' (primary) | |||
* db02.prod.internal01.browsercompat.org - '''BrowserCompat DB''' and '''Importer DB''' (replica) | |||
* www01.prod.internal01.browsercompat.org - Web worker supporting the '''C&M GUI''' | |||
* www02.prod.internal01.browsercompat.org - Web worker supporting the '''C&M GUI''' | |||
* api01.prod.internal01.browsercompat.org - Web worker supporting the '''Data API''' | |||
* api02.prod.internal01.browsercompat.org - Web worker supporting the '''Data API''' | |||
* api03.prod.internal01.browsercompat.org - Web worker supporting the '''Data API''' | |||
* worker01.prod.internal01.browsercompat.org - Async task worker supporting the '''Data API''' | |||
* worker02.prod.internal01.browsercompat.org - Async task worker supporting the '''Data API''' | |||
* cache01.prod.internal01.browsercompat.org - Caching server (Redis) | |||
* cache02.prod.internal01.browsercompat.org - Caching server (Redis) | |||
* broker01.prod.internal01.browsercompat.prg - Messaging broker (Redis) | |||
"*.internal01.browsercompat.org" identifies servers in a particular datacenter. This may be replaced with another name that matches the actual datacenter ("ec2-usw2.browsercompat.org"), or are picked by the deployment backend (Heroku, [Deis http://deis.io]). | |||
A parallel infrastructure will be used for staging: | |||
* https://www.stage.browsercompat.org - the '''Data Explorer''' and '''C&M GUI''' server / load balancer | |||
* https://api.stage.browsercompat.org - the '''Data API''' server / load balancer | |||
* https://importer.stage.browsercompat.org - the '''Importer''' server, retired after import is complete. | |||
* https://integrate.stage.browsercompat.org - the '''Table Renderer''' server / load balancer | |||
* https://www.stage.cdn.browsercompat.org - assets for the '''C&M GUI''' interface | |||
* https://api.stage.cdn.browsercompat.org - assets for the '''Data API''' server | |||
Staging will have parallel backend servers, but without the same redundancy: | |||
* db01.stage.internal01.browsercompat.org - '''BrowserCompat DB''' and '''Importer DB''' | |||
* www01.stage.internal01.browsercompat.org - Web worker supporting the '''C&M interface''' | |||
* api01.stage.internal01.browsercompat.org - Web worker supporting the '''Data API''' | |||
* worker01.stage.internal01.browsercompat.org - Async task worker supporting the '''Data API''' | |||
* redis01.stage.internal01.browsercompat.org - Caching server and messaging broker (Redis) | |||
When needed, some or all of a load testing infrastructure will be deployed: | |||
* https://www.load.browsercompat.org - the '''Data Explorer''' and '''C&M GUI''' server / load balancer | |||
* https://api.load.browsercompat.org - the '''Data API''' server / load balancer | |||
* https://importer.load.browsercompat.org - the '''Importer''' server, retired after import is complete. | |||
* https://integrate.load.browsercompat.org - the '''Table Renderer''' server / load balancer | |||
* https://www.load.cdn.browsercompat.org - assets for the '''C&M GUI''' interface | |||
* https://api.load.cdn.browsercompat.org - assets for the '''Data API''' server | |||
as well as backends appropriate for the load test, and as many load testing servers as needed. |
edits