Qual è l’architettura software di Yelp?

Yelp fornisce recensioni crowd sourced su business locali, servizi di prenotazione online. Aiuta anche a formare le piccole imprese su come rispondere alle recensioni, ospita eventi sociali e fornisce dati sul business.

Yelp ha una varietà di dati: recensioni, profili degli utenti, descrizioni del business, menu, check-ins, foto del cibo. La missione di Yelp è di connettere le persone con grandi affari. La comunità Yelp è meglio conosciuta per la condivisione di recensioni approfondite e approfondimenti sulle imprese locali di ogni tipo.

Yelp gira su uno stack LAMP e utilizza ElasticSearch per la ricerca, HAProxy per il bilanciamento del carico e Facebook Scribe per il logging.

Yelp ha iniziato con il proprio data center (gestendo le macchine da soli) prima di passare ad AWS. Hanno iniziato con un database primario con MySQL e un paio di slave di replica. Quando il traffico è aumentato, il contenuto statico è stato spostato su CDN. Il database MySQL con gli slave è stato scalato con uno sharding verticale basato sulla geografia. I compiti che erano pesanti in termini di scrittura e non interattivi per l'utente sono stati spostati su diversi database. (es. clic, impressioni, ecc. per gli inserzionisti). Hanno iniziato con un singolo centro dati. Poi è stato scalato per avere più centri dati. In base al modello di traffico che è prevalentemente in lettura, i nuovi centri dati erano "solo lettura" e un centro dati primario separato dove avvengono tutte le scritture. Con più data center, il traffico è bilanciato utilizzando DNS per instradare geograficamente il traffico al data center più vicino, rendendo l'esperienza migliore per gli utenti.

Per la registrazione Yelp aveva la propria infrastruttura con server NFS e molti dischi. I log aggregati da scribe vengono spostati su Amazon S3 per l'archiviazione e utilizzano Amazon Elastic Mapreduce (AWS EMR) per l'analisi dei log.

Amazon Elastic MapReduce per l'elaborazione dei log -

Yelp utilizzava il proprio cluster Hadoop per elaborare i log archiviati su dischi RAID. Yelp ha fatto la mossa di usare Amazon Elastic MapReduce (Amazon EMR) per eseguire i loro lavori Hadoop. Hanno spostato i dati dai dischi RAID locali ad Amazon S3. Amazon EMR è usato per alimentare funzioni come: a.) Le persone che hanno visto questo hanno visto anche b.) Le recensioni in evidenza c.) Le ricerche migliori d.) Annunci.

I loro lavori sono scritti esclusivamente in Python, mentre Yelp usa la propria libreria open-source, mrjob, per eseguire i loro lavori di streaming Hadoop su Amazon EMR, con boto per parlare con Amazon S3. Yelp usa anche s3cmd e l'utility Ruby Elastic MapReduce per il monitoraggio.

Passa all'architettura Micro Services -

Yelp è passata all'architettura Microservices. Inizialmente Yelp ha iniziato con un'applicazione web monolitica chiamata "yelp-main".

Quindi quando si visita yelp e si inizia a cercare un'attività o un argomento specifico, si colpisce il loro servizio di completamento automatico mentre si digita la query di ricerca. Poi, durante la ricerca, il servizio di backend cerca di capire la semantica della richiesta e trova i risultati adatti che corrispondono alla richiesta. Dopo che i risultati della ricerca vengono visualizzati, è possibile selezionare un business specifico e ordinare qualcosa. Questo porterebbe a colpire il loro servizio di pagamento e anche altri servizi necessari per comunicare con i partner.

Come hanno rotto il monolite "yelp-main", lo "yelp-main" diventa più un'applicazione frontend, responsabile dell'aggregazione e del rendering dei dati dal loro crescente numero di servizi backend.

Yelp usa anche lo stack ELK (Elastic Search, Logstash e Kibana) per analizzare i log.

Logstash è uno strumento open source per raccogliere, analizzare e memorizzare i log per usi futuri. Kibana è un'interfaccia web che può essere utilizzata per cercare e visualizzare i log che Logstash ha indicizzato. Entrambi questi strumenti sono basati su Elasticsearch. Elasticsearch, Logstash e Kibana, se usati insieme, sono noti come stack ELK.

Lingua di programmazione: Python

Hosting: Amazon EC2

OS: Ubuntu

Load Balancing: HAProxy

Reverse Proxy: Nginx

Search: Elastic Search

Version Control: Git

Logging: Scribe

API Framework: Swagger

Web Framework: Pyramid

References:

AWS Yelp Case study - Yelp Case Study - Amazon Web Services (AWS)

Scaling traffic to 139 million visitors - Scaling Traffic from 0 to 139 Million Unique Visitors

Using Services to Break Down Monoliths

Yelp Tech Talk - Yelp Tech Talks Launch