Skip to content

Latest commit

 

History

History
141 lines (78 loc) · 5.34 KB

01-applications-architecture.md

File metadata and controls

141 lines (78 loc) · 5.34 KB

The different applications composing the Guardian website

The Guardian frontend is a set of Play Framework 2 Scala applications.

A Nginx router sits in front of all the applications and dispatches requests to the appropriate service based on the requested path.

Nginx router config file (Private)

Facia

Facia app is responsible for serving Front pages.

Examples:

All supported routes

Architectural diagram

Article

Article app serves all Guardian articles, live blogs or minute emails.

All supported routes

Applications

Applications app is responsible to serve:

  • Galleries

  • Image content (cartoon, graphic, ...)

  • Audio and video pages

  • Interactives

  • Short urls

  • Crosswords and Sudoku

  • Index pages

  • Email signup pages

  • Opt-in/out endpoint

  • Quizz submitting

  • ...

All supported routes

Onward

Onward app serves related content like:

  • Most read

  • Top stories

  • Popular content

  • Series content

All supported routes

Discussion

Discussion app is responsible to serve all content related to article comments:

  • Comments count

  • Discussion thread and individual comment

  • Report abuse

All supported routes

Commercial

Commercial app serves all commercial components (Travel offers, Masterclasses, Money, Book, Live events or Hosted content).

All supported routes

Facia-Press

Facia-press's only task is to press fronts. Pressing a front means creating a json representation of the front content and storing it in a S3 bucket for further use by the Facia app.

Since a front page is made up of one or more pieces of content, to render a page efficiently the system reads the cached output of Facia-press to drastically improve the render time of Facia. Without Facia-Press, the Facia server would have to lookup many content IDs from Content API, causing a large amount of work to be done on Facia itself, giving the server group poor performance under load, and breaking the golden response time rule (respond in under 2000ms).

Pressing happens automatically as the Facia-Press app listens to a job queue and responds to pressing requests as they occurs.

Pressing tasks are also scheduled via a cron job to be triggered on a regular basis.

It is also possible to run a pressing task by manually sending a request to one of the supported endpoints.

All supported routes

Architectural diagram

Identity

Identity app is responsible for all account related endpoints (sign-in, register, account edit, email prefs, saved for later).

Parts of Identity, including sign-in and registration are now served by a separate stack in: identity-frontend. Old sign-in and registration pages are still within this repo, to be deprecated.

All supported routes

Sport

Sport app serves match results, league tables, upcoming matches, teams and competitions for Football, Cricket and Rugby.

All supported routes

Rss

Rss app is rendering the RSS version for all Guardian content.

All supported routes

Admin

Admin app hosts a set of dashboards and tools used by Guardian developers to monitor, manage and troubleshoot the Guardian website.

All supported routes

Archive

In case none of the other apps can serve a given request, it is finally passed to the Archive app which checks if there is any redirect setup for this url or any old static content attached to it.

If yes the Archive app returns this old static content or redirect, otherwise a 404 is eventually served to the client.

All supported routes

Diagnostics

Diagnostics app is used internally to gather data and analytics from the Guardian frontend client side.

All supported routes

Preview

Preview is a standalone version of the guardian website (ie: an aggregation of all the other apps) used in the editorial tool to preview draft article before they are live. It allows us to have a fully functional version of the website without the overhead of maintaining an entire new stack.

All supported routes