Doporučení pro optimalizaci nákladů na kód

Platí pro toto doporučení kontrolního seznamu optimalizace nákladů služby Azure Well-Architected Framework:

CO:11 Optimalizujte náklady na kód. Vyhodnoťte a upravte kód tak, aby splňoval funkční a nefunkční požadavky s menším nebo levnějším množstvím prostředků.

Tato příručka popisuje doporučení pro optimalizaci nákladů na kód. Optimalizace kódu je proces zlepšování efektivity, výkonu a nákladové efektivity kódu aplikace. Efektivní optimalizace kódu zahrnuje provádění změn kódu, aby se snížila spotřeba prostředků, minimalizovala doba provádění a zlepšil se celkový výkon.

Optimalizací kódu můžete identifikovat a eliminovat neefektivnosti, které můžou vést ke zvýšené spotřebě prostředků a vyšším nákladům. Můžete zkrátit dobu zpracování, využití paměti a režii sítě, což může vést k rychlejším a rychlejším aplikacím. Vylepšený výkon zlepšuje uživatelské prostředí a umožňuje vašemu systému efektivně zpracovávat větší úlohy.

Definice

Období Definice
Instrumentace kódu Postup přidávání fragmentů kódu nebo knihoven do kódu, které shromažďují data a monitorují výkon kódu za běhu.
Souběžnost Provádění více procesů najednou.
Serializace dat Proces převodu datových objektů do formátu, který lze uložit nebo přenést, a pak je v případě potřeby rekonstruovat zpět do původní podoby.
Horké cesty Kritické nebo často spouštěné oddíly programu, které vyžadují vysoký výkon a nízkou latenci.

Klíčové strategie návrhu

Optimalizace nákladů na kód znamená vylepšení kódu tak, aby bylo dosaženo stejné funkce s menším počtem prostředků pro jednotlivé instance, jako jsou cykly procesoru, paměť a úložiště. Snížením spotřeby prostředků můžete ušetřit peníze, když aplikace zpracovávají velké objemy dat nebo dochází k vysokému zatížení provozu.

Vylepšení kódu jsou nejúčinnější, když sledujete další úsilí o optimalizaci nákladů, které se týkají škálování, nastavení oprávnění, redundance a omezování. Až se o tyto základní prvky postaráte, můžete zvážit optimalizaci kódu.

Možná nevíte, jestli máte neefektivní kód. Funkce bezserverového škálování, automatického škálování a spolehlivosti můžou maskovat neefektivitu kódu. Následující strategie vám můžou pomoct identifikovat a opravit kód aplikace, který stojí víc, než by měl.

Instrumentace kódu

Instrumentace kódu je postup přidávání fragmentů kódu nebo knihoven, které shromažďují data a monitorují výkon kódu během běhu. Umožňuje vývojářům shromažďovat informace o klíčových metrikách, jako je spotřeba prostředků (využití procesoru nebo paměti) a doba provádění. Díky instrumentaci kódu můžou vývojáři získat přehled o horkých cestách kódu, identifikovat kritické body výkonu a optimalizovat kód pro lepší efektivitu a nákladovou efektivitu.

V ideálním prostředí byste měli provádět analýzu kódu na začátku životního cyklu vývoje softwaru. Tím dříve problém s kódem zachytíte, tím levnější bude oprava.

Automatizujte co nejvíce této analýzy kódu. Použití dynamických a statických nástrojů pro analýzu kódu ke snížení ručního úsilí. Mějte však na paměti, že toto testování je stále simulací produkce. Produkční prostředí poskytuje nejjasnější porozumění optimalizaci kódu.

Kompromis: Nástroje pro monitorování kódu pravděpodobně zvýší náklady.

Identifikace a optimalizace horkých cest

Instrumentací kódu můžete měřit spotřebu prostředků cest kódu. Tato měření vám pomůžou identifikovat horké cesty. Horké cesty mají významný vliv na výkon a využití prostředků. Jsou kritické nebo často spouštějí oddíly programu, které vyžadují vysoký výkon a nízkou latenci.

