30 nejčastějších otázek a odpovědí na pohovoru o návrhu systémů (2026)

Otázky a odpovědi na pohovor o návrhu systému

Příprava na pohovor o návrhu systému znamená předvídat, jak tazatelé hodnotí architektonické myšlení pod tlakem. Otázky k pohovoru o návrhu systému odhalit hloubku, kompromisy, škálovatelnost a komunikaci prostřednictvím strukturovaných diskusí.

Důkladná příprava otevírá pozice v oblasti cloudových platforem, distribuovaných systémů a datového inženýrství a prokazuje technické znalosti prostřednictvím reálné analýzy. Odborníci pracující v oboru budují praktické dovednosti, podporují týmy, pomáhají manažerům s rozhodováním a řeší běžné otázky a odpovědi na ně od absolventů až po seniory, a to včetně pokročilých, základních a technických perspektiv po celém světě.
Přečtěte si více ...

👉 Stažení PDF zdarma: Otázky a odpovědi pro pohovor o návrhu systému

Top otázky a odpovědi na pohovor o návrhu systému

1) Vysvětlete, co je návrh systému a proč je důležitý v softwarovém inženýrství.

Návrh systému je proces definování architektury, komponent, rozhraní a dat pro systém splnit specifické požadavky škálovatelným, spolehlivým a udržovatelným způsobem. Propojuje cíle na vysoké úrovni (co by systém měl dosahovat) s konkrétními rozhodnutími o technologii, protokolech a architektonických vzorcích. Silný návrh systému zajišťuje, že aplikace funguje dobře i při zátěži, zůstává odolná vůči chybám a může se v průběhu času vyvíjet bez nutnosti kompletního přepisování.

V pohovorech to prokazuje vaši schopnost vyvažovat funkční požadavky s nefunkční omezení jako je škálovatelnost, latence, konzistence a dostupnost. Všechny velké technologické společnosti hodnotí dovednosti kandidáta v oblasti návrhu systémů, aby posoudily jeho technický úsudek v reálném světě.


2) Jak rozlišujete High-Level Design (HLD) od Low-Level Design (LLD) v architektuře systému?

High-Level Design (HLD) se zaměřuje na architektonický přehled a hlavní komponenty aniž by se zabýval detaily implementace. Ukazuje, jak systémy interagují – např. Webový server, databáze, Cache, Brána API, a systémy zasílání zpráv.

Nízkoúrovňový návrh (LLD) se hlouběji zabývá definice tříd, metody, datové struktury a detailní logika v rámci každé komponenty. HLD se týká toho, jaké komponenty budete používat a jak budou interagovat; LLD se týká toho, jak budete tyto interakce implementovat. Pochopení obou pomáhá tazatelům posoudit vaše celkové myšlení i vaše detailní inženýrské schopnosti.


3) Jaké klíčové metriky výkonu byste měli zvážit při návrhu systému a proč?

Metriky výkonu pomáhají kvantifikovat, jak dobře systém splňuje potřeby uživatelů a firmy. Klíčové metriky jsou:

  • Latency: Doba potřebná ke zpracování jednoho požadavku. Nižší latence znamená rychlejší odpovědi.
  • Propustnost: Množství práce zpracované za dané období (např. požadavky za sekundu). Vyšší propustnost znamená efektivitu při zátěži.
  • Dostupnost: Podíl doby, po kterou je systém v provozu. Vysoká dostupnost je pro globální služby klíčová.

Tyto metriky pomáhají návrhářům vyvažovat kompromisy. Například ukládání do mezipaměti snižuje latenci, ale komplikuje konzistenci dat. Prokázání znalosti těchto metrik ukazuje, že vám záleží na kvalitě systému v reálném světě.

metrický Definice Význam
Latence Čas na požadavek Zkušenosti uživatelů
Propustnost Počet požadavků za jednotku času Škálovatelnost
dostupnost Doba provozuschopnosti vs. prostoje Spolehlivost

4) Popište vyvažování zátěže a proč je v distribuovaných systémech zásadní.

Vyvažování zátěže je proces distribuce příchozích požadavků mezi více serverů nebo služeb aby se zabránilo tomu, aby se kterýkoli jednotlivý uzel stal úzkým hrdlem. Zajišťuje optimální využití kapacity, zlepšuje dobu odezvy a zvyšuje spolehlivost systému směrováním provozu od nefunkčních instancí.

