donnemartin
donnemartin

system-design-primer

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Analisi AI · Italiano

openai · gpt-4o-mini

Sintesi

Questo repository è una risorsa completa per apprendere i principi di progettazione di sistemi distribuiti e prepararsi per gli colloqui tecnici sul system design. Contiene una collezione organizzata di argomenti, soluzioni a domande di colloquio e flashcard Anki per facilitare l'apprendimento. L'obiettivo è aiutare gli ingegneri a progettare sistemi scalabili e affrontare con successo le sfide dei colloqui.

Casi d'uso

  • Preparazione per colloqui tecnici di system design per posizioni in aziende tecnologiche.
  • Formazione e approfondimento per ingegneri che intendono progettare sistemi scalabili e robusti.
  • Riferimento rapido per architetti di software sulla scelta di pattern e tecnologie (es. SQL vs NoSQL, caching).
  • Punto di partenza per studenti di informatica o neolaureati per comprendere le basi della progettazione di sistemi distribuiti.
  • Guida per la risoluzione di problemi di scalabilità e prestazioni in sistemi esistenti.

Idee SaaS / Business

Piattaforma Interattiva di Simulazione Colloqui

Una piattaforma web-based che offre simulazioni interattive di colloqui di system design con feedback automatizzato o semi-automatizzato. Potrebbe includere scenari dinamici, suggerimenti per la progettazione e la possibilità di confrontare le proprie soluzioni con esempi di alto livello, oltre a estendere le flashcard Anki con funzionalità premium.

Tool di Analisi e Ottimizzazione Architetturale

Un servizio SaaS che permette agli sviluppatori e architetti di caricare diagrammi architetturali o descrizioni di sistemi e ricevere analisi automatiche su potenziali colli di bottiglia, scelte di design alternative (es. cache, DB, load balancing) e suggerimenti per la scalabilità e l'affidabilità, basati sui principi trattati nel primer.

Corso di System Design Premium con Mentoring

Offrire un corso strutturato di system design premium, basato sui contenuti del repository ma arricchito con lezioni video, esercizi pratici guidati e sessioni di mentoring personalizzate con esperti del settore. Il modello potrebbe includere livelli di abbonamento per l'accesso a contenuti e supporto aggiuntivi.

Target utenti
Ingegneri del software, architetti di sistema, studenti di informatica, candidati a colloqui tecnici (specialmente per ruoli di ingegnere backend/full-stack/devops), e chiunque sia interessato a capire come si progettano sistemi scalabili e distribuiti.
Categoria
Anki (Flashcards)
Monetizzazione
Potenziale franchising educativo basato sui contenuti, creazione di corsi online a pagamento, vendita di libri o e-book basati sul materiale del repository.
Licenza
Other
Trend: La richiesta di profili con competenze di System Design è in costante crescita nel mercato del lavoro IT, rendendo il contenuto altamente rilevante e richiesto.

README · tradotto in italiano

Il Manuale di Progettazione di Sistemi

Introduzione

Motivazione

Impara a progettare sistemi su larga scala. Preparati per il colloquio di progettazione di sistemi.

Impara a progettare sistemi su larga scala

Imparare a progettare sistemi scalabili ti aiuterà a diventare un ingegnere migliore.

La progettazione di sistemi è un argomento vasto. Ci sono un enorme numero di risorse sparse sul web sui principi di progettazione di sistemi.

Questo repository è una raccolta organizzata di risorse per aiutarti a imparare come costruire sistemi su larga scala.

Impara dalla comunità open source

Questo è un progetto open source continuamente aggiornato.

I contributi sono benvenuti!

Preparati per il colloquio di progettazione di sistemi

Oltre ai colloqui di codifica, la progettazione di sistemi è un componente obbligatorio del processo di colloquio tecnico in molte aziende tecnologiche.

Esercitati con comuni domande di colloquio di progettazione di sistemi e confronta i tuoi risultati con soluzioni campione: discussioni, codice e diagrammi.

Argomenti aggiuntivi per la preparazione al colloquio:

Flashcard Anki

Flashcard Anki

I mazzi di flashcard Anki forniti utilizzano la ripetizione spaziata per aiutarti a memorizzare i concetti chiave della progettazione di sistemi.

Ottime da usare in movimento.

Risorsa di Codifica: Sfide Interattive di Codifica

Cerchi risorse per aiutarti a prepararti per il Colloquio di Codifica?

Sfide di codifica

Dai un'occhiata al repository gemello Interactive Coding Challenges, che contiene un ulteriore mazzo Anki:

Contribuire

Impara dalla comunità.

Sentiti libero di inviare pull request per aiutare a:

  • Correggere errori
  • Migliorare sezioni
  • Aggiungere nuove sezioni
  • Tradurre

Il contenuto che necessita di essere rifinito è posto in sviluppo.

Consulta le Linee guida per i contributi.

Indice degli argomenti di progettazione di sistemi

Riepiloghi di vari argomenti di progettazione di sistemi, inclusi pro e contro. Tutto è un compromesso. Ogni sezione contiene link a risorse più approfondite.

Argomenti di progettazione di sistemi

Guida allo studio

Argomenti suggeriti da rivedere in base alla tempistica del tuo colloquio (breve, media, lunga).

Timeline di studio

D: Per i colloqui, devo sapere tutto qui?

R: No, non devi sapere tutto qui per prepararti al colloquio.

Ciò che ti viene chiesto in un colloquio dipende da variabili come:

  • Quanta esperienza hai
  • Qual è il tuo background tecnico
  • Per quali posizioni stai facendo il colloquio
  • Con quali aziende stai facendo il colloquio
  • Fortuna

