Návrh systému je definovaný ako proces vytvárania architektúry pre rôzne komponenty, rozhrania a moduly systému a poskytovanie zodpovedajúcich údajov užitočných pri implementácii takýchto prvkov do systémov.
Návrh systému je proces navrhovania architektúry, komponentov a rozhraní pre systém tak, aby spĺňal požiadavky koncového používateľa. Návrh systému pre technické pohovory je niečo, čo nemožno ignorovať! Takmer každý IT gigant, či už Facebook , Amazon , Google , Apple alebo ktorýkoľvek iný sa v rozhovore pýta na rôzne otázky založené na koncepciách návrhu systému, ako je škálovateľnosť, vyrovnávanie záťaže, ukladanie do vyrovnávacej pamäte atď. Tento špeciálne navrhnutý tutoriál System Design vám pomôže naučiť sa a zvládnuť koncepty System Design tým najefektívnejším spôsobom od základov až po pokročilú úroveň.

Kroky pre prístup k tomuto návodu na návrh systému
- Pochopte požiadavky: Pred začatím procesu návrhu je dôležité pochopiť požiadavky a obmedzenia systému. To zahŕňa zhromažďovanie informácií o problémovom priestore, požiadavkách na výkon, potrebách škálovateľnosti a bezpečnostných otázkach.
- Identifikujte hlavné komponenty: Identifikujte hlavné komponenty systému a ako sa navzájom ovplyvňujú. To zahŕňa určenie vzťahov medzi rôznymi komponentmi a toho, ako prispievajú k celkovej funkčnosti systému.
- Vyberte vhodnú technológiu: Na základe požiadaviek a komponentov zvoľte vhodnú technológiu na implementáciu systému. To môže zahŕňať výber hardvérových a softvérových platforiem, databáz, programovacích jazykov a nástrojov.
- Definujte rozhranie: Definujte rozhranie medzi rôznymi komponentmi systému vrátane rozhraní API, protokolov a formátov údajov.
- Navrhnite dátový model: Navrhnite dátový model pre systém, vrátane schémy pre databázu, štruktúry dátových súborov a dátového toku medzi komponentmi.
- Zvážte škálovateľnosť a výkon: Zvážte škálovateľnosť a vplyv návrhu na výkon vrátane faktorov, ako je vyrovnávanie záťaže, ukladanie do vyrovnávacej pamäte a optimalizácia databázy.
- Otestujte a overte dizajn: Overte návrh testovaním systému s realistickými údajmi a prípadmi použitia a vykonajte potrebné zmeny, aby ste vyriešili akékoľvek problémy, ktoré sa vyskytnú.
- Nasadenie a údržba systému: Nakoniec nasaďte systém a udržiavajte ho v priebehu času, vrátane opravy chýb, aktualizácie komponentov a pridávania nových funkcií podľa potreby.
Dodržiavaním týchto krokov a neustálym zdokonaľovaním svojho prístupu môžete vyvinúť robustné a efektívne návrhy systémov, ktoré spĺňajú technické požiadavky aj očakávania používateľov. Pre tých, ktorí sa chcú ponoriť hlbšie a získať konkurenčnú výhodu, naše Kurz System Design poskytuje štruktúrovanú cestu k zvládnutiu týchto základných zručností.
Je dôležité mať na pamäti, že návrh systému je iteratívny proces a dizajn sa môže meniť, keď sa zhromažďujú nové informácie a vyvíjajú sa požiadavky. Okrem toho je dôležité efektívne komunikovať návrh so všetkými zainteresovanými stranami, vrátane vývojárov, používateľov a zainteresovaných strán, aby sa zabezpečilo, že systém spĺňa ich potreby a očakávania.
Základy návrhu systému
- Čo je návrh systému?
- Funkčné verzus nefunkčné požiadavky
- Aké sú súčasti návrhu systému?
- Životný cyklus návrhu systému | SDLC (dizajn)
- Štruktúrovaná analýza a štruktúrovaný dizajn (SA/SD)
- Stratégia návrhu systému
- Zdieľanie databáz – koncept rozhovoru o návrhu systému
- Návrh systému – horizontálne a vertikálne škálovanie
- Load Balancer v návrhu systému
- Smerovanie požiadaviek cez Load Balancer
- Latencia a priepustnosť v návrhu systému
- Objektovo orientovaná analýza a dizajn
- Rozdiel medzi štruktúrovanou a objektovo orientovanou analýzou
Škálovateľnosť v návrhu systému
- Čo je škálovateľnosť a ako ju dosiahnuť – Naučte sa navrhovať systém
- Ktorý prístup škálovateľnosti je vhodný pre našu aplikáciu? | Návrh systému
- Primárne úzke miesta, ktoré poškodzujú škálovateľnosť aplikácie | Návrh systému
Databázy v projektovaní systémov
- Akú databázu zvoliť pri navrhovaní systému – SQL alebo NoSQL
- Súborové a databázové úložné systémy v dizajne systému
- Replikácia databázy v návrhu systému
- Ukladanie blokov, objektov a súborov
- Proces normalizácie v DBMS
- Denormalizácia v databázach
Dizajn vysokej úrovne (HLD)
- Čo je dizajn na vysokej úrovni – naučte sa dizajn systému
- Dostupnosť v návrhu systému
- Konzistentnosť v návrhu systému
- Spoľahlivosť pri navrhovaní systému
- Veta CAP
- Rozdiel medzi procesom a vláknom
- Rozdiel medzi súbežnosťou a paralelnosťou
- Load Balancer
- Konzistentné hashovanie
- Content Delivery Network (CDN) v dizajne systému
- Ukladanie do vyrovnávacej pamäte v návrhu systému
- Zásady vysťahovania z vyrovnávacej pamäte
- Fronty správ
- Komunikačné protokoly v návrhu systému
- Sieťové protokoly a proxy v návrhu systému
- Unified Modeling Language (UML)
Nízkoúrovňový dizajn (LLD)
- Čo je to nízkoúrovňový dizajn alebo LLD
- Dátové štruktúry a algoritmy pre návrh systému
- Event-Driven Architecture
- Rozdiel medzi autentifikáciou a autorizáciou
- Čo je brána API
- Čo je šifrovanie údajov?
- Dizajnové vzory
- Techniky optimalizácie kódu
- Jednotkové testovanie
- Integračné testovanie
- CI/CD: Priebežná integrácia a nepretržité doručovanie
- Úvod do modularity a rozhraní v návrhu systému
- Techniky rozdelenia dát v dizajne systému
- Diagramy tried | UML
Testovanie a zabezpečenie kvality pri návrhu systému
- Typy testovania softvéru
- Zabezpečenie kvality softvéru
- Bezpečnostné testovanie
- Základné bezpečnostné opatrenia pri návrhu systému
Otázky a odpovede na rozhovory o návrhu systému
- 10 najlepších otázok a odpovedí na pohovor o návrhu systému
- Najčastejšie kladené problémy/otázky týkajúce sa návrhu systému
- Návrh systému – služba skracovania URL
- Design Dropbox – Otázka na pohovor o návrhu systému
- Dizajn Twitter – otázka na pohovor o dizajne systému
- Návrh systému Netflix – Kompletná architektúra
- Návrh systému aplikácie Uber – systémová architektúra Uber
- Design BookMyShow – Otázka na pohovor o dizajne systému
- Navrhovanie Facebook Messenger | Rozhovor o návrhu systému
- Navrhovanie Whatsapp Messenger | Návrh systému
- Navrhovanie Instagramu | Návrh systému
Tipy
- Ako prelomiť kolo návrhu systému v rozhovoroch?
- 5 tipov na prelomenie rozhovorov s návrhom nízkoúrovňového systému
- 5 spoločných koncepcií návrhu systému na prípravu na pohovor
- 6 krokov, ako pristupovať k otázkam objektovo orientovaného dizajnu v rozhovore
Výhody návrhu systému
- Lepšie pochopenie požiadaviek: Návrh systému pomáha objasniť požiadavky a obmedzenia systému, čo môže viesť k lepšiemu pochopeniu problémového priestoru.
- Vylepšená účinnosť: Navrhnutím systému s vhodnou technológiou a optimalizovanými dátovými štruktúrami môže návrh systému zlepšiť efektívnosť a výkon systému.
- Lepšia škálovateľnosť: Návrh systému môže pomôcť zabezpečiť, že systém je škálovateľný a dokáže sa prispôsobiť budúcemu rastu a meniacim sa požiadavkám.
- Vylepšená udržiavateľnosť: Definovaním jasných rozhraní a dátových modelov môže návrh systému zlepšiť udržiavateľnosť systému a uľahčiť jeho aktualizáciu a úpravu v priebehu času.
- Lepšia komunikácia: Návrh systému pomáha komunikovať návrh systému zainteresovaným stranám vrátane vývojárov a používateľov, čo môže pomôcť zabezpečiť, aby systém spĺňal ich potreby a očakávania.
Nevýhody návrhu systému
- Časovo náročné: Proces návrhu systému môže byť časovo náročný, najmä v prípade veľkých a zložitých systémov.
- Cena: Návrh systému môže byť drahý, najmä ak zahŕňa významný výskum, prototypovanie a testovanie.
- Vyžaduje odbornosť: Návrh systému vyžaduje značné množstvo technických znalostí vrátane znalostí hardvéru, softvéru, databáz a dátových štruktúr.
- Obmedzená flexibilita: Po dokončení návrhu systému môže byť ťažké vykonať zmeny v návrhu, najmä ak už bol návrh implementovaný a nasadený.
Referenčná literatúra
- Dizajnové vzory: Prvky opätovne použiteľného objektovo orientovaného softvéru od Ericha Gammu, Richarda Helma, Ralpha Johnsona a Johna Vlissidesa
- Dizajn každodenných vecí od Dona Normana
- Systémová analýza a dizajn Alan Dennis a Barbara Haley Wixom
- Čistá architektúra: Craftsman’s Guide to Software Structure and Design od Roberta C. Martina
- Softvérová architektúra v praxi od Lena Bassa, Paula Clementsa a Ricka Kazmana
Niektoré ďalšie dôležité návody:
- Príručka DSA
- Plán vývoja softvéru
- Plán stať sa produktovým manažérom
- Naučte sa SAP
- Naučte sa SEO