logo

Návod na návrh systému

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

  1. 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.
  2. 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.
  3. 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.
  4. Definujte rozhranie: Definujte rozhranie medzi rôznymi komponentmi systému vrátane rozhraní API, protokolov a formátov údajov.
  5. 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.
  6. 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.
  7. 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ú.
  8. 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)

Testovanie a zabezpečenie kvality 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

  1. Č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.
  2. Cena: Návrh systému môže byť drahý, najmä ak zahŕňa významný výskum, prototypovanie a testovanie.
  3. 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.
  4. 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