logo

Výukový program návrhu systému

Návrh systému je definován jako proces vytváření architektury pro různé komponenty, rozhraní a moduly systému a poskytování odpovídajících dat užitečných při implementaci takových prvků v systémech.

Návrh systému je proces navrhování architektury, komponent a rozhraní pro systém tak, aby vyhovoval požadavkům koncového uživatele. Návrh systému pro technické rozhovory je něco, co nelze ignorovat! Téměř každý IT gigant, ať už je to Facebook , Amazonka , Google , Jablko nebo kdokoli jiný v rozhovoru klade různé otázky založené na konceptech návrhu systému, jako je škálovatelnost, vyvažování zátěže, ukládání do mezipaměti atd. Tento speciálně navržený výukový program System Design vám pomůže naučit se a zvládnout koncepty System Design tím nejefektivnějším způsobem od základů až po pokročilé úrovně.



sql klauzule

Kroky pro přístup k tomuto výukovému programu návrhu systému

  1. Pochopte požadavky: Před zahájením procesu návrhu je důležité porozumět požadavkům a omezením systému. To zahrnuje shromažďování informací o problémovém prostoru, požadavcích na výkon, potřebách škálovatelnosti a bezpečnostních otázkách.
  2. Identifikujte hlavní součásti: Identifikujte hlavní součásti systému a jak se vzájemně ovlivňují. To zahrnuje určení vztahů mezi různými komponentami a toho, jak přispívají k celkové funkčnosti systému.
  3. Vyberte vhodnou technologii: Na základě požadavků a komponent zvolit vhodnou technologii pro implementaci systému. To může zahrnovat výběr hardwarových a softwarových platforem, databází, programovacích jazyků a nástrojů.
  4. Definujte rozhraní: Definujte rozhraní mezi různými součástmi systému, včetně rozhraní API, protokolů a datových formátů.
  5. Navrhněte datový model: Navrhněte datový model systému, včetně schématu databáze, struktury datových souborů a toku dat mezi komponentami.
  6. Zvažte škálovatelnost a výkon: Zvažte škálovatelnost a výkonnostní důsledky návrhu, včetně faktorů, jako je vyrovnávání zátěže, ukládání do mezipaměti a optimalizace databáze.
  7. Otestujte a ověřte design: Ověřte návrh testováním systému s realistickými daty a případy použití a podle potřeby proveďte změny, abyste vyřešili případné problémy.
  8. Nasazení a údržba systému: Nakonec nasaďte systém a udržujte jej v průběhu času, včetně opravy chyb, aktualizace komponent a přidávání nových funkcí podle potřeby.

Dodržováním těchto kroků a neustálým zdokonalováním svého přístupu můžete vyvinout robustní a efektivní návrhy systémů, které splňují jak technické požadavky, tak očekávání uživatelů. Pro ty, kteří se chtějí ponořit hlouběji a získat konkurenční výhodu, naše Kurz System Design poskytuje strukturovanou cestu k zvládnutí těchto základních dovedností.

Je důležité mít na paměti, že návrh systému je iterativní proces a návrh se může měnit, jak se shromažďují nové informace a vyvíjejí se požadavky. Kromě toho je důležité efektivně komunikovat návrh všem zúčastněným stranám, včetně vývojářů, uživatelů a zainteresovaných stran, aby bylo zajištěno, že systém splňuje jejich potřeby a očekávání.



Základy návrhu systému

  • Co je návrh systému?
  • Funkční vs nefunkční požadavky
  • Jaké jsou součásti návrhu systému?
  • Životní cyklus návrhu systému | SDLC (design)
  • Strukturovaná analýza a strukturovaný design (SA/SD)
  • Strategie návrhu systému
  • Sdílení databáze – koncept rozhovoru o návrhu systému
  • Návrh systému – horizontální a vertikální měřítko
  • Load Balancer v návrhu systému
  • Směrování požadavků přes Load Balancer
  • Latence a propustnost v návrhu systému
  • Objektově orientovaná analýza a návrh
  • Rozdíl mezi strukturovanou a objektově orientovanou analýzou

Škálovatelnost v návrhu systému

  • Co je škálovatelnost a jak jí dosáhnout – Naučte se navrhovat systém
  • Který přístup škálovatelnosti je pro naši aplikaci správný? | Návrh systému
  • Primární překážky, které poškozují škálovatelnost aplikace | Návrh systému

Databáze v projektování systémů

  • Jakou databázi zvolit při návrhu systému – SQL nebo NoSQL
  • Souborové a databázové úložné systémy v návrhu systému
  • Replikace databáze v návrhu systému
  • Úložiště bloků, objektů a souborů
  • Proces normalizace v DBMS
  • Denormalizace v databázích

