Programování

13 rámců Java pro mikroslužby pevné jako skála

Byla to dlouhá cesta pro Javu, jazyk, který začal jako lingua franca pro krabici na horní straně televizoru v dobách, kdy televizory nepřišly s vestavěným Roku nebo Chromecastem. Potom se Java chystala vlastnit World Wide Web pomocí animace prohlížeče, než se objevil JavaScript a vyřadil jej z cesty.

Java nakonec našla mezeru na serverových farmách, kde kdysi existovalo dost různých architektur čipů a operačních systémů, aby byla slibná „slibování kdykoli a kdekoli spustit“. A na těchto serverových farmách Java žila dál, oblíbený podnikový IT obchod závislý na spolehlivosti a vývojáři s láskou k silnému psaní.

Mezitím JavaScript obecně a zejména Node.js zpochybnily Javu na serveru pomocí své vysoké propustnosti a rychlosti bez vláken, aby převzaly obrovský kus provozu na webu. Node zaujal představivost nejnovějších programátorů na straně serveru tím, že nabízí nejen rychlost a efektivitu zdrojů, ale také jednoduchost kódu, který běží na klientovi i na serveru.

Navzdory vzestupu konkurence však Java nadále nejen přežívá, ale také vyniká. Mnoho týmů pověřených vývojem architektur mikroslužeb nadále používá Javu. Hlavním důvodem musí být to, že tato technologie je roky testována na frontách a analyzuje požadavky HTTP. Sun vytvořil skálopevný virtuální stroj a Oracle jej nadále vychovává a podporuje.

Dalším důvodem musí být pokračující vývoj jazyka. Java 8 nabízí solidní podporu pro funkční jazyky jako Scala a Kotlin. JVM je nyní základem mnoha nejlepších experimentů ve vývoji počítačového jazyka. Desítky nových jazyků lze sestavit až po bajtový kód Java a vzájemně se propojit, aby spolupracovaly složité projekty. Mnoho ze zásobníků běžících hladce na JVM může být vytvořeno kombinací Javy a řady dalších jazyků.

Největším důvodem však musí být naprostá setrvačnost. Jak píšu, v kostkách je uvedeno 371 pracovních míst pro programátory COBOL. Existuje mnoho, mnohem více úloh se slovem Java. Je překvapením, že se chytré týmy dívají na své obrovské hromady stárnoucího kódu Java a myslí si, že nejjednodušším řešením je jen přidat boční dveře, které vyplivnou data jako datové struktury JSON? Voilà. Starý kód stále běží, ale u těchto bočních dveří funguje jako moderní mikroslužba.

Všechny tyto možnosti a další zajišťují, že Java bude i nadále hrát silnou a zásadní roli v revoluci mikroslužeb. A není žádným překvapením, že komunita open source prostředí Java ji následovala a vytvořila mnoho nových možností pro programátory Java, kteří potřebují naučit svůj kód Java mluvit jako mikroslužba.

Zde je seznam 13 možností otevřeného zdroje, které vývojáři v Javě používají k vytváření řešení, která tvoří základ architektur mikroslužeb všude.

Jarní bota

Svět Java staví jarní aplikace již dlouhou dobu. Spring Boot je konkrétní verze Spring, díky které je proces mnohem jednodušší, protože za vás zpracovává mnoho podrobností konfigurace. Spring Boot byl vytvořen za účelem automatizace zahájení projektů Spring jakéhokoli druhu, nejen mikroslužeb. Aby to bylo ještě jednodušší, po dokončení aplikace Spring Boot smíchá webový server a vyplivne jeden soubor JAR, který je kromě JVM skoro vše, co potřebujete. Přemýšlejte o tom jako o originálním kontejneru Docker.

Celá tato chytrost ocení mnoho lidí, kteří mají za úkol vytvářet mikroslužby, protože veškerá konfigurace bude otravná, když to budete muset dělat znovu a znovu pro každou z tuctů mikroslužeb. Pokud to Spring Boot dokáže automatizovat, je mnohem jednodušší vyřadit několik desítek mikroslužeb.

Mikroslužby vyvinuté pomocí Spring se řídí stejnou filozofií MVC jako makro webové aplikace, které vytváříme roky. Rámec využívá veškerá hluboká spojení vybudovaná v průběhu let vývoje Java, včetně integrace se všemi významnými i vedlejšími datovými sklady, servery LDAP a nástroji pro zasílání zpráv, jako je Apache Kafka. Existují také desítky malých a ne tak malých funkcí pro udržování běžící kolekce serverů, funkce jako Spring Vault, nástroj pro udržování tajemství, hesel a přihlašovacích údajů, které servery ve výrobě potřebují. Všechny tyto výhody ukazují, proč se programátoři Java připojují k vlaku již mnoho let.

