Skip to content

Commit fe57dd3

Browse files
committed
[DISCO-3207] [load test: skip] Update merino architecture diagram
1 parent 5ae463c commit fe57dd3

File tree

1 file changed

+95
-85
lines changed

1 file changed

+95
-85
lines changed

docs/intro.md

Lines changed: 95 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -62,90 +62,100 @@ Merino wool (from Merino sheep) produces exceptionally smooth felt.
6262
## Architecture
6363

6464
```mermaid
65+
---
66+
config:
67+
look: neo
68+
layout: elk
69+
theme: default
70+
---
6571
flowchart TD
66-
User[\fa:fa-user User/]
67-
68-
subgraph Firefox [fa:fa-firefox Firefox]
69-
online(Online Search and Suggest)
70-
offline(Offline Search and Suggest<br/>fetches adMarketplace, static Wikipedia, <br/>and other suggestions.<br/> Offline mode is fallback if Merino times out.)
71-
end
72-
73-
User --> |Accessing the Firefox URL bar| Firefox
74-
75-
subgraph Merino [fa:fa-leaf Merino]
76-
srh(fa:fa-gears Suggest Request Handler)
77-
78-
subgraph middleware [fa:fa-paperclip Middleware]
79-
Geolocation
80-
Logging
81-
UserAgent
82-
Metrics
83-
end
84-
85-
maxmind[(MaxmindDB)]
86-
Geolocation --> maxmind
87-
88-
srh -..- middleware
89-
90-
subgraph providers [fa:fa-truck Providers]
91-
adm(adm)
92-
amo(amo)
93-
geolocation(geolocation)
94-
toppicks(top-picks)
95-
weather(weather)
96-
wikipedia(wikipedia)
97-
end
98-
99-
srh --> adm
100-
srh --> amo
101-
srh --> geolocation
102-
srh --> toppicks
103-
srh --> weather
104-
srh --> wikipedia
105-
106-
subgraph backends [fa:fa-server Backends]
107-
rsb(remote settings)
108-
accuweather(accuweather)
109-
elastic(elastic)
110-
toppicks_back(top picks)
111-
dynamic_amo(dynamic addons)
112-
113-
end
114-
115-
adm --> rsb
116-
amo --> dynamic_amo
117-
toppicks --> toppicks_back
118-
weather --> accuweather
119-
wikipedia --> elastic
120-
end
121-
122-
123-
subgraph "Airflow (Merino Jobs)"
124-
wikipedia_sync(Wikipedia Sync)
125-
toppicks_sync(Top Picks Sync)
126-
addons_sync(Addons Remote Settings Upload)
127-
end
128-
129-
addons_api(Addons API)
130-
dynamic_amo --> addons_api
131-
132-
elastico[(Elasticsearch)]
133-
elastic --> elastico
134-
wikipedia_sync ..- |Syncs Wikipedia entries weekly| elastico
135-
136-
accuweather_api(Accuweather API)
137-
accuweather ..-> accuweather_api
138-
139-
redis[(Redis Cache)]
140-
accuweather ..-> |tries to query cache first| redis
141-
142-
kinto[(Remote Settings)]
143-
rsb --- kinto
144-
addons_sync ..- |Add Addons Suggestions to Remote Settings| kinto
145-
146-
toppicks_data[(GCS Top Picks Data,<br/>a list of Mozilla curated popular sites and metadata to be <br/>displayed on browser)]
147-
toppicks_sync ..-> toppicks_data
148-
149-
online --> |/api/v1/suggest| srh
150-
offline ..- kinto
72+
subgraph Firefox["fa:fa-firefox-browser Firefox"]
73+
NewTab
74+
UrlBar
75+
end
76+
subgraph NewTab["fa:fa-plus New Tab"]
77+
CuratedRecommendations("Curated Recommendations")
78+
WeatherWidget("Weather Widget")
79+
end
80+
subgraph UrlBar["fa:fa-magnifying-glass Url Bar"]
81+
online("Online Search and Suggest")
82+
offline("Offline Search and Suggest<br>fetches adMarketplace, static Wikipedia, <br>and other suggestions.<br> Offline mode is fallback if Merino times out.")
83+
end
84+
subgraph middleware["fa:fa-layer-group Middleware"]
85+
Geolocation["Geolocation"]
86+
Logging["Logging"]
87+
UserAgent["UserAgent"]
88+
Metrics["Metrics"]
89+
end
90+
subgraph suggestProviders["fa:fa-truck Suggest Providers"]
91+
admProvider("adm")
92+
amoProvider("amo")
93+
geolocationProvider("geolocation")
94+
toppicksProvider("top-picks")
95+
weatherProvider("weather")
96+
wikipediaProvider("wikipedia")
97+
end
98+
subgraph suggestBackends["fa:fa-microchip Suggest Backends"]
99+
remoteSettingsBackend("remote settings")
100+
accuweatherBackend("accuweather")
101+
elasticBackend("elastic")
102+
toppicksBackend("top picks")
103+
dynamicAmoBackend("dynamic addons")
104+
end
105+
subgraph curatedRecommendationsBackends["fa:fa-microchip Curated Recommendations Backends"]
106+
corpusBackend("corpus")
107+
extendedExpirationCorpusBackend("corpus extended expiration")
108+
gcsEngagementBackend("gcs engagement")
109+
fakespotBackend("fakespot")
110+
gcsPriorBackend("gcs prior")
111+
end
112+
subgraph Merino["fa:fa-server Merino"]
113+
srh("fa:fa-gears Suggest Request Handler")
114+
crh("fa:fa-gears Curated Recommendations Handler")
115+
mrh("fa:fa-gears Manifest Handler")
116+
middleware
117+
maxmind[("fa:fa-database MaxmindDB")]
118+
suggestProviders
119+
curatedRecommendationsProvider["fa:fa-truck Curated Recommendations Provider"]
120+
manifestProvider["fa:fa-truck Manifest Provider"]
121+
suggestBackends
122+
curatedRecommendationsBackends
123+
manifestBackend["Manifest Backend"]
124+
end
125+
subgraph Jobs["fa:fa-rotate Airflow (Merino Jobs)"]
126+
wikipediaSyncJob("Wikipedia Sync")
127+
toppicksSyncJob("Top Picks Sync")
128+
end
129+
User[\"fa:fa-user User"/] -- Accessing the Firefox URL bar --> Firefox
130+
online -- /api/v1/suggest --> srh
131+
CuratedRecommendations -- "/api/v1/curated-recommendations" --> crh
132+
manifest["manifest"] -- /api/v1/manifest --> mrh
133+
WeatherWidget --> srh
134+
srh -..- middleware
135+
crh -..- middleware
136+
mrh -..- middleware
137+
srh --> suggestProviders
138+
crh --> curatedRecommendationsProvider
139+
mrh --> manifestProvider
140+
curatedRecommendationsProvider --> curatedRecommendationsBackends
141+
manifestProvider --> manifestBackend
142+
admProvider --> remoteSettingsBackend
143+
amoProvider --> dynamicAmoBackend
144+
toppicksProvider --> toppicksBackend
145+
weatherProvider --> accuweatherBackend
146+
wikipediaProvider --> elasticBackend
147+
Geolocation --> maxmind
148+
dynamicAmoBackend --> addonsAPI("fa:fa-globe Addons API")
149+
elasticBackend --> elasticSearch[("Elasticsearch")]
150+
manifestBackend -..-> toppicksData[("fa:fa-database GCS Top Picks Data,<br>a list of Mozilla curated popular sites and metadata to be <br>displayed on browser")]
151+
toppicksSyncJob -..-> toppicksData
152+
accuweatherBackend -..-> accuweatherAPI("fa:fa-globe Accuweather API")
153+
accuweatherAPI -. tries to query cache first ..-> redis[("fa:fa-memory Redis Cache")]
154+
gcsEngagementBackend --> gcsMerinoAirflowData[("fa:fa-database GCS Merino Airflow Data")]
155+
gcsPriorBackend --> gcsMerinoAirflowData
156+
fakespotBackend --> gcsFakespotNewTabProducts[("fa:fa-database GCS Fakespot NewTab Products")]
157+
corpusBackend -..-> curatedCorpusAPI("fa:fa-globe Curated Corpus API")
158+
offline -..- kinto[("Remote Settings")]
159+
remoteSettingsBackend --- kinto
160+
wikipediaSyncJob -. Syncs Wikipedia entries weekly ..- elasticSearch
151161
```

0 commit comments

Comments
 (0)