Pokud chcete identifikovat horké cesty, zvažte tyto úlohy:

  • Analýza dat modulu runtime: Shromážděte a analyzujte data modulu runtime a identifikujte oblasti kódu, které spotřebovávají významné prostředky, jako jsou procesor, paměť nebo vstupně-výstupní operace. Hledejte vzory nebo části kódu, které se často spouští nebo jejich dokončení trvá dlouho.

  • Měření výkonu: Pomocí nástrojů pro profilaci nebo rozhraní pro testování výkonu můžete měřit dobu provádění a spotřebu prostředků cest kódu. Toto měření pomáhá identifikovat kritické body a oblasti pro zlepšení.

  • Zvažte obchodní logiku a vliv uživatele: Vyhodnoťte důležitost cest kódu na základě jejich relevance pro funkčnost aplikace nebo důležité obchodní operace. Určete, které cesty kódu jsou zásadní pro poskytování hodnoty uživatelům nebo splnění požadavků na výkon.

    Projděte si doporučení k výkonu specifická pro programovací jazyk, se kterým pracujete. Vyhodnoťte kód na základě těchto doporučení a identifikujte oblasti pro zlepšení. Odeberte všechny nepotřebné operace v cestě ke kódu, které by mohly ovlivnit výkon.

  • Odebrání nepotřebných volání funkcí: Zkontrolujte kód. Identifikujte všechny funkce, které nejsou nezbytné pro požadovanou funkci a můžou negativně ovlivnit výkon. Pokud například volání funkce provede ověření, ke kterému došlo dříve v kódu, můžete toto nepotřebné volání funkce odebrat.

  • Minimalizace operací protokolování: Protokolování může být užitečné pro ladění a analýzu, ale nadměrné protokolování může ovlivnit výkon. Vyhodnoťte nutnost každé operace protokolování a odeberte všechna nepotřebná volání protokolování, která nejsou pro analýzu výkonu důležitá.

  • Optimalizace smyček a podmíněných funkcí: Analýza smyček a podmíněných smyček v kódu Identifikujte všechny zbytečné iterace nebo podmínky, které můžete odstranit. Zjednodušení a optimalizace těchto struktur může zlepšit výkon kódu.

  • Omezení zbytečného zpracování dat: Zkontrolujte, jestli v kódu nedochází k žádným nepotřebným operacím zpracování dat, jako jsou redundantní výpočty nebo transformace. Eliminujte tyto zbytečné operace, abyste zlepšili efektivitu kódu.

  • Minimalizace síťových požadavků: Pokud váš kód vytváří síťové požadavky, minimalizujte počet požadavků a optimalizujte jejich využití. Pokud je to možné, vyžaduje batch a vyhněte se zbytečným opakováním, aby se zlepšil výkon.

  • Minimalizace přidělení: Identifikujte oblasti, ve kterých dochází k nadměrnému přidělení paměti. Optimalizujte kód omezením zbytečných přidělení a opětovným použitím existujících prostředků, pokud je to možné.

    Minimalizací přidělení můžete zlepšit efektivitu paměti a celkový výkon. Použijte vhodné strategie správy paměti a uvolňování paměti pro váš programovací jazyk.

  • Zmenšete velikost datové struktury: Vyhodnoťte velikost datových struktur, jako jsou třídy, a identifikujte oblasti, kde je možné zmenšení. Zkontrolujte požadavky na data a eliminujte všechna nepotřebná pole nebo vlastnosti. Optimalizujte využití paměti výběrem vhodných datových typů a efektivním zabalením dat.

  • Posouzení průřezových implementací: Zvažte účinky průřezových implementací, jako jsou middleware nebo kontroly tokenů. Vyhodnoťte, jestli mají negativní vliv na výkon.

Kompromis: Optimalizace kódu a horkých cest vyžaduje zkušenosti vývojářů při identifikaci neefektivit kódu. Tito vysoce kvalifikovaní jednotlivci mohou potřebovat věnovat čas jiným úkolům.

Vyhodnocení použití souběžnosti

Vyhodnocení použití souběžnosti zahrnuje posouzení, jestli asynchronní zpracování, vícevláknové zpracování nebo multiprocesing mohou maximalizovat využití prostředků a snížit náklady. Pomocí asynchronního zpracování, multithreadingu nebo multiprocesingu můžete zpracovávat více úloh se stejnými prostředky. Je však nezbytné zajistit správnou implementaci, abyste se vyhnuli větší režii a zachovali nákladovou efektivitu.