Eclipse MicroProfile

V roce 2016 se někteří fanoušci komunity Java Enterprise rozhlédli kolem a rozhodli se vyčistit veškerý hluk z edice Java Enterprise Edition, aby lidé mohli stavět jednoduché mikroslužby s klasickými částmi. Vyhodili překvapivý počet knihoven, ale ponechali si kód pro zpracování požadavků REST, analýzu JSON a správu vkládání závislostí. S čím skončili, přezdívaný Eclipse MicroProfile, bylo rychlé a jednoduché.

Od té doby komunita MicroProfile uzavřela smlouvu s vydáváním nových verzí tak často, jak čtvrtletně, a přidáním nového kódu pro zajištění bezproblémového a bezpečného chodu mikroslužeb. Proces vývoje a struktura kódu budou velmi dobře známé každému, kdo žil ve světě Java EE, ale nekonečné potíže s konfigurací byly vyleštěny. Je to důkaz, že staré psy můžete naučit novým trikům.

Dropwizard

Když se Dropwizard objevil v roce 2011, otevřel oči vývojářům prostředí Java Enterprise, jak málo kódu bylo skutečně zapotřebí. Rámec Dropwizard poskytl velmi jednoduchý model pro vývoj s mnoha důležitými rozhodnutími, která byla pro vás učiněna, a nadále se touto cestou řídil. Přidáte nějakou obchodní logiku a pak se vám podle konvence nakonfiguruje všechno ostatní. Výsledkem jsou štíhlé soubory JAR, které uživatelé chválí za rychlé spuštění.

Největším omezením může být nedostatek injekce závislostí. Chcete-li použít vkládání závislostí, abyste udrželi svůj kód čistý a volně spojený, budete si muset knihovny přidat sami. Na rozdíl od jarního světa to Dropwizard nemůže udělat. Většina ostatních luxusních položek je nyní podporována, včetně protokolování, kontrol stavu a kódu poskytujícího odolnost. Nebudete muset dělat příliš mnoho obětí.

WildFly Thorntail

Lidé v Red Hat vytvořili vlastní verzi MicroProfile s úhledným konfiguračním nástrojem. Rámec se původně jmenoval WildFly Swarm, ale poté byl přejmenován na Thorntail. Web Thorntail vám pomůže vytvořit vlastní soubor sestavení Maven pouhým zadáním funkcí, které potřebujete. Maven se poté postará o sestavení všeho.

Thorntail také zjistí hlavní součásti, které budete potřebovat, skenováním kódu, ale můžete to přepsat souborem BOM (kusovník). Když je vše spuštěno, Thorntail odstraní části Java Enterprise Edition, které nebudou použity, a vytvoří soubor JAR, který je malý a připravený k nasazení pomocí jediného příkazu - úhledná funkce, která umožňuje projektu Thorntail nazvat Uber -SKLENICE. Je to další přístup k pokračování v tradici Java Enterprise Edition, aniž byste si museli ponechat veškerá velká zavazadla.

Helidone

Helidon je od vydání tiskových zpráv a prvního potvrzení do úložiště GitHub venku jen několik měsíců, ale rámec již přitahuje pozornost, kterou zaručuje Oracle. I když je vesmír Java obrovský, spousta se stále točí kolem Oracle.

Helidonovi architekti sledovali mnoho stejných témat, která se opakují v dalších projektech zde. Vytrhněte jádro Java Enterprise Edition a zachovejte si lehké jádro založené na servletu, které si získalo důvěru světa. V případě Helidona vývojáři začali s Netty a přidali jen tolik kódu, aby bylo možné provést směrování a zpracování chyb. Aby to bylo zajímavé, přijali pro kód dva základní modely, takzvané verze SE a MP.

Helidon SE bude programátorům Node.js vypadat velmi dobře s dlouhými řetězci volání funkcí spojenými tečkami. Helidon MP bude vypadat více známý programátorům Java, kteří používají JAX-RS. Existují také některé užitečné a dobře oceňované nástroje pro kontrolu stavu serverů nebo sledování toku dat prostřednictvím doménové struktury mikroslužeb. To jsou přesvědčivé důvody k prozkoumání potenciálu, a to i bez podpory společnosti Oracle.

Kriket

Ještě dalším rámcem pro rychlý vývoj API je Cricket. Kriket je malý navzdory tomu, že obsahuje několik doplňků, jako je úložiště dat klíč-hodnota, které vám ušetří připojení k databázi a plánovač pro ovládání opakovaného zpracování na pozadí. Neexistují žádné další závislosti, které přidávají komplikace nebo uzamčení, takže je docela snadné přidat svůj kód do Cricketu a spustit nezávislou mikroslužbu.

Trikot

