Doporučení pro optimalizaci nákladů na kód
Platí pro toto doporučení kontrolního seznamu optimalizace nákladů architektury s dobře navrženou architekturou Azure:
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 počtem prostředků. |
---|
Tato příručka popisuje doporučení pro optimalizaci nákladů na kód. Optimalizace kódu je proces zlepšení 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šila se celkový výkon.
Optimalizací kódu můžete identifikovat a eliminovat neekicience, které můžou vést ke zvýšení spotřeby prostředků a vyšších nákladů. 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 a responzivním aplikacím. Vylepšený výkon vylepšuje uživatelské prostředí a umožňuje systému efektivně zpracovávat větší úlohy.
Definice
Pojem | definice |
---|---|
Instrumentace kódu | Postup přidání fragmentů kódu nebo knihoven do kódu, který shromažďuje data a monitoruje výkon kódu během 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í formy. |
Horké cesty | Kritické nebo často spouštěné části programu, které vyžadují vysoký výkon a nízkou latenci. |
Klíčové strategie návrhu
Optimalizace nákladů na kód znamená zlepšení kódu, aby se dosáhlo stejné funkčnosti s menším počtem prostředků na instanci, 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 mají vysoké zatížení provozu.
Vylepšení kódu jsou nejúčinnější, když sledujete další úsilí o optimalizaci nákladů na škálování, změnu práv, redundanci a omezování. Jakmile 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, automatického škálování a spolehlivosti můžou maskovat nedostatky kódu. Následující strategie vám můžou pomoct identifikovat a opravit kód aplikace, který stojí více, než by měl.
Instrumentace kódu
Instrumentace kódu je postup přidá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 v rané fázi životního cyklu vývoje softwaru provádět analýzu kódu. Dříve jste zachytili problém s kódem, tím levnější je opravit.
Automatizujte co nejvíce této analýzy kódu. Pomocí dynamických a statických nástrojů pro analýzu kódu můžete snížit ruční úsilí. Mějte ale na paměti, že toto testování je stále simulací výroby. Produkční prostředí poskytuje nejjasnější znalosti optimalizace kódu.
Kompromis: Nástroje pro monitorování kódu pravděpodobně zvyšují náklady.
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ů. Jedná se o důležité nebo často spouštěné části 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 oddíly kódu, které se často spouštějí, 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 účinek uživatele: Vyhodnoťte důležitost cest kódu na základě jejich relevance pro funkčnost nebo důležité obchodní operace aplikace. Určete, které cesty kódu jsou klíčové 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 proti těmto doporučením, abyste identifikovali oblasti pro zlepšení. Odeberte všechny nepotřebné operace v cestě kódu, které by mohly ovlivnit výkon.
Odeberte nepotřebná 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 provádí ověření, ke kterému došlo dříve v kódu, můžete toto nepotřebné volání funkce odebrat.
Minimalizovat operace 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 důležitá pro analýzu výkonu.
Optimalizace smyček a podmíněných výrazů: Analýza smyček a podmíněných výrazů v kódu Identifikujte všechny nepotřebné iterace nebo podmínky, které můžete eliminovat. Zjednodušení a optimalizace těchto struktur může zlepšit výkon kódu.
Omezení zbytečného zpracování dat: Zkontrolujte kód u všech nepotřebných operací 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í. Dávkové požadavky, pokud je to možné, a vyhněte se zbytečným odezvám, aby se zlepšil výkon.
Minimalizace přidělení: Určete oblasti, ve kterých dochází k nadměrnému přidělení paměti. Optimalizujte kód snížením nepotřebných přidělení a opětovným použitím stávají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šení velikosti datové struktury: Vyhodnoťte velikost datových struktur, jako jsou třídy, a určete oblasti, ve kterých je to možné. 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 balením dat.
Posouzení křížových implementací: Zvažte účinky křížových implementací, jako jsou kontroly middlewaru nebo tokenů. Vyhodnoťte, jestli mají negativní vliv na výkon.
Kompromis: Optimalizace kódu a horkých cest vyžaduje zkušenosti vývojářů s identifikací efektivity kódu. Tito vysoce kvalifikovaní jednotlivci mohou potřebovat strávit čas na jiných úkolech.
Vyhodnocení použití souběžnosti
Vyhodnocení použití souběžnosti zahrnuje posouzení, jestli asynchronní zpracování, multithreading nebo multiprocesing může 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, aby se zabránilo větší režii a zachovala se nákladová efektivita.
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 odblokování provádění. Můžete například spustit proces a pozastavit ho, aby se dokončil druhý proces.
Určete komponenty kódu nebo operace, které můžete spustit 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 slibech v JavaScriptu.Restrukturalizovat kód tak, aby používal asynchronní programovací konstrukce povolením odblokování provádění úloh. Oddělení dlouhotrvajících nebo vstupně-výstupních operací od hlavního spouštěcího vlákna pomocí asynchronních metod nebo zpětných volání. K zpracování asynchronních pracovních postupů použijte asynchronní rozhraní API nebo knihovny, které poskytuje programovací jazyk nebo architektura.
Multithreading: V multithreadingu spustíte více vláken jednoho procesu současně.
Identifikujte části kódu, které můžete spouštět souběžně a nezávisle na sobě. 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, aby se zajistilo zabezpečení vlákna a zabránilo podmínkám časování, když kód přistupuje ke sdíleným prostředkům. Zvažte použití abstrakcí vyšší úrovně, jako jsou fondy vláken nebo knihovny paralelismu založené na úlohách, aby se zjednodušila správa více vláken a zjednodušila řízení souběžnosti.
Vícezpracování: Multiprocesing může mít procesy spuštěné paralelně. Může poskytovat lepší využití více jader procesoru než multithreading.
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 její možnosti multiprocesingu. Představte si například modul multiprocessingu v Pythonu nebo paralelních datových proudech v Javě. Navrhněte kód tak, aby rozděloval úlohy do několika nezávislých úloh, které je možné zpracovávat souběžně.
K vytváření a správě paralelních procesů používejte rozhraní API nebo knihovny s více procesy. Distribuujte úlohy mezi tato rozhraní API nebo knihovny. Pokud chcete umožnit koordinaci a sdílení dat mezi více 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é pro optimalizaci využití prostředků a zvýšení výkonu. Je důležité vyhodnotit funkce a možnosti jednotlivých sad SDK. Zvažte jeho kompatibilitu s programovacím jazykem a vývojovým prostředím.
Tady jsou pokyny, které vám pomůžou zvolit nejlepší sady SDK pro vaši úlohu:
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 z hlediska optimalizace prostředků a zlepšení výkonu. Pomocí 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 za účelem optimalizace 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 stejné nebo podobné funkce s nižšími náklady, je vhodné 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 pro svou úlohu zvolit správný operační systém, vyzkoušejte tyto aktivity:
Vyhodnocení požadavků: Seznamte se s konkrétními potřebami vaší úlohy, 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 zvolený operační systém je kompatibilní s vašimi 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 má dobrou kompatibilitu s vaším technologickým zásobníkem.
Funkce posouzení: Zjistěte, jestli alternativní operační systém podporuje stejné nebo podobné funkce jako 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. Zvažte 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ší úlohy, aniž by to ovlivnilo funkčnost.
Zvažte výkon a optimalizaci: Vyhodnoťte možnosti výkonu a optimalizace alternativního operačního systému. Vyhledejte srovnávací testy, případové studie nebo porovnání výkonu, abyste pochopili, jak funguje 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 je aktivně udržován a je 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ří můžou poskytnout pomoc, pokud je potřebujete.
Optimalizace síťového provozu
Optimalizace síťového procházení spočívá v minimalizaci síťového provozu mezi komponentami úloh. Přenos dat často má přidružené 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 úlohu a identifikujte všechny 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 to kandidát na optimalizaci. Refaktoring kódu můžete refaktorovat tak, aby se snížila nepotřebná volání nebo dávkové požadavky, čímž minimalizujete přenášená data. Aplikace můžou posílat celé objekty nebo datové struktury, pokud potřebujete jenom několik polí. Optimalizace kódu tak, aby odesílala jenom požadovaná data, minimalizujete velikost každého přenosu dat.
Optimalizace síťových protokolů
Síťové protokoly hrají zásadní roli při 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:
Zvolte efektivní protokoly: Vyberte protokoly, které jsou známé pro jejich efektivitu z hlediska rychlosti přenosu dat a minimalizace režie. Zvažte například použití protokolů, jako je HTTP/2, přes HTTP/1.1. Tyto protokoly jsou navržené tak, aby zlepšily výkon snížením latence a optimalizací přenosu dat. Tyto protokoly můžete používat pomocí knihoven a architektur ve vaší aplikaci.
Komprese podpory: 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 zvýšení výkonu a snížení využití šířky pásma. Komprese na straně serveru se obvykle povoluje v konfiguraci kódu aplikace nebo serveru.
Využití sdružování připojení: Sdružování připojení umožňuje opakované použití zavedených síťových připojení, aby se snížila režie navazování 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 zabrání režii při nastavování a odstraňování připojení. Zvolte knihovnu nebo architekturu sdružování připojení a nakonfigurujte ji tak, aby vyhovovala potřebám úloh.
Implementace dalších optimalizací: Prozkoumejte další optimalizace specifické pro vaše úlohy a síťové prostředí. K další optimalizaci síťového procházení můžete například použít ukládání obsahu do mezipaměti, vyrovnávání zatížení a tvarování provozu.
Minimalizace režijních nákladů na síť
Minimalizujte objem síťového provozu a přenos dat mezi komponentami vaší úlohy. 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:
Snížit redundantní požadavky: Analyzujte kód, abyste identifikovali všechny duplicitní nebo nepotřebné požadavky. Místo vytváření více požadavků na stejná data můžete kód upravit tak, aby načítal data jednou a podle potřeby je znovu použil.
Optimalizace velikosti dat: Zkontrolujte přenášená data 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. Sníž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í více menších požadavků do jednoho většího požadavku. Dávkování snižuje režii při vytváření více připojení a snižuje celkový přenos dat.
Serializace dat: Serializace dat je proces převodu složitých datových struktur nebo objektů do formátu, který lze snadno přenést přes síť nebo uložit v trvalém systému úložiště. Tato strategie zahrnuje reprezentaci dat ve standardizovaném formátu, takže je možné efektivně přenášet, zpracovávat a rekonstruovat na přijímající straně.
Vyberte kompaktní, rychlý a vhodný formát serializace pro požadavky vašich úloh.
Formát serializace Popis 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á typované definiční soubory. MessagePack Binární serializační formát pro kompaktní přenos přes drát. Podporuje různé datové typy a poskytuje rychlý serializace a deserializace výkon. JSON (JavaScript Object Notation) Široce používaný formát serializace dat, který je čitelný a snadno ovladatelný. 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ý je podobný 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 je nutné implementovat logiku pro serializaci objektů nebo datových struktur do zvoleného formátu a deserializovat je zpět do původní formy. 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. Při optimalizaci přístupu k datům můžete ušetřit náklady snížením využití prostředků, snížením načítání dat a zlepšením efektivity 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 ke komponentám, které je vyžadují. Tato technika snižuje potřebu procházení sítě 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žít externí mezipaměť: 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 omezit procházení sítě ukládáním statického obsahu 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, například TTL (Time to Live), abyste optimalizovali výhody ukládání do mezipaměti a minimalizovali potenciální nevýhody. Nastavení vhodné hodnoty TTL zajistí, aby data uložená v mezipaměti zůstala 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
Efektivitu komunikace s databází můžete zvýšit. Tady jsou některé klíčové aspekty a techniky optimalizace 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 ve sloupci uživatelského jména vytvořit index, který urychlí dotazy, které vyhledávají konkrétní uživatelská jména.
Identifikujte nejčastěji používané sloupce a vytvořte indexy těchto sloupců, 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ů: Návrh efektivních dotazů s ohledem na konkrétní požadavky na data a minimalizace nepotřebných načítání dat Začněte použitím vhodných typů spojení (například vnitřního spojení a levého spojení) na základě relace mezi tabulkami. Ke zlepšení výkonu použijte techniky optimalizace dotazů, jako jsou rady dotazů, analýza plánu dotazů a přepis dotazů.
Výsledky dotazů mezipaměti: Výsledky často spouštěných dotazů můžete ukládat do paměti nebo do mezipaměti. Následné spuštění stejného dotazu je pak možné obsluhovat z mezipaměti, což eliminuje potřebu nákladných databázových operací.
Použití rozhraní ORM (Object-Relational Mapping): Použijte funkce ORM, jako je opožděné načítání, ukládání do mezipaměti a dávkové zpracování, k optimalizaci načítání dat a minimalizaci doby odezvy databáze. Používejte architektury ORM, jako je Entity Framework pro C# nebo Hibernace pro Javu.
Optimalizace uložených procedur: Analýza a optimalizace logiky a výkonu 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žití dočasných tabulek, proměnných a kurzorů, abyste minimalizovali spotřebu prostředků.
Uspořádání dat
Uspořádání dat pro efektivní přístup 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 zlepšit dobu odezvy dotazů, snížit náklady na přenos dat a optimalizovat využití úložiště.
Tady je několik technik efektivního uspořádání dat:
Oddíl: Dělení zahrnuje rozdělení velké datové sady na menší a lépe spravovatelné podmnožina označované jako oddíly. Každý oddíl můžete uložit samostatně, abyste umožnili paralelní zpracování a zvýšili výkon dotazů. Data můžete například rozdělit na základě konkrétního rozsahu hodnot nebo distribuovat data mezi servery. Tato technika může zvýšit škálovatelnost, snížit kolize a optimalizovat využití prostředků.
Horizontální dělení: Horizontální dělení je technika horizontálního dě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é zpracovávat paralelně napříč těmito horizontálními oddíly. Horizontální dělení může zvýšit výkon dotazů tím, že distribuuje úlohu a snižuje množství dat, ke kterým každý dotaz přistupuje.
Komprese: Komprese dat zahrnuje snížení velikosti dat, aby se minimalizovaly požadavky na úložiště a zlepšily efektivitu přenosu dat. Vzhledem k tomu, že komprimovaná data zabírají méně místa na disku, umožňují ušetřit náklady na úložiště. Komprimovaná data je také možné přenášet rychleji přes sítě a snížit 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 více serverů a zlepšit výkon dotazů. Data můžete také komprimovat, abyste snížili náklady na úložiště a zlepšili efektivitu přenosu dat.
Optimalizace návrhu řešení
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.
Abyste dosáhli tohoto cíle, možná budete muset přepracovat části architektury tak, aby použí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í a nefunkční požadavky a současně spotřebovávat méně prostředků na instanci.
Použití vzorů návrhu
Vzory návrhu jsou opakovaně použitelná řešení, která vývojářům pomáhají řešit opakované problémy s návrhem. 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 zpracování a zotavení po selhání kontrolovaným způsobem.
Vzory návrhu můžou pomoct optimalizovat kód následujícími způsoby:
Kratší doba vývoje: Vzory návrhu poskytují prověřená řešení běžných problémů návrhu, což může ušetřit čas vývoje. Vývojáři se díky zavedeným vzorům můžou 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ý je srozumitelnější, upravit a udržovat. Můžou vést k úsporám nákladů z hlediska sníženého ladění a údržby.
Škálovatelnost a výkon: Vzory návrhu pomáhají při navrhování škálovatelných a výkonných systémů. Vzory, jako je model doplňování do mezipaměti, můžou zlepšit výkon ukládáním často řízených dat do mezipaměti, aby se snížila potřeba nákladných výpočtů nebo externích volání.
Aby vývojáři mohli implementovat vzory návrhu, musí porozumět principům a pokynům jednotlivých vzorů a použít je v kódu. Zvažte určení 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 konfigurací
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ů na úlohy. Optimalizací konfigurací můžete efektivně přidělit prostředky a vyhnout se nadměrnému zřízení, abyste ušetřili náklady.
Refaktoring architektury
Vyhodnoťte architekturu úloh a identifikujte příležitosti k refaktoringu nebo změně návrhu komponent za účelem optimalizace spotřeby 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 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í oprávnění virtuálních počítačů, úpravu přidělení paměti a optimalizaci kapacity úložiště. Díky nastavení práv k prostředkům se můžete vyhnout zbytečným nákladům spojeným s nízkým využitím nebo nadměrnému zřízení.
Kompromis: Přepracování kódu a architektury nemusí odpovídat aktuálním plánům projektů a mohlo by vést k plánování a skluzu nákladů.
Usnadnění azure
Instrumentace kódu: Azure poskytuje nástroje pro monitorování a protokolování, jako je Azure Monitor, Application Insights a Log Analytics. Pomocí těchto nástrojů můžete sledovat a analyzovat výkon a chování kódu v reálném čase.
Identifikace horkých a optimalizovaných cest: Application Insights a Application Insights Profiler pomáhají identifikovat a optimalizovat horké cesty v kódu analýzou 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 ve více 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 síťového procházení: Různé služby Azure podporují vysokorychlostní síťové protokoly, jako jsou HTTP/2 a QUIC , pro efektivní komunikaci mezi službami a aplikacemi.
Služby Azure, jako je Flexibilní server Azure Database for PostgreSQL, podporují sdružování připojení.
podpora Azure dávkové zpracování v různých službách, takže můžete seskupit několik operací a spustit je v jediné žádosti. Dávkové zpracování může výrazně zlepšit efektivitu a snížit režii na síť.
Pokud jde o serializaci dat, podpora Azure 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řeb 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í často přístupných dat blíž k aplikaci, což vede k rychlejšímu načítání a snížení zatížení back-endu.
Optimalizace indexování a dotazů: Služby Azure, jako je Azure SQL Database a Azure Cosmos DB , poskytují možnosti indexování pro optimalizaci výkonu dotazů. Když zvolíte správnou strategii indexování a optimalizujete dotazy, můžete zlepšit celkovou efektivitu načítání dat.
Objektově-relační mapování (ORM): podpora Azure 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: Pomocí služeb Azure, jako je Azure SQL Database , můžete vytvářet a optimalizovat uložené procedury. Uložené procedury můžou zvýšit výkon snížením doby odezvy sítě a předkompilováním příkazů SQL.
Dělení a shardování: Azure nabízí možnosti dělení a horizontálního dělení ve službách, jako je Azure Cosmos DB a Azure SQL Database. Dělení můžete použít k distribuci dat napříč několika uzly pro optimalizaci škálovatelnosti a výkonu.
Komprese dat: Služby Azure podporují techniky komprese dat, jako je 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.
Související odkazy
- Azure Monitor
- Application Insights
- Log Analytics
- Application Insights Profiler
- Sdružování připojení
- Azure Database for PostgreSQL – Sdružování připojení flexibilního serveru
- Ladění indexů služby Azure SQL Database
- Zásady indexování ve službě Azure Cosmos DB
- Dělení ve službě Azure Cosmos DB
- Dělení služby Azure SQL Database
Kontrolní seznam optimalizace nákladů
Projděte si kompletní sadu doporučení.