Pokud chcete vyhodnotit, jestli je použití souběžnosti vhodné, můžete postupovat podle těchto pokynů:

  • Asynchronní zpracování: Asynchronní zpracování umožňuje neblokovat provádění. Můžete například spustit proces a pak ho pozastavit, aby se mohl dokončit druhý proces.

    Určete komponenty kódu nebo operace, které můžete spouštět asynchronně. Identifikujte programovací jazyk nebo architekturu, kterou používáte, a seznamte se s asynchronním programovacím modelem, který podporuje, například async/await v .NET nebo přísliby v JavaScriptu.

    Restrukturalizovat kód tak, aby používal asynchronní programovací konstruktory povolením neblokujícího provádění úloh. Oddělte dlouhotrvající nebo vstupně-výstupní operace od hlavního spouštěcího vlákna pomocí asynchronních metod nebo zpětných volání. Pro zpracování asynchronních pracovních postupů použijte asynchronní rozhraní API nebo knihovny, které poskytuje váš programovací jazyk nebo architektura.

  • Multithreading: Při multithreadingu můžete současně spouštět více vláken jednoho procesu.

    Identifikujte části kódu, které můžete spustit souběžně a nezávisle. Přečtěte si dokumentaci nebo pokyny specifické pro programovací jazyk nebo architekturu, které používáte pro osvědčené postupy pro multithreading. Vytvořte více vláken nebo fondů vláken pro zpracování paralelního provádění úloh.

    Implementujte synchronizační mechanismy, jako jsou zámky, mutexy nebo semafory, abyste zajistili bezpečnost vláken a zabránili podmínkám časování při přístupu kódu ke sdíleným prostředkům. Pokud chcete zjednodušit správu více vláken a zjednodušit řízení souběžnosti, zvažte použití abstrakcí vyšší úrovně, jako jsou fondy vláken nebo knihovny paralelismu založené na úlohách.

  • Multiprocessing: Multiprocessing může mít procesy spuštěné paralelně. Může poskytovat lepší využití více jader procesoru než více vláken.

    Určete, jestli se úlohy nebo operace v kódu hodí k paralelnímu zpracování. Identifikujte programovací jazyk nebo architekturu, kterou používáte, a prozkoumejte jeho multiprocesingové funkce. Představte si například multiprocesingový modul v Pythonu nebo paralelní streamy v Javě. Navrhněte kód tak, aby se úlohy rozdělily na několik nezávislých úloh, které je možné zpracovávat souběžně.

    Použití víceprocesových rozhraní API nebo knihoven k vytváření a správě paralelních procesů Distribuujte úlohu mezi tato rozhraní API nebo knihovny. Pokud chcete umožnit koordinaci a sdílení dat mezi několika procesy, implementujte komunikační mechanismy, jako je komunikace mezi procesy (IPC), sdílená paměť nebo předávání zpráv v závislosti na programovacím jazyce nebo architektuře.

Použití správných sad SDK

Pro optimalizaci nákladů vyberte sady SDK, které jsou navržené tak, aby optimalizovaly využití prostředků a zlepšily výkon. Je důležité vyhodnotit funkce a možnosti každé sady SDK. Zvažte jeho kompatibilitu s programovacím jazykem a vývojovým prostředím.

Tady jsou doprovodné materiály, které vám pomůžou vybrat nejlepší sady SDK pro vaši úlohu:

  • Provádění testování výkonu: Porovnejte využití prostředků a výkon sad SDK prostřednictvím testování výkonu. Zvolte sadu SDK, která nejlépe vyhovuje vašim potřebám, pokud jde o optimalizaci prostředků a zvýšení výkonu. Podle poskytnuté dokumentace a pokynů integrujte zvolenou sadu SDK do základu kódu.

  • Monitorování využití prostředků a optimalizace kódu: Monitorování využití prostředků pomocí implementované sady SDK Shromážděte přehledy z monitorování a analýzy pro optimalizaci kódu.

Volba správného operačního systému

Většina programovacích jazyků může běžet v různých operačních systémech, takže je důležité vyhodnotit operační systém oproti levnějším alternativám. Pokud alternativní operační systém podporuje stejnou nebo podobnou funkci s nižšími náklady, stojí za to zvážit. Výběrem levnějšího operačního systému můžete potenciálně snížit náklady na licenční poplatky a náklady na infrastrukturu.