Design na vysoké úrovni (HLD)

  • Co je to High Level Design – Learn System Design
  • Dostupnost v návrhu systému
  • Konzistence v návrhu systému
  • Spolehlivost v návrhu systému
  • Věta CAP
  • Rozdíl mezi procesem a vláknem
  • Rozdíl mezi souběžností a paralelismem
  • Load Balancer
  • Konzistentní hašování
  • Content Delivery Network (CDN) v návrhu systému
  • Ukládání do mezipaměti v návrhu systému
  • Zásady vystěhování z mezipaměti
  • Fronty zpráv
  • Komunikační protokoly v návrhu systému
  • Síťové protokoly a proxy v návrhu systému
  • Unified Modeling Language (UML)

Nízkoúrovňový design (LLD)

  • Co je to Low Level Design nebo LLD
  • Datové struktury a algoritmy pro návrh systému
  • Event-Driven Architecture
  • Rozdíl mezi autentizací a autorizací
  • Co je API Gateway
  • Co je šifrování dat?
  • Designové vzory
  • Techniky optimalizace kódu
  • Testování jednotek
  • Integrační testování
  • CI/CD: Průběžná integrace a průběžné dodávání
  • Úvod do modularity a rozhraní v návrhu systému
  • Techniky dělení dat v návrhu systému
  • Diagramy tříd | UML

Testování a zajištění kvality v návrhu systému

Rozhovor Otázky a odpovědi návrhu systému

  • Top 10 otázek a odpovědí na pohovor ohledně návrhu systému
  • Nejčastěji kladené problémy/dotazy ohledně návrhu systému
  • Návrh systému – služba zkracování URL
  • Design Dropbox – otázka pohovoru o návrhu systému
  • Design Twitter – Otázka pro pohovor ohledně návrhu systému
  • Návrh systému Netflix – kompletní architektura
  • Návrh systému aplikace Uber – architektura systému Uber
  • Design BookMyShow – Otázka pro rozhovor ohledně návrhu systému
  • Návrh Facebook Messenger | Rozhovor o návrhu systému
  • Navrhování Whatsapp Messenger | Návrh systému
  • Navrhování Instagramu | Návrh systému

Tipy

  • Jak prolomit kolo návrhu systému v pohovorech?
  • 5 tipů, jak prolomit rozhovory s návrhem nízkoúrovňového systému
  • 5 společných konceptů návrhu systému pro přípravu pohovoru
  • 6 kroků, jak přistupovat k otázkám objektově orientovaného designu v rozhovoru

Výhody návrhu systému

  1. Lepší pochopení požadavků: Návrh systému pomáhá vyjasnit požadavky a omezení systému, což může vést k lepšímu pochopení problémového prostoru.
  2. Vylepšená účinnost: Návrhem systému s vhodnou technologií a optimalizovanými datovými strukturami může návrh systému zlepšit efektivitu a výkon systému.
  3. Lepší škálovatelnost: Návrh systému může pomoci zajistit, že systém je škálovatelný a dokáže vyhovět budoucímu růstu a měnícím se požadavkům.
  4. Vylepšená udržovatelnost: Definováním jasných rozhraní a datových modelů může návrh systému zlepšit udržovatelnost systému a usnadnit jeho aktualizaci a úpravy v průběhu času.
  5. Lepší komunikace: Návrh systému pomáhá sdělit návrh systému zúčastněným stranám, včetně vývojářů a uživatelů, což může pomoci zajistit, že systém splňuje jejich potřeby a očekávání.

Nevýhody návrhu systému

  1. Časově náročné: Proces návrhu systému může být časově náročný, zejména u velkých a složitých systémů.
  2. Náklady: Návrh systému může být drahý, zvláště pokud zahrnuje významný výzkum, prototypování a testování.
  3. Vyžaduje odbornost: Návrh systému vyžaduje značné množství technických znalostí, včetně znalostí hardwaru, softwaru, databází a datových struktur.
  4. Omezená flexibilita: Jakmile je návrh systému dokončen, může být obtížné provést změny v návrhu, zejména pokud byl návrh již implementován a nasazen.

Referenční knihy

  • Návrhové vzory: Prvky opakovaně použitelného objektově orientovaného softwaru od Ericha Gammy, Richarda Helma, Ralpha Johnsona a Johna Vlissidese
  • Návrh každodenních věcí od Dona Normana
  • Systémová analýza a návrh Alan Dennis a Barbara Haley Wixom
  • Clean Architecture: A Craftsman’s Guide to Software Structure and Design od Roberta C. Martina
  • Softwarová architektura v praxi od Lena Basse, Paula Clementse a Ricka Kazmana

Některé další důležité tutoriály:

podřetězec v jazyce Java
  • Výukový program DSA
  • Plán vývoje softwaru
  • Plán, jak se stát produktovým manažerem
  • Naučte se SAP
  • Naučte se SEO