Jedním ze standardních přístupů k vývoji webové služby je Java API pro RESTful Web Services (aka JAX-RS), obecná specifikace, která byla implementována v rámci Jersey. Přístup silně závisí na použití anotací k určení mapování cesty a detailů návratu. Všechno ostatní z parsování parametrů a balení JSON zpracovává Jersey.

Hlavní výhodou Jersey je, že implementuje standard JAX-RS, což je funkce, která je natolik žádoucí, že někteří vývojáři kombinují Jersey s Spring Boot, aby si je mohli užít společně.

Hrát si

Jedním z nejlepších způsobů, jak vyzkoušet vícejazyčnou sílu JVM, je rámec Play, hromada kódu Scala, který se propojuje s Javou nebo jiným jazykem JVM. Základ je velmi moderní a má asynchronní model bez státní příslušnosti, který server nepřetíží nekonečnými vlákny, která se snaží sledovat uživatele a jejich data relace. Existuje také řada dalších funkcí, které lze použít k upřesnění webových stránek, jako je OpenID, ověřování a podpora nahrávání souborů.

Play codebase se vyvíjí již více než deset let, takže zde najdete také ozvěny dávno zapomenutých časů, jako je podpora XML. Hra je dospělá i pružná, což je kombinace, která může být ve volné přírodě vzácná.

Naparování

Vytváření API se může zdát stejně jednoduché jako psaní nějakého kódu, který naslouchá na portu a přináší odpovědi, ale vývojáři Swaggeru se začínají lišit. Vytvořili celý specifikační jazyk API s názvem OpenAPI, pomocí kterého můžete vysvětlit, co API bude dělat. To se může zdát jako další krok, ale tým Swagger také poskytl kód, který tuto specifikaci promění v automatizované testy, dokumentaci a další.

Jednoduchý, téměř sparťanský popis API v konfiguračním souboru Swagger se převede do kódu Java pro implementaci rozhraní, dokumentaci jeho chování a poskytnutí sady nástrojů pro testování kódu zabudovaného pod ním. K dispozici je dokonce i mechanismus pro správu API, takže můžete pracovat s neumytými masami, které brzy narazí na dveře vašeho API a očekávají odpovědi.

Swagger je ekosystém pro API a neomezuje se pouze na Javu. Pokud se váš tým přesune na Node.js nebo na některý z několika desítek dalších jazyků, čeká modul Swagger Codegen na převedení vašich specifikací OpenAPI na implementaci v tomto jazyce.

Restlet

Jedním z větších rozdílů mezi různými rámci je počet připojení k jiným službám a knihovnám. Projekt Restlet nabízí jednu z větších kolekcí funkcí a připojení. Je již integrován do knihoven, jako je JavaMail, v případě, že vaše mikroslužba bude muset na některý poštovní server mluvit POP, IMAP nebo SMTP, a Lucene / Solr, v případě, že chcete vytvořit prohledávatelné indexy velkých bloků textu a metadat zabalených kolem to.

Možnosti v Restletu pokračují, protože tento zásobník obecně podporuje několik různých možností pro každou část. Nemusíte například používat JSON, protože kód bude zpracovávat XML, CSV, YAML a několik dalších formátů souborů. Získáte několik různých možností pro šablony také pro strukturování vaší odpovědi. Jednou z elegantnějších doplňkových funkcí je klient Restlet, který vám umožní otestovat vaše API z prohlížeče Chrome.

Squash

Ladění mikroslužeb je často skutečnou výzvou, protože součásti jsou tak volně spojené a je obtížné sledovat tok dat všemi vrstvami systému. Squash umožňuje nastavit zarážky ve vašem kódu spuštěném v klastru Kubernetes a poté přijímat všechna data zpět do vašeho IDE, jako by to byl kód běžící místně. Squash se také integruje s běhovými časy Node.js a Python v případě, že vaše kolekce mikroslužeb není pouze pro Javu.

Telepresence

Další možností pro ladění je použití Telepresence k vytvoření místního proxy pro mikroslužbu ve vzdáleném klastru Kubernetes. Vaše volání pro tuto službu budou přesměrována na místní verzi, kde můžete nastavit zarážky nebo dělat cokoli jiného, ​​co si dokážete představit na místním počítači.

Zipkin

Zipkin je mechanismus pro protokolování událostí na různých mikroslužbách a následnou korelaci událostí tak, aby bylo možné izolovat a studovat problémy, jak se vlní ve sbírce strojů. K dispozici je implementace Zipkin pro Javu a nejméně šest dalších jazyků, takže je možné řešit vícejazyčné systémy. Některé z nejsofistikovanějších frameworků jako Spring již mají Zipkin v nějaké formě integrované.

$config[zx-auto] not found$config[zx-overlay] not found