Správný operační systém může přispět k celkové optimalizaci nákladů pro vaši úlohu. Pokud chcete zvolit správný operační systém pro úlohu, vyzkoušejte tyto aktivity:

  • Vyhodnoťte své požadavky: Seznamte se s konkrétními potřebami úloh, včetně programovacích jazyků a architektur, které používáte. Zvažte všechny závislosti nebo integrace s jinými systémy.

  • Zvažte kompatibilitu: Ujistěte se, že je zvolený operační systém kompatibilní s programovacími jazyky, architekturami a všemi knihovnami nebo nástroji třetích stran, které používáte. Projděte si dokumentaci a podporu komunity pro operační systém a ujistěte se, že je dobře kompatibilní s vaší sadou technologií.

  • Posouzení funkčnosti: Zjistěte, jestli alternativní operační systém podporuje stejné nebo podobné funkce jako váš aktuální operační systém. Vyhodnoťte, jestli poskytuje potřebné funkce a možnosti, které vaše úloha vyžaduje.

  • Porovnání nákladů: Porovnejte náklady spojené s operačními systémy. Vezměte v úvahu faktory, jako jsou licenční poplatky, náklady na podporu a požadavky na infrastrukturu. Hledejte levnější alternativy, které můžou splňovat požadavky vašich úloh, aniž by to ohrozilo funkčnost.

  • Zvažte výkon a optimalizaci: Vyhodnoťte výkon a možnosti optimalizace alternativního operačního systému. Vyhledejte srovnávací testy, případové studie nebo porovnání výkonu, abyste porozuměli výkonu v reálných scénářích.

  • Kontrola zabezpečení a stability: Vyhodnoťte zabezpečení a stabilitu alternativního operačního systému. Vyhledejte aktualizace zabezpečení, opravy a podporu komunity, abyste zajistili, že operační systém bude aktivně udržován a celkově zabezpečený a stabilní.

  • Zvažte podporu dodavatele: Vyhodnoťte úroveň podpory dodavatele, která je k dispozici pro alternativní operační systém. Zkontrolujte, jestli existují oficiální kanály podpory, dokumentace a komunita uživatelů, kteří vám můžou poskytnout pomoc, pokud ji potřebujete.

Optimalizace procházení sítě

Optimalizace procházení sítě spočívá v minimalizaci síťového provozu mezi komponentami úloh. Přenos dat často souvisí s náklady. Minimalizací síťového provozu můžete snížit množství dat, která je potřeba přenést, a zároveň snížit náklady.

Analyzujte úlohy a identifikujte nepotřebné přenosy dat mezi komponentami. Vyhněte se přenosu redundantních nebo duplicitních dat a přenášet pouze základní informace. Pokud například komponenta opakovaně požaduje stejná data z jiné komponenty, je kandidátem na optimalizaci. Refaktoringem kódu můžete omezit nepotřebná volání nebo dávkové požadavky a minimalizovat přenášená data. Aplikace můžou odesílat celé objekty nebo datové struktury, pokud je potřeba jen několik polí. Optimalizací kódu tak, aby odesílal jenom požadovaná data, minimalizujete velikost jednotlivých přenosů dat.

Optimalizace síťových protokolů

Síťové protokoly hrají zásadní roli v efektivitě síťové komunikace. Optimalizací síťových protokolů můžete zlepšit celkovou efektivitu přenosu dat a snížit spotřebu prostředků.

Zvažte tyto návrhy:

  • Výběr efektivních protokolů: Vyberte protokoly, které jsou známé svou efektivitou z hlediska rychlosti přenosu dat a minimalizace režijních nákladů. Zvažte například použití protokolů, jako je HTTP/2, přes HTTP/1.1. Tyto protokoly jsou navržené tak, aby zvýšily výkon tím, že snižují latenci a optimalizují přenos dat. Tyto protokoly můžete používat pomocí knihoven a architektur ve vaší aplikaci.

  • Podpora komprese: Implementujte do síťových protokolů mechanismy komprese, abyste snížili velikost přenášených dat. Komprese může výrazně snížit množství dat přenášených přes síť, což vede ke zlepšení výkonu a snížení využití šířky pásma. Komprese na straně serveru je obvykle povolená v kódu aplikace nebo konfiguraci serveru.

  • Využití sdružování připojení: Sdružování připojení umožňuje opakované použití navázaných síťových připojení, aby se snížila režie při vytváření nových připojení pro jednotlivé požadavky. Sdružování připojení může zlepšit efektivitu síťové komunikace tím, že se vyhnete režijním nákladům na nastavení a přerušení připojení. Zvolte knihovnu nebo architekturu pro sdružování připojení a nakonfigurujte ji tak, aby vyhovovala potřebám úloh.

  • Implementace dalších optimalizací: Prozkoumejte další optimalizace, které jsou specifické pro vaše úlohy a síťové prostředí. K další optimalizaci procházení sítě můžete například použít ukládání obsahu do mezipaměti, vyrovnávání zatížení a tvarování provozu.