Existují různé typy vyrovnávačů zátěže. A Vrstva 4 (L4) balancer pracuje na transportní vrstvě (IP/port), zatímco Vrstva 7 (L7) balancer pracuje na aplikační vrstvě a rozumí sémantice HTTP/S. Vyvažování zátěže je klíčové pro odolnost proti chybám, škálování bez prostojů a průběžné aktualizace v produkčních systémech. Dobré zodpovězení této otázky ukazuje, že rozumíte základním kompromisům mezi výkonem, konzistencí a náklady v distribuovaných systémech.


5) Jak byste navrhli službu TinyURL? Popište klíčové komponenty a kroky.

Návrh služby TinyURL zahrnuje jak funkční požadavky (zkracování URL adres, přesměrování uživatelů), tak i nefunkční požadavky (škálovatelnost, jedinečnost, výkon).

Zaprvé, objasňující otázky pomáhají definovat omezení: očekávaný objem, zásady expirace, analytické potřeby atd. Hlavní složky jsou:

  • Vrstva API: Přijímá a zpracovává požadavky na zkrácení/přesměrování.
  • Databáze a ukládání do mezipaměti: Ukládá originální ↔ zkrácenou mapu URLpings; ukládání do mezipaměti zlepšuje výkon čtení.
  • Generátor krátkých ID: Používá hašování nebo jedinečné ID v základním kódování.

Pro efektivní generování unikátních klíčů můžete:

  • Použijte kódování base-62 sekvenčního ID (např. 1 → a, 2 → b atd.).
  • Použití hašovací funkce s rozlišením kolizí.

Měli byste také zvážit analytiku, limity rychlosti a zpracování aktivních URL pomocí mezipaměti nebo vrstev CDN, abyste snížili zátěž. Popis těchto kompromisů ukazuje hloubku jak návrhových vzorů, tak i aspektů škálovatelnosti.


6) Co je to ukládání do mezipaměti a jak zlepšuje výkon systému?

Ukládání do mezipaměti často přístupná nebo výpočetně náročná data v rychlejším úložném médiu (paměť, distribuovaná mezipaměť) pro snížení opakovaných výpočtů a zátěže databáze. Výrazně zlepšuje latenci a propustnost rychlým obsluhováním populárních požadavků.

Ukládání do mezipaměti může probíhat na více vrstvách: paměť aplikace, Redis/Ehcache, edge servery CDN nebo lokální úložiště prohlížeče. Ukládání do mezipaměti sice zkracuje dobu odezvy, ale zároveň zavádí problémy se zastaralostí a neplatností, které je nutné řešit během návrhu. Můžete například použít zásady TTL (time-to-live) nebo strategie neplatnosti mezipaměti při změnách podkladových dat. Dobré odpovědi ukazují, že rozumíte jak výhody a úskalí ukládání do mezipaměti.


7) Vysvětlete teorém CAP a jeho důsledky pro návrh distribuovaných systémů.

Věta CAP říká, že v distribuovaném systému si můžete vybrat maximálně dvě z následujících tří záruk:

  1. Konzistence: Všechny uzly vidí stejná data současně.
  2. Dostupnost: Na každý požadavek je odpovězeno (bez záruky správnosti).
  3. Tolerance přepážky: Systém nadále funguje i přes výpadky sítě.

Žádný praktický distribuovaný systém nemůže dosáhnout všech tří funkcí současně za přítomnosti síťových oddílů. Například během oddílu si systémy musí vybrat mezi poskytováním zastaralých dat (dostupnost) nebo odmítáním požadavků, dokud se neobnoví konzistence (konzistence). Pochopení CAP ukazuje, že můžete činit informované kompromisy na základě provozních priorit – což je klíčová dovednost v pohovorech o návrhu systému.


8) Jak byste zjednodušeně navrhli službu pro chatování a zasílání zpráv, jako je WhatsApp?

Pro návrh chatovacího systému ve velkém měřítku začněte identifikací klíčových požadavků: doručování zpráv v reálném čase, perzistence, řazení zpráv, offline podpora a škálovatelnost.

