MDN/Development/CompatibilityTables/Infrastructure: Difference between revisions

Add production services
(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
* Tables renderer - for MDN and other services
* 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 '''Tables 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].
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.
67

edits