Minimalizace síťových režií

Minimalizujte objem síťového provozu a přenosu dat mezi komponentami úloh. Snížením režijních nákladů na síť můžete snížit náklady spojené s odchozím a příchozím přenosem dat a zlepšit celkový výkon sítě.

Zvažte tyto techniky:

  • Omezení redundantních požadavků: Analyzujte kód a identifikujte duplicitní nebo nepotřebné požadavky. Místo provádění více požadavků na stejná data můžete kód upravit tak, aby se data načetla jednou a podle potřeby je znovu použila.

  • Optimalizace velikosti dat: Zkontrolujte data přenášená mezi komponentami nebo systémy a hledejte příležitosti k minimalizaci jejich velikosti. Zvažte techniky, jako je komprese dat před přenosem nebo použití efektivnějších formátů dat. Zmenšením velikosti dat můžete snížit využití šířky pásma sítě a zlepšit celkovou efektivitu.

  • Dávkové požadavky: Pokud je to možné, zvažte dávkování několika menších požadavků do jednoho většího požadavku. Dávkování snižuje režii při navazování více připojení a snižuje celkový přenos dat.

  • Použití serializace dat: Serializace dat je proces převodu složitých datových struktur nebo objektů do formátu, který lze snadno přenášet přes síť nebo uložit v trvalém úložném systému. Tato strategie zahrnuje reprezentaci dat ve standardizovaném formátu, aby je bylo možné efektivně přenášet, zpracovávat a rekonstruovat na přijímajícím konci.

    Vyberte formát serializace, který je kompaktní, rychlý a vhodný pro požadavky vaší úlohy.

    Formát serializace Description
    Vyrovnávací paměti protokolu (protobuf) Binární serializační formát, který nabízí efektivní kódování a dekódování strukturovaných dat. K definování struktur zpráv používá soubory definice typu.
    MessagePack Binární serializační formát pro kompaktní přenos po drátu. Podporuje různé datové typy a poskytuje rychlý výkon serializace a deserializace.
    JSON (JavaScript Object Notation) Široce používaný formát serializace dat, který je čitelný pro člověka a snadno se s tím pracuje. JSON je založený na textu a má širokou podporu pro různé platformy.
    Binární JSON (BSON) Binární serializační formát, který se podobá formátu JSON, ale je navržený pro efektivní serializaci a deserializaci. BSON obsahuje další datové typy, které nejsou dostupné ve formátu JSON.

    V závislosti na formátu serializace, musíte implementovat logiku serializovat objekty nebo datové struktury do zvoleného formátu a deserializovat je zpět do jejich původní podoby. Tuto logiku můžete implementovat pomocí knihoven nebo architektur, které poskytují možnosti serializace pro formát.

Optimalizace přístupu k datům

Optimalizace přístupu k datům se týká zjednodušení vzorů a technik pro načítání a ukládání dat, aby se minimalizovaly zbytečné operace. Když optimalizujete přístup k datům, můžete ušetřit náklady tím, že snížíte využití prostředků, omezíte načítání dat a zvýšíte efektivitu zpracování dat. Zvažte techniky, jako je ukládání dat do mezipaměti, efektivní dotazování na data a komprese dat.

Použití mechanismů ukládání do mezipaměti

Ukládání do mezipaměti zahrnuje ukládání často přístupných dat blíže komponentám, které je vyžadují. Tato technika snižuje potřebu síťového procházení tím, že obsluhuje data z mezipaměti, místo aby je načítá přes síť.