Na vysoké úrovni:

  • Klienti připojení k serverům brány přes web/mobil.
  • Směrovače zpráv zpracovávat příchozí zprávy a odesílat je příjemcům (prostřednictvím trvalých připojení, jako jsou WebSockets).
  • Databáze ukládat historii zpráv s vhodným rozdělením pro velké uživatelské základny.

Mezi další komponenty patří mezipaměti pro nedávné chaty, fronty pro asynchronní doručování a notifikační služby pro offline uživatele. Měli byste prodiskutovat jak jsou zprávy uchovávány, řazeny a doručovány na více zařízení na uživatele a jak řešíte failover a odolnost proti chybám.


9) Co je sharding a jak pomáhá při škálování databází?

Sharding je forma horizontální měřítko kde je velká datová sada rozdělena na menší, nezávislé oddíly nazývané shardy, z nichž každý je uložen na jiném uzlu databáze. To zlepšuje výkon a škálovatelnost distribucí dat a dotazů mezi více počítačů, spíše než škálováním jedné instance.

Data lze segmentovat podle ID zákazníka, geografické oblasti nebo hashování. I když segmentování snižuje zátěž na uzel, zavádí složitost v dotazech napříč segmenty a vyvažování při přidávání nebo odebírání uzlů. Tazatelé očekávají, že budete těmto kompromisům rozumět a jak konzistentní hashování nebo správci segmentů mohou usnadnit provoz.


10) Popište, jak se API a mikroslužby liší od monolitické architektury.

A Monolithic architecture sdružuje všechny komponenty aplikace do jedné nasaditelné jednotky. To může zpočátku zjednodušit vývoj, ale časem se to stává obtížné pro škálování, údržbu a aktualizaci.

Microservices rozdělit systém na malé, nezávisle nasaditelné služby, přičemž každý z nich je zodpovědný za specifickou obchodní funkci. API (Application Programming Interfaces) umožňují komunikaci mezi těmito službami.

Vzhled jednolitý Mikroslužby
Rozvinutí Jednotka Nezávislé služby
Škálovatelnost Omezený Škálování pro jednotlivé služby
Izolace poruch chudý Silný
Komplexita Jednodušší zpočátku Složitější operace

Mikroslužby zlepšují škálovatelnost a flexibilitu nasazení, ale vyžadují pokročilé operační nástroje (vyhledávání služeb, traca odolnost proti chybám). Diskuse o tomto tématu ukazuje, že lze uvažovat o vývoji architektury a kompromisech mezi jednoduchostí a flexibilitou.


11) Jak funguje síť pro doručování obsahu (CDN) a jaké jsou její výhody?

A Síť pro poskytování obsahu (CDN) je distribuovaná síť proxy serverů strategicky rozmístěných v různých geografických oblastech. Jejím hlavním cílem je doručovat obsah uživatelům s minimální latencí obsluhou z nejbližšího serveru (známého jako okrajový uzel).

Když uživatel požádá o webový zdroj (např. obrázek, video nebo statický soubor), CDN uloží obsah do mezipaměti a doručí jej přímo z edge serveru. Pokud obsah není v mezipaměti, načte jej z původního serveru a uloží jej pro následné požadavky.

Výhody CDN sítí:

Faktor Výhoda
Latence Zkracuje dobu odezvy zobrazováním obsahu blíže uživatelům
Šířka pásma Odlehčuje využití šířky pásma z původních serverů
Spolehlivost Zajišťuje odolnost proti chybám s distribuovanými uzly
Škálovatelnost Efektivně zvládá vysoký objem provozu

CDN jsou životně důležité pro globální systémy, jako je Netflix, YouTube, nebo platformy elektronického obchodování, což zajišťuje vysoký výkon a dostupnost.


12) Co je omezení rychlosti a proč je nezbytné při návrhu API?

Omezení sazby omezuje počet požadavků, které může klient v daném období odeslat API. Je to zásadní pro předcházení zneužívání, zachování poctivého užívání, a ochrana backendových služeb před přetížením nebo útoky typu denial-of-service (DoS).

Mezi běžné algoritmy pro omezení rychlosti patří:

  • Pevný okenní pult — Jednoduché, ale může způsobit špičky na okrajích okna.
  • Posuvné okno / Posuvné okno — Zajišťuje plynulejší zpracování požadavků.
  • Token Bucket / Děravý bucket — Umožňuje dávkové zpracování dat v rámci limitů a udržuje stabilní tok požadavků.