Dai candidati più esperti ci si aspetta generalmente che sappiano di più sulla progettazione di sistemi. Architetti o team leader potrebbero dover sapere di più rispetto ai singoli contributori. Le migliori aziende tecnologiche probabilmente avranno uno o più cicli di colloqui di progettazione.

Inizia in modo ampio e approfondisci alcune aree. Aiuta conoscere un po' i vari argomenti chiave della progettazione di sistemi. Adatta la seguente guida in base alla tua tempistica, esperienza, posizioni per cui stai facendo il colloquio e aziende con cui stai interagendo.

  • Tempistica breve - Punta alla ampiezza degli argomenti di progettazione di sistemi. Esercitati risolvendo alcune domande di colloquio.
  • Tempistica media - Punta alla ampiezza e a una certa profondità negli argomenti di progettazione di sistemi. Esercitati risolvendo molte domande di colloquio.
  • Tempistica lunga - Punta alla ampiezza e a maggiore profondità negli argomenti di progettazione di sistemi. Esercitati risolvendo la maggior parte delle domande di colloquio.
BreveMedioLungo
Leggi gli Argomenti di progettazione di sistemi per un'ampia comprensione del funzionamento dei sistemi:+1::+1::+1:
Leggi alcuni articoli dei Blog di ingegneria aziendali per le aziende con cui fai colloqui:+1::+1::+1:
Leggi alcune Architetture del mondo reale:+1::+1::+1:
Rivedi Come affrontare una domanda di colloquio di progettazione di sistemi:+1::+1::+1:
Esercitati con le Domande di colloquio di progettazione di sistemi con soluzioniAlcuneMolteLa maggior parte
Esercitati con le Domande di colloquio di progettazione orientata agli oggetti con soluzioniAlcuneMolteLa maggior parte
Rivedi Altre domande di colloquio di progettazione di sistemiAlcuneMolteLa maggior parte

Come affrontare una domanda di colloquio di progettazione di sistemi

Come affrontare una domanda di colloquio di progettazione di sistemi.

Il colloquio di progettazione di sistemi è una conversazione aperta. Ci si aspetta che tu la conduca tu.

Puoi usare i seguenti passi per guidare la discussione. Per aiutare a consolidare questo processo, lavora attraverso la sezione Domande di colloquio di progettazione di sistemi con soluzioni usando i seguenti passi.

Passo 1: Delinea casi d'uso, vincoli e assunzioni

Raccogli i requisiti e definisci l'ambito del problema. Poni domande per chiarire i casi d'uso e i vincoli. Discuti le assunzioni.

  • Chi lo userà?
  • Come lo useranno?
  • Quanti utenti ci sono?
  • Cosa fa il sistema?
  • Quali sono gli input e gli output del sistema?
  • Quanti dati ci aspettiamo di gestire?
  • Quante richieste al secondo ci aspettiamo?
  • Qual è il rapporto previsto tra letture e scritture?

Passo 2: Crea un design di alto livello

Delinea un design di alto livello con tutti i componenti importanti.

  • Schizza i componenti principali e le connessioni
  • Giustifica le tue idee

Passo 3: Progetta i componenti chiave

Approfondisci i dettagli per ogni componente chiave. Ad esempio, se ti fosse stato chiesto di progettare un servizio di accorciamento URL, discuti:

  • Generazione e archiviazione di un hash dell'URL completo
    • MD5 e Base62
    • Collisioni di hash
    • SQL o NoSQL
    • Schema del database
  • Traduzione di un URL hash all'URL completo
    • Ricerca nel database
  • API e progettazione orientata agli oggetti

Passo 4: Scala il design

Identifica e affronta i colli di bottiglia, dati i vincoli. Ad esempio, hai bisogno dei seguenti elementi per affrontare i problemi di scalabilità?

  • Load balancer
  • Scalabilità orizzontale
  • Caching
  • Sharding del database

Discuti potenziali soluzioni e compromessi. Tutto è un compromesso. Affronta i colli di bottiglia usando i principi di progettazione di sistemi scalabili.

Calcoli approssimativi

Potrebbe esserti chiesto di fare alcune stime a mano. Fai riferimento all'Appendice per le seguenti risorse:

Fonte/i e ulteriori letture

Dai un'occhiata ai seguenti link per avere un'idea migliore di cosa aspettarti:

Attività commit · ultime 26 settimane

stima

Approfondimenti AI

L'AI sta preparando gli approfondimenti…

Chiedi al repo

AI · contesto README + issue

Fai una domanda sul progetto. L'AI legge README e issue recenti.

Sponsor · Sconto esclusivo RepoRadar AI

Hai bisogno di un server per far girare donnemartin/system-design-primer?

Abbiamo testato decine di provider e Hostinger VPS è il miglior rapporto qualità/prezzo per self-hostare le repo che trovi qui. Setup in 1 click, pannello semplice e supporto 24/7.

Deploy in 1 click
2 vCPU · 8 GB RAM · NVMe
Backup + DDoS inclusi
Attiva sconto Hostinger VPSLink affiliato — supporti RepoRadar senza costi extra per te.

Questo progetto esiste grazie a voi

RepoRadar AI è gratis e senza pubblicità. Le donazioni coprono server, API e modelli AI.

Ogni analisi tradotta che leggi costa qualche centesimo di chiamate al modello. Se RepoRadar ti ha fatto risparmiare tempo, considera una piccola donazione cripto — anche pochi euro aiutano a mantenere il servizio libero per tutti.

Ethereum
ETH
0x86ECDF546d8dFc0739d44c066A6110F11cdB7773
Bitcoin
BTC
bc1qqe0wcmhnt78enk8ql0lxvey4z8hquxsxjtyz8r
Solana
SOL
EtTK61Lz7kfdDM8543TMMiAUUTbFVpzX5tvPEcBtZ3aj

Grazie di cuore — ogni contributo conta.