Zvažte tyto mechanismy ukládání do mezipaměti:

  • Použití externí mezipaměti: Jedním z oblíbených řešení ukládání do mezipaměti je síť pro doručování obsahu. Pomáhá minimalizovat latenci a snížit procházení sítě tím, že statický obsah uloží do mezipaměti blíže uživatelům.

  • Ladění parametrů ukládání do mezipaměti: Nakonfigurujte parametry ukládání do mezipaměti, jako je hodnota TTL (Time to Live), abyste optimalizovali výhody ukládání do mezipaměti a současně minimalizovali potenciální nevýhody. Nastavení odpovídající hodnoty TTL zajistí, že data uložená v mezipaměti zůstanou aktuální a relevantní.

  • Použití ukládání do mezipaměti v paměti: Kromě externích řešení ukládání do mezipaměti zvažte implementaci ukládání do mezipaměti v paměti ve vaší aplikaci. Ukládání do mezipaměti v paměti může pomoct využívat nečinné výpočetní prostředky a zvýšit hustotu výpočetních prostředků přidělených prostředků.

Optimalizace provozu databáze

Můžete zvýšit efektivitu komunikace aplikace s databází. Tady jsou některé klíčové aspekty a techniky pro optimalizaci provozu databáze:

  • Vytváření indexů: Indexování je proces vytváření datových struktur, které zlepšují rychlost načítání dat. Vytvořením indexů u často dotazovaných sloupců můžete výrazně zkrátit dobu potřebnou ke spouštění dotazů. Pokud máte například tabulku uživatelů se sloupcem pro uživatelská jména, můžete vytvořit index sloupce uživatelského jména, který urychlí dotazy, které hledají konkrétní uživatelská jména.

    Identifikujte sloupce s nejčastějším přístupem a vytvořte pro tyto sloupce indexy, abyste urychlili načítání dat. Pravidelně analyzujte a optimalizujte existující indexy, abyste měli jistotu, že jsou stále efektivní. Vyhněte se nadměrnému indexování, protože může negativně ovlivnit operace vložení a aktualizace.

  • Optimalizace dotazů: Navrhujte efektivní dotazy s ohledem na konkrétní požadavky na data a minimalizujte načítání nepotřebných dat. Začněte použitím příslušných typů spojení (například vnitřního a levého spojení) na základě relace mezi tabulkami. Ke zvýšení výkonu použijte techniky optimalizace dotazů, jako jsou pomocné parametry dotazu, analýza plánu dotazu a přepisování dotazů.

  • Výsledky dotazů do mezipaměti: Výsledky často spouštěných dotazů můžete uložit do paměti nebo mezipaměti. Následná spuštění stejného dotazu pak mohou být obsluhována z mezipaměti, což eliminuje potřebu náročných databázových operací.

  • Použijte architekturu orm (object-relational mapping): Funkce ORM, jako je opožděné načítání, ukládání do mezipaměti a dávkové zpracování, můžete využít k optimalizaci načítání dat a minimalizaci doby odezvy databáze. Použijte architektury ORM, jako jsou Entity Framework pro C# nebo Hibernate pro Javu.

  • Optimalizace uložených procedur: Analyzujte a optimalizujte logiku a výkon uložených procedur. Cílem je vyhnout se zbytečným výpočtům nebo redundantním dotazům v uložených procedurách. Optimalizujte používání dočasných tabulek, proměnných a kurzorů, abyste minimalizovali spotřebu prostředků.

Uspořádání dat

Uspořádání dat pro zajištění efektivního přístupu a načítání zahrnuje strukturování a ukládání dat způsobem, který maximalizuje výkon a minimalizuje spotřebu prostředků. Může zkrátit dobu odezvy dotazů, snížit náklady na přenos dat a optimalizovat využití úložiště.