Například GitHub omezuje volání API na 5000 za hodinu na uživatele. Implementace limitů rychlosti zajišťuje stabilitu systému a zlepšuje celkovou kvalitu služeb.


13) Jak zajišťujete konzistenci dat napříč distribuovanými systémy?

Udržování konzistence v distribuovaných systémech je náročné kvůli replikaci a latenci sítě. Existuje několik strategií v závislosti na požadovaném kompromisu mezi konzistencí a dostupností:

Typ konzistence Description Použijte pouzdro
Silná konzistence Všichni klienti vidí okamžitě stejná data Bankovní systémy
Případná konzistence Aktualizace se šíří asynchronně; povoleny jsou dočasné rozdíly. Zdroje sociálních médií
Kauzální konzistence Udržuje pořadí příčiny a následku Aplikace pro spolupráci

Techniky jako protokoly pro předzápis, vektorové hodiny, konsenzuální algoritmy (Raft, Paxos), a dvoufázové potvrzení (2PC) pomozte udržovat synchronizaci. Tazatelé očekávají, že vysvětlíte when uvolnit konzistenci pro zvýšení výkonu a škálovatelnosti.


14) Vysvětlete rozdíl mezi horizontálním a vertikálním škálováním.

Škálování označuje zvýšení kapacity systému pro zvládání větší zátěže. Existují dva hlavní typy:

Typ škálování Metoda Výhody Nevýhody
Vertikální škálování (Scale-Up) Přidání dalších zdrojů (CPU, RAM) do jednoho počítače Jednodušší implementace Hardwarová omezení, jediný bod selhání
Horizontální škálování (oddalování škálování) Přidejte další stroje pro rozložení zátěže Vysoká dostupnost, cenově výhodné Složité na správu a koordinaci

Například škálování webového serveru ze 2 CPU na 8 CPU je vertikální škálování, zatímco přidání více serverů za load balancer je horizontální škálování. Moderní distribuované systémy, jako je Kubernetes, upřednostňují horizontální měřítko pro elasticitu.


15) Co jsou fronty zpráv a proč se používají v distribuovaných architekturách?

A fronta zpráv odděluje producenty a konzumenty dočasným ukládáním zpráv do doby jejich zpracování. To umožňuje asynchronní komunikace, zlepšení odolnosti a škálovatelnosti v distribuovaných systémech.

Mezi oblíbené zprostředkovatele zpráv patří RabbitMQ, Kafka, Amazon SQS, a Google Pub/Sub.

Výhody:

  • Zmírňuje dopravní špičky
  • Oddělovací služby
  • Umožňuje mechanismy opakování a perzistence
  • Zlepšuje odolnost proti chybám

Příklad: V e-commerce platformě může objednávková služba publikovat zprávu („Objednávka oddána“), kterou inventární a fakturační služby spotřebovávají nezávisle, čímž se vyhnou přímým závislostem.


16) Jak byste navrhli škálovatelný systém pro ukládání souborů, jako je Google Drive or Dropbox?

Chcete-li navrhnout cloudový systém pro ukládání souborů, rozdělte jej na klíčové komponenty:

  • Frontendová služba: Zvládá nahrávání/stahování souborů přes REST API.
  • Služba metadat: Ukládá vlastnictví souborů, přístupová oprávnění a historii verzí.
  • Skladovací služba: Spravuje bloky souborů v distribuovaném úložišti (např. S3, HDFS).
  • Kouskování: Soubory jsou rozděleny na menší části (např. 4 MB) pro efektivní ukládání a přenos.

Mezi výzvy patří zajištění deduplikace dat, konzistence, a synchronizace změn napříč zařízeními. Implementace synchronizace na úrovni bloků a hashování obsahu zajišťuje efektivitu šířky pásma a integritu.


17) Jaké jsou klíčové faktory, které je třeba zvážit při návrhu škálovatelného schématu databáze?

Škálovatelné schéma vyvažuje výkon, flexibilitu a udržovatelnost. Mezi důležité aspekty patří:

  • Rozdělení dat (sharding) pro zvládnutí růstu.
  • Normalizace vs. denormalizace: Normalizovat pro integritu; denormalizovat pro výkon s velkým množstvím čtení.
  • Strategie indexování pro rychlé vyhledávání.
  • Ukládání do mezipaměti a replikace zvládnout vysoký provoz.