Tady jsou některé techniky pro efektivní uspořádání dat:

  • Oddíl: Dělení zahrnuje rozdělení velké datové sady na menší podmnožinu, která se dá lépe spravovat. Říká se jí oddíly. Každý oddíl můžete uložit samostatně, abyste umožnili paralelní zpracování a vylepšili výkon dotazů. Data můžete například rozdělit na základě konkrétního rozsahu hodnot nebo rozdělením dat mezi servery. Tato technika může zlepšit škálovatelnost, omezit kolize a optimalizovat využití prostředků.

  • Horizontální dělení: Horizontální dělení je technika horizontálního rozdělení dat mezi více databázových instancí nebo serverů. Každý horizontální oddíl obsahuje podmnožinu dat a dotazy je možné napříč těmito horizontálními oddíly zpracovávat paralelně. Horizontální dělení může zvýšit výkon dotazů, protože distribuuje úlohy a snižuje množství dat, ke kterým každý dotaz přistupuje.

  • Komprese: Komprese dat zahrnuje zmenšení velikosti dat, aby se minimalizovaly požadavky na úložiště a zlepšila se efektivita přenosu dat. Vzhledem k tomu, že komprimovaná data zabírají méně místa na disku, šetří náklady na úložiště. Komprimovaná data je také možné přenášet rychleji přes sítě a snížit tak náklady na přenos dat.

Představte si například scénář, ve kterém máte velkou datovou sadu informací o zákazníci. Rozdělením dat na základě oblastí zákazníků nebo demografických údajů můžete distribuovat úlohy mezi několik serverů a zlepšit výkon dotazů. Můžete také zkomprimovat data, abyste snížili náklady na úložiště a zvýšili efektivitu přenosu dat.

Optimalizace architektury

Vyhodnoťte architekturu úloh a identifikujte příležitosti pro optimalizaci prostředků. Cílem je použít správné služby pro správnou úlohu.

K dosažení tohoto cíle možná budete muset přepracovat části architektury tak, aby využívaly méně prostředků. Zvažte bezserverové nebo spravované služby a optimalizujte přidělování prostředků. Optimalizací architektury můžete splnit funkční i nefunkční požadavky a současně spotřebovávat méně prostředků pro jednotlivé instance.

Použití vzorů návrhu

Vzory návrhu jsou opakovaně použitelná řešení, která vývojářům pomáhají řešit opakující se problémy návrhu. Poskytují strukturovaný přístup k návrhu kódu, který je efektivní, udržovatelný a škálovatelný.

Vzory návrhu pomáhají optimalizovat využití systémových prostředků tím, že poskytují pokyny pro efektivní přidělování a správu prostředků. Model Jistič například pomáhá zabránit zbytečné spotřebě prostředků tím, že poskytuje mechanismus pro řízené zpracování a zotavení po selhání.

Vzory návrhu můžou pomoct optimalizovat kód nákladů následujícími způsoby:

  • Kratší doba vývoje: Vzory návrhu poskytují osvědčená řešení běžných problémů návrhu, což může ušetřit čas vývoje. Při dodržování zavedených vzorů se vývojáři mohou vyhnout opakované práci a zaměřit se na implementaci konkrétních požadavků svých aplikací.

  • Vylepšená udržovatelnost: Vzory návrhu podporují modulární a strukturovaný kód, který se snadněji rozumí, upravuje a udržuje. Můžou vést k úsporám nákladů, pokud jde o menší úsilí při ladění a údržbě.

  • Škálovatelnost a výkon: Vzory návrhu pomáhají navrhovat škálovatelné a výkonné systémy. Vzory, jako je model Cache-Aside, můžou zvýšit výkon tím, že ukládají často ovaná data do mezipaměti, aby se snížila potřeba náročných výpočtů nebo externích volání.

Při implementaci vzorů návrhu musí vývojáři porozumět principům a pokynům jednotlivých vzorů a použít je v kódu. Zvažte identifikaci vhodného vzoru pro problém, pochopení jeho struktury a součástí a integraci modelu do celkového návrhu.

K dispozici jsou různé prostředky, například dokumentace, kurzy a ukázkový kód. Tyto zdroje informací můžou vývojářům pomoct efektivně se učit a implementovat vzory návrhu.

Změna konfigurace

Pravidelně kontrolujte a aktualizujte konfiguraci úloh, abyste měli jistotu, že je v souladu s vašimi aktuálními požadavky. Zvažte úpravu nastavení velikosti a konfigurace prostředků na základě požadavků úloh. Optimalizací konfigurací můžete efektivně přidělovat prostředky a vyhnout se nadměrnému zřizování, abyste ušetřili náklady.

Refaktoring architektury

Vyhodnoťte architekturu úloh a identifikujte příležitosti pro refaktoring nebo přepracování komponent za účelem optimalizace využití prostředků. Zvažte techniky, jako je přijetí architektury mikroslužeb, implementace modelu Jistič a použití bezserverové architektury. Optimalizací architektury můžete dosáhnout lepšího využití prostředků a lepší efektivity nákladů.