Příklad: V aplikaci sociálních médií lze uživatelská data a příspěvky ukládat odděleně, aby se snížilo propojení a zlepšil výkon dotazů. Rozhodnutí o návrhu schématu by měla být v souladu s přístupové vzorce a frekvence dotazů.


18) Jaké jsou výhody a nevýhody použití architektury mikroslužeb?

Mikroslužby se staly páteří moderních cloudových aplikací, ale přinášejí s sebou i určité kompromisy.

Výhody Nevýhody
Nezávislé nasazení a škálování Zvýšená provozní složitost
Izolace a odolnost poruch Distribuované ladění je obtížnější
Snadnější zavádění technologií Vyžaduje silnou DevOps kulturu
Lepší udržovatelnost kódu Vyšší latence kvůli síťovým skokům

Mikroslužby jsou ideální pro velké, vyvíjející se systémy, ale vyžadují robustní monitorování, API brány a strategie komunikace mezi službami.


19) Jak byste řešili replikaci databáze ve velkém systému?

Replikace databáze zahrnuje kopírování dat z primární databáze do jedné nebo více replik za účelem zlepšení dostupnosti a výkonu čtení. Existují dva hlavní typy:

Typ replikace Description Použijte pouzdro
Synchronosný Změny se do replik zapisují okamžitě. Silná konzistence
Asynchronní Primární potvrzení zápisu před aktualizací replik Lepší výkon

Replikace vylepšuje odolnost proti chybám, umožňuje geografické rozšířenía podpěry škálování čtení (čti repliky). Nicméně to přináší problémy, jako je replikační zpoždění a řešení konfliktů. Nástroje jako MySQL Skupinová replikace, MongoDB Sady replik, a PostgreSQL streamovací replikace jsou standardní řešení.


20) Co je to událostmi řízená architektura a kde je nejužitečnější?

Architektura řízená událostmi (EDA) je návrhové paradigma, kde komponenty komunikují prostřednictvím akce — zprávy, které signalizují změny stavu nebo akce. Místo přímých požadavků služby publikují a odebírají události asynchronně.

Tento design je ideální pro volně propojené systémy, jako jsou platformy IoT, elektronické obchodování a systémy pro analýzu v reálném čase.

Výhody:

  • Vysoká škálovatelnost
  • Oddělené komponenty
  • Odezva v reálném čase

Příklad: V architektuře Uberu, když je jízda rezervována, událost spustí současně aktualizace cen, párování řidičů a systémů oznámení – to vše bez těsného propojení.


21) Co je idempotence v návrhu systémů a proč je důležitá?

Idempotence znamená, že provedení stejné operace vícekrát má stejný efekt jako jednorázové provedeníZajišťuje spolehlivost v distribuovaných systémech, kde mohou být požadavky opakovaně odesílány kvůli selhání nebo zpoždění sítě.

Například:

  • GET a DELETE Požadavky jsou přirozeně idempotentní (jejich opakování nemění stav).
  • POST Požadavky (jako například vytvoření transakce) nejsou idempotentní, pokud k tomu nejsou speciálně navrženy.

Implementace idempotence:

  • Použijte unikátní ID požadavků na track duplicitních podání.
  • Udržovat a protokol transakcí ignorovat opakované operace.

Tato zásada je klíčová v platební brány, zpracování objednávky, a e-mailové systémy kde duplicitní akce mohou způsobit závažné nekonzistence.


22) Vysvětlete koncept konečné konzistence na příkladu.

Případná konzistence je model v distribuovaných databázích, kde aktualizace nejsou okamžitě viditelné pro všechny uzly, ale systém v průběhu času konverguje do konzistentního stavu.

Příklad:

In AmazonJe DynamoDB, když je položka aktualizována v jedné oblasti, repliky v jiných oblastech mohou dočasně obsahovat stará data. Nakonec se však synchronizují prostřednictvím replikace na pozadí.

Tento model je užitečný v systémech, které prioritizují dostupnost přes přísná konzistence, Jako například:

  • Časové osy sociálních médií
  • Systémy pro ukládání do mezipaměti
  • DNS záznamy

Klíčový kompromis spočívá mezi tolerance zastaralosti a rychlost odezvy.


23) Jak byste navrhli systém oznámení, který podporuje více kanálů (e-mail, SMS, push)?

Návrh škálovatelného notifikačního systému vyžaduje modularitu a flexibilitu.

Archistruktura:

  1. API pro oznámení – Přijímá žádosti o oznámení z aplikací.
  2. Fronta/sběrnice zpráv – Ukládá a distribuuje události (Kafka, SQS).
  3. Služby pro pracovníky – Procesory specifické pro jednotlivé kanály (e-mail, SMS, push).
  4. Poskytovatelé doručování – Integrace s externími API, jako je Twilio nebo Firebase.
  5. Databáze uživatelských nastavení – Ukládá nastavení přihlášení/odhlášení a preference frekvence.

Klíčové aspekty:

  • Opakujte neúspěšné doručení pomocí strategií odkladu.
  • Pro konzistenci používejte šablony.
  • Podpora prioritizace (urgentní vs. zprávy s nízkou prioritou).

Tato modulární konstrukce zajišťuje spolehlivost a rozšiřitelnost s objevováním nových notifikačních kanálů.


24) Co je indexování databáze a jak ovlivňuje výkon?

A index databáze je datová struktura (obvykle B-strom nebo hašovací tabulka), která zvyšuje rychlost dotazů snížením počtu záznamů, které databáze prohledává.

Například indexování sloupce e-mail v tabulce uživatelů umožňuje databázovému enginu rychle najít uživatele podle e-mailu, aniž by musel prohledávat celou tabulku.

Vzhled S indexem Bez indexu
Rychlost dotazu Rychlé vyhledávání Pomalé sekvenční skenování
rychlost zápisu Pomalejší (nutná aktualizace indexu) Rychlejší zápisy
Skladování Více místa na disku Less skladování

Indexy zlepšují výkon čtení, ale musí se používat uvážlivě, protože mohou zpomalit náročný na zápis systémy kvůli režijním nákladům na údržbu.


25) Jak byste zajistili odolnost vůči chybám ve velkém distribuovaném systému?

Odolnost proti chybám znamená, že systém pokračuje v provozu i v případě selhání komponent. Toho je dosaženo redundancí, monitorováním a automatickou obnovou.

Mezi strategie patří:

  • replikace: Duplicitní data nebo služby napříč regiony.
  • Mechanismy pro failover: Automaticky přesměrovat požadavky na zdravé uzly.
  • Kontroly stavu a vyrovnávače zátěže: Detekovat a izolovat chybné instance.
  • Jističe: Zabraňte kaskádování selhání mezi závislými službami.

Příklad: Netflix„Chaos Monkey“ záměrně vypíná instance v produkčním prostředí, aby otestovala odolnost – pokročilá aplikace principů odolnosti proti chybám.


26) Jaký je rozdíl mezi synchronní a asynchronní komunikací v distribuovaných systémech?

vlastnost Syncchronní komunikace Asynchronní komunikace
Závislost Odesílatel čeká na odpověď Odesílatel postupuje samostatně
Příklady Volání HTTP REST API Fronty zpráv, Kafka
Latence Vyšší (blokování) Nižší vnímaná latence
Spolehlivost Nižší pod selhání Vyšší (zprávy se mohou zobrazovat přetrvávajícím způsobem)

SyncChronické systémy jsou jednodušší, ale úzce propojené, zatímco asynchronní systémy zlepšují škálovatelnost a izolaci chyb.

Například zpracování objednávek v systému elektronického obchodování může být asynchronní, ale potvrzení platby by mělo zůstat synchronní, aby byla zajištěna okamžitá zpětná vazba od uživatele.


27) Jak byste navrhli omezovač rychlosti pro distribuovaný systém API?

Distribuovaný omezovač rychlosti zajišťuje spravedlivé využití API napříč více servery.

Přístupy:

  1. Algoritmus token bucketu – Každý uživatel získává tokeny, které se časem doplňují.
  2. Algoritmus děravého kbelíku – Žádosti jsou zpracovávány stabilním tempem.
  3. Centralizovaný čítač (např. Redis) – Uchovává počty požadavků na uživatele.