Úprava velikostí prostředků

Nepřetržitě monitorujte a analyzujte využití prostředků vaší úlohy. Na základě pozorovaných vzorů a trendů upravte nastavení velikosti a konfigurace prostředků, abyste optimalizovali spotřebu prostředků.

Zvažte nastavení práv virtuálních počítačů, úpravu přidělení paměti a optimalizaci kapacity úložiště. Nastavením rightsizingu prostředků se můžete vyhnout zbytečným nákladům spojeným s nízkým využitím nebo nadměrným zřizováním.

Kompromis: Přepracování kódu a architektury nemusí odpovídat aktuálním plánům projektů a může vést ke skluzu plánů a nákladů.

Usnadnění Azure

Instrumentace kódu: Azure poskytuje nástroje pro monitorování a protokolování, jako jsou Azure Monitor, Application Insights a Log Analytics. Tyto nástroje můžete použít ke sledování a analýze výkonu a chování kódu v reálném čase.

Identifikace horkých a optimalizovaných cest: Application Insights a Profiler Application Insights pomáhají identifikovat a optimalizovat horké cesty v kódu díky analýze doby provádění a využití prostředků. Pomocí Profileru můžete minimalizovat nepotřebné přidělení paměti a optimalizovat využití paměti.

Použití správných sad SDK: Azure nabízí sady SDK v několika programovacích jazycích optimalizovaných pro výkon a snadné použití. Tyto sady SDK poskytují předem připravené funkce a knihovny, které komunikují se službami Azure, aby se snížila potřeba vlastní implementace.

Optimalizace procházení sítí: Různé služby Azure podporují vysokorychlostní síťové protokoly, jako je HTTP/2 a QUIC , pro efektivní komunikaci mezi službami a aplikacemi.

Služby Azure, jako je Azure Database for PostgreSQL – flexibilní server, podporují sdružování připojení.

Azure podporuje dávkové zpracování v různých službách, takže můžete seskupit více operací a spustit je v jednom požadavku. Dávkové zpracování může výrazně zvýšit efektivitu a snížit zatížení sítě.

Pokud jde o serializaci dat, Azure podporuje různé formáty serializace, včetně JSON a XML. Zvolte vhodný formát serializace na základě velikosti dat, požadavků na výkon a potřeby interoperability.

Optimalizace přístupu k datům: Azure poskytuje služby ukládání do mezipaměti, jako je Azure Cache for Redis. Ukládání často přístupných dat do mezipaměti můžete použít k ukládání dat blíže k aplikaci, což má za následek rychlejší načítání a snížení back-endového zatížení.

  • Indexování a optimalizace dotazů: Služby Azure, jako jsou Azure SQL Database a Azure Cosmos DB, poskytují funkce indexování pro optimalizaci výkonu dotazů. Výběrem správné strategie indexování a optimalizací dotazů můžete zlepšit celkovou efektivitu načítání dat.

  • Objektově-relační mapování (ORM): Azure podporuje architektury ORM, jako je Entity Framework. Tyto architektury zjednodušují přístup k datům a mapování mezi objektově orientovaným kódem a relačními databázemi nebo databázemi NoSQL.

  • Optimalizace uložených procedur: K vytváření a optimalizaci uložených procedur můžete použít služby Azure, jako je Azure SQL Database. Uložené procedury můžou zvýšit výkon tím, že omezují odezvy sítě a předkompilují příkazy SQL.

  • Dělení a shardování: Azure nabízí možnosti dělení a horizontálního dělení ve službách, jako jsou Azure Cosmos DB a Azure SQL Database. Dělení můžete použít k distribuci dat mezi více uzlů za účelem zajištění škálovatelnosti a optimalizace výkonu.

  • Komprese dat: Služby Azure podporují techniky komprese dat, jako jsou GZIP a DEFLATE.

Optimalizace architektury: Azure poskytuje pokyny k architektuře a vzory návrhu pro navrhování škálovatelných, odolných a výkonných aplikací. Další informace najdete v tématu Vzory návrhu.

Kontrolní seznam pro optimalizaci nákladů

Projděte si kompletní sadu doporučení.