Příklad implementace:

  • Používejte atomické čítače Redis s TTL.
  • Track časových razítek požadavků na klíč uživatele.
  • Odmítnout požadavky překračující prahové hodnoty.

Omezení rychlosti brání zneužívání, Útoky DoS, a neočekávané nárůsty cen, čímž je zajištěna konzistentní kvalita služeb napříč klienty.


28) Co je to algoritmus distribuovaného konsensu a proč je potřeba?

Distribuované konsenzuální algoritmy zajišťují, že více uzlů v systému dohodnout se na jediné datové hodnotě, a to i v případě, že dojde k poruchám.

Běžné algoritmy:

  • Paxos
  • Vor
  • Zab (používá se v ZooKeeperu)

Jsou nezbytné pro udržení volba vůdce, replikace stavu, a konzistence dat v distribuovaných databázích a správcích clusterů, jako je Kubernetes.

Příklad: Raft zajišťuje, že se všechny uzly shodují na položkách protokolu před jejich použitím ve stavových automatech, což zaručuje spolehlivost i v případě selhání uzlů.


29) Jak byste navrhli systém protokolování a monitorování pro mikroslužby?

Monitorování distribuovaných systémů vyžaduje centralizovanou pozorovatelnost pro detekci a řešení problémů.

Základní komponenty:

  • Protokolování: Shromažďujte protokoly ze všech služeb pomocí nástrojů, jako je Fluentd or Logstash.
  • Metriky: Použijte Prometheus nebo Datadog k track ukazatelů výkonu (CPU, paměť, latence požadavků).
  • Tracing: Implementovat distribuované tracing (Jaeger, Zipkin) k track cest požadavků napříč službami.
  • upozornění: Nastavte prahové hodnoty pro spouštění upozornění v PagerDuty nebo Slack.

Nejlepší praxe:

Použijte korelační ID na tracpožadavek jednoho uživatele napříč více mikroslužbami – klíčový pro ladění problémů v produkčním prostředí.


30) Jaké jsou klíčové konstrukční aspekty pro budování systému s vysokou dostupností (HA)?

A Vysoká dostupnost (HA) Systém minimalizuje prostoje a zajišťuje nepřetržitý provoz.

Klíčové konstrukční faktory:

  1. Nadbytek: Používejte více serverů na komponentu.
  2. Eliminujte jednotlivé body selhání (SPOF).
  3. Automatické přepnutí na záložní systém: Přesměrování provozu během výpadků.
  4. Replikace dat: Zajistěte trvanlivost dat napříč zónami.
  5. Monitorování zdraví: Automaticky detekovat a nahradit nefunkční uzly.
  6. Obnova po havárii (DR): Implementujte zálohy a georeplikaci.

Příklad: AWS nasazují služby napříč zónami dostupnosti (AZ) a používají elastické vyrovnávače zátěže pro automatické přepnutí při selhání, což zajišťuje 99.99% dostupnost dle SLA.


🔍 Nejčastější otázky na pohovoru o návrhu systémů s reálnými scénáři a strategickými odpověďmi

1) Jak přistupujete k návrhu rozsáhlého distribuovaného systému od nuly?

Očekává se od kandidáta: Tazatel chce pochopit vaše strukturované myšlení, schopnost objasnit požadavky a to, jak rozkládáte složité problémy na zvládnutelné komponenty.

Příklad odpovědi: „Začínám objasněním funkčních a nefunkčních požadavků, jako je škálovatelnost, dostupnost a latence. Poté načrtnu architekturu na vysoké úrovni, identifikuji klíčové komponenty, definuji tok dat a vyberu vhodné technologie. Poté před vylepšením návrhu zvážím úzká hrdla, scénáře selhání a kompromisy.“


2) Můžete vysvětlit rozdíl mezi horizontálním a vertikálním škálováním a kdy byste které z nich použili?

Očekává se od kandidáta: Tazatel testuje vaše základní znalosti škálovatelnosti a vaši schopnost aplikovat správnou strategii v reálných systémech.

Příklad odpovědi: „Vertikální škálování zahrnuje přidání více zdrojů k jednomu počítači, zatímco horizontální škálování přidává více počítačů pro zvládání zátěže. Vertikální škálování je jednodušší, ale omezenější, zatímco horizontální škálování je složitější, ale nabízí lepší odolnost proti chybám a dlouhodobou škálovatelnost.“


3) Jak zajišťujete vysokou dostupnost v návrhu systému?

Očekává se od kandidáta: Tazatel chce zhodnotit vaše znalosti redundance, mechanismů failoveru a odolnosti systému.

Příklad odpovědi: „Ve své předchozí roli jsem zajišťoval vysokou dostupnost používáním vyvažovačů zátěže, nasazováním služeb v rámci více zón dostupnosti, implementací kontrol stavu a navrhováním bezstavových služeb, kdekoli to bylo možné. Tyto strategie snížily počet bodů selhání.“


4) Popište situaci, kdy jste museli dělat kompromis mezi konzistencí a dostupností.

Očekává se od kandidáta: Tazatel hodnotí vaše pochopení teorému CAP a vaše rozhodování za daných podmínek.

Příklad odpovědi: „Na předchozí pozici jsem pracoval na systému, kde byla nízká latence kritická. Abychom zachovali dostupnost během síťových particí, upřednostnili jsme konečnou konzistenci před silnou konzistencí, což bylo pro obchodní použití přijatelné.“


5) Jak se rozhodnete, kterou databázi použít pro daný systém?

Očekává se od kandidáta: Tazatel chce vidět, jak sladíte volby ukládání dat se systémovými požadavky.

Příklad odpovědi: „Hodnotím vzorce přístupu k datům, požadavky na konzistenci, škálovatelnost a složitost dotazů. Relační databáze fungují dobře pro strukturovaná data a transakce, zatímco NoSQL databáze jsou lepší pro vysokou propustnost a flexibilní schémata.“


6) Jak byste navrhli systém pro zvládání náhlých dopravních špičk?

Očekává se od kandidáta: Tazatel testuje vaši schopnost navrhovat s ohledem na škálovatelnost a nepředvídatelnou zátěž.

Příklad odpovědi: „Používal bych skupiny s automatickým škálováním, vyrovnávače zátěže a vrstvy mezipaměti, jako jsou úložiště v paměti. V mé poslední roli tyto techniky umožňovaly systému absorbovat nárůsty provozu bez ovlivnění výkonu.“


7) Jakou roli hraje ukládání do mezipaměti v návrhu systému a kde byste ho implementovali?

Očekává se od kandidáta: Tazatel chce pochopit, jak optimalizujete výkon a snižujete zátěž klíčových služeb.

Příklad odpovědi: „Ukládání do mezipaměti zlepšuje dobu odezvy a snižuje zatížení databáze. Lze jej implementovat na více vrstvách, včetně klientské strany, CDN, úrovně aplikace a ukládání do mezipaměti databázových dotazů, v závislosti na případu použití.“


8) Jak řešíte dělení dat a sharding?

Očekává se od kandidáta: Tazatel hodnotí vaši schopnost navrhovat systémy, které horizontálně škálují data.

Příklad odpovědi: „Volím klíč pro sharding, který rovnoměrně rozděluje data a minimalizuje dotazy napříč shardy. Také plánuji opětovné shardování a monitoruji distribuci dat, abych se s růstem systému vyhnul hotspotům.“


9) Popište situaci, kdy monitorování systému ovlivnilo rozhodnutí o návrhu.

Očekává se od kandidáta: Tazatel chce vidět, jak využíváte pozorovatelnost ke zlepšení spolehlivosti a výkonu systému.

Příklad odpovědi: „Monitorování metrik, jako je latence a chybovost, odhalilo úzké hrdlo v API službě. Na základě tohoto poznatku jsem službu přepracoval tak, aby byla asynchronní, což výrazně zlepšilo propustnost.“


10) Jak sdělujete návrhy komplexních systémů netechnickým zainteresovaným stranám?

Očekává se od kandidáta: Tazatel hodnotí vaše komunikační dovednosti a schopnost sladit technická rozhodnutí s obchodními cíli.

Příklad odpovědi: „Zaměřuji se na koncepty na vysoké úrovni, používám diagramy a propojuji technické komponenty s obchodními výsledky. Tento přístup pomáhá zúčastněným stranám pochopit hodnotu a dopad návrhu, aniž by se ztrácely v technických detailech.“

Shrňte tento příspěvek takto: