Programovanie

13 rámcov Java pre skalopevné mikroslužby

Pre jazyk Java, ktorý sa začal používať ako lingua franca pre krabicu na vrchu televízora, to bola dlhá cesta v časoch, keď televízory neprišli so zabudovaným Roku alebo Chromecastom. Potom sa Java chystala vlastniť World Wide Web animáciou prehliadača skôr, ako prišiel JavaScript, ktorý ho znemožnil.

Java nakoniec našla miesto na serverových farmách, kde bolo kedysi dosť rôznych čipových architektúr a operačných systémov, aby bol sľub „write once run anywhere anywhere“ pútavý. A na týchto serverových farmách Java žila, obľúbená v podnikových IT obchodoch závislých na spoľahlivosti a vývojároch so záľubou v silnom písaní.

Medzitým JavaScript všeobecne a najmä Node.js spochybnili Javu na serveri, pričom svojou vysokou priepustnosťou a rýchlosťou bez vlákien prevzali obrovský kus prenosu na webe. Node zaujal predstavivosť najnovších programátorov na strane servera tým, že ponúka nielen rýchlosť a efektivitu zdrojov, ale aj jednoduchosť kódu, ktorý beží na klientovi aj na serveri.

Napriek nárastu konkurencie Java naďalej nielen prežíva, ale aj vyniká. Mnoho tímov, ktorých úlohou je vývoj architektúr mikroslužieb, naďalej používa jazyk Java. Hlavným dôvodom musí byť to, že táto technológia je rokmi testovaná na fronte a analyzuje požiadavky HTTP. Spoločnosť Sun vytvorila solídny virtuálny stroj a spoločnosť Oracle ho naďalej vychováva a podporuje.

Ďalším dôvodom musí byť pokračujúci vývoj jazyka. Java 8 ponúka spoľahlivú podporu pre funkčné jazyky ako Scala a Kotlin. JVM je v súčasnosti základom mnohých najlepších experimentov vo vývoji počítačového jazyka. Desiatky nových jazykov sa dajú skompilovať do bajtového kódu Java a navzájom sa prepojiť, aby zabezpečili spoluprácu komplexných projektov. Mnoho zo stohov bežiacich hladko na JVM môže byť vytvorených kombináciou jazyka Java a mnohých ďalších jazykov.

Najväčším dôvodom však musí byť úplná zotrvačnosť. Ako píšem, v kockách je uvedených 371 pracovných miest pre programátorov COBOL. Existuje veľa, oveľa viac úloh so slovom Java. Je prekvapením, že sa inteligentné tímy pozerajú na svoje obrovské hromady starnúceho kódu Java a myslia si, že najjednoduchším riešením je iba pridať bočné dvere, ktoré dáta vyplivnú ako dátové štruktúry JSON? Voilà. Starý kód stále beží, ale pri týchto bočných dverách funguje ako moderná mikroslužba.

Všetky tieto možnosti a ďalšie zaisťujú, že Java bude naďalej hrať silnú a zásadnú úlohu v revolúcii v mikroslužbách. A nie je prekvapením, že komunita otvorených zdrojov Java nasledovala a vytvorila mnoho nových možností pre programátorov Java, ktorí potrebujú naučiť svoj kód Java rozprávať ako mikroslužba.

Tu je zoznam 13 možností otvoreného zdroja, ktoré vývojári Java používajú na uskutočnenie riešení, ktoré tvoria základ architektúr mikroslužieb všade.

Jarná topánka

Svet Javy stavia jarné aplikácie už dlho. Spring Boot je konkrétna verzia Spring, ktorá výrazne uľahčuje proces tým, že za vás vybaví veľa konfiguračných detailov. Spring Boot bol vytvorený na automatizáciu začatia jarných projektov akéhokoľvek druhu, nielen mikroslužieb. Aby ste to ešte zjednodušili, po dokončení aplikácie Spring Boot zmieša webový server a vypľuje jeden súbor JAR, ktorý je okrem JVM v podstate všetko, čo potrebujete. Predstavte si to ako originálny kontajner Docker.

Celá táto chytrosť je ocenená mnohými ľuďmi, ktorí majú za úlohu budovať mikroslužby, pretože všetka konfigurácia bude nepríjemná, keď to musíte robiť znova a znova pre každú z tuctov mikroslužieb. Ak to Spring Boot dokáže automatizovať, je chrlenie niekoľkých desiatok mikroslužieb oveľa jednoduchšie.

Mikroslužby vyvinuté s programom Spring sa riadia rovnakou filozofiou MVC ako makro webové aplikácie, ktoré už roky budujeme. Rámec využíva všetky hlboké spojenia vybudované v priebehu rokov vývoja Java vrátane integrácie so všetkými významnými a vedľajšími úložiskami údajov, servermi LDAP a nástrojmi na zasielanie správ, ako je Apache Kafka. Existujú tiež desiatky malých a nie tak malých funkcií na udržiavanie bežiacej kolekcie serverov, napríklad Spring Vault, nástroj na udržiavanie tajomstiev, hesiel a prihlasovacích údajov, ktoré servery vo výrobe potrebujú. Všetky tieto výhody ukazujú, prečo sa programátori jazyka Java pridávajú k vlaku už mnoho rokov.

Eclipse MicroProfile

V roku 2016 sa niektorí fanúšikovia komunity Java Enterprise porozhliadli a rozhodli sa vyčistiť všetky odpadky z edície Java Enterprise Edition, aby ľudia mohli vytvárať klasické mikroslužby s klasickými časťami. Vyhodili prekvapivý počet knižníc, ale ponechali si kód na spracovanie požiadaviek REST, analýzu JSON a správu vkladania závislostí. To, čo nakoniec nazvali Eclipse MicroProfile, bolo rýchle a jednoduché.

Odvtedy komunita MicroProfile uzavrela dohodu o vydávaní nových verzií tak často ako raz za štvrťrok, pričom pridala nový kód na zabezpečenie plynulého a bezpečného chodu mikroslužieb. Proces vývoja a štruktúra kódu budú veľmi dobre známe každému, kto žil vo svete Java EE, ale nekonečné problémy s konfiguráciou boli vyleštené. Je to dôkaz, že starých psov môžete naučiť nové triky.

Dropwizard

Keď sa Dropwizard objavil v roku 2011, otvoril oči vývojárom Java Enterprise v tom, ako málo kódu je skutočne potrebných. Rámec Dropwizard priniesol veľmi jednoduchý model vývoja s mnohými dôležitými rozhodnutiami, ktoré boli urobené za vás, a naďalej kráčal touto cestou. Pridáte určitú obchodnú logiku a potom sa vám podľa dohovoru nakonfiguruje skoro všetko ostatné. Výsledkom sú štíhle súbory JAR, ktoré si používatelia pochvaľujú za rýchle spustenie.

Najväčším obmedzením môže byť nedostatok injekcií do závislostí. Ak chcete pomocou vkladania závislostí udržiavať svoj kód čistý a voľne spojený, budete si musieť knižnice pridať sami. Na rozdiel od jarného sveta to Dropwizard nemá ako urobiť. Väčšina ostatných luxusných predmetov je však teraz podporovaná vrátane protokolovania, zdravotných kontrol a kódu poskytujúceho odolnosť. Nebudete musieť robiť príliš veľa obetí.

WildFly Thorntail

Ľudia v Red Hat si vytvorili svoju vlastnú verziu MicroProfile doplnenú o úhľadný konfiguračný nástroj. Rámec sa pôvodne volal WildFly Swarm, ale potom sa premenoval na Thorntail. Webová stránka Thorntail vám pomôže vytvoriť si vlastný zostavovací súbor Maven iba zadaním požadovaných funkcií. Maven sa potom stará o zostavenie všetkého.

Thorntail tiež skenovaním kódu zistí hlavné komponenty, ktoré budete potrebovať, ale môžete to prepísať súborom BOM (kusovník). Keď to všetko beží, Thorntail odstráni časti Java Enterprise Edition, ktoré sa nebudú používať, a vytvorí súbor JAR, ktorý je malý a pripravený na nasadenie pomocou jedného príkazu - úhľadná funkcia, ktorá umožňuje projektu Thorntail nazvať ho Uber -JAR. Je to ďalší prístup k pokračovaniu v tradícii Java Enterprise Edition bez toho, aby ste si nechali všetku veľkú batožinu.

Helidon

Helidon je vonku iba pár mesiacov od tlačových správ a prvého záväzku k úložisku GitHub, ale rámec už priťahuje pozornosť, ktorú zaručuje Oracle. Aj keď je vesmír Java obrovský, stále sa ho veľa točí okolo Oracle.

Helidonovi architekti sledovali mnoho rovnakých tém, ktoré sa opakujú v ďalších projektoch tu. Vytrhnite jadro Java Enterprise Edition a uchujte si ľahké jadro založené na servlete, ktoré si získalo dôveru sveta. V prípade Helidona vývojári začali s programom Netty a pridali len toľko kódu, aby bolo možné vykonať nejaké smerovanie a spracovanie chýb. Aby to bolo zaujímavé, prijali dva základné modely kódu, takzvané verzie SE a MP.

Helidon SE bude programátorom Node.js pripadať veľmi dobre známy s dlhými reťazcami volaní funkcií spojených bodkami. Helidon MP bude vyzerať viac oboznámený s programátormi Java, ktorí používajú JAX-RS. Existuje tiež niekoľko užitočných a dobre oceňovaných nástrojov na kontrolu stavu serverov alebo na sledovanie toku údajov cez les mikroslužieb. To sú presvedčivé dôvody na preskúmanie potenciálu, a to aj bez podpory spoločnosti Oracle.

Kriket

Ďalším rámcom pre rýchly vývoj API je kriket. Kriket je malý napriek tomu, že obsahuje niekoľko doplnkov, ako napríklad úložisko údajov s hodnotou kľúča, ktoré vám ušetrí pripojenie k databáze a plánovač na kontrolu opakovaného spracovania na pozadí. Neexistujú žiadne ďalšie závislosti, ktoré pridávajú komplikácie alebo blokovanie, takže je celkom ľahké pridať svoj kód do kriketu a spustiť nezávislú mikroslužbu.

Jersey

Jedným zo štandardných prístupov k vývoju webovej služby je Java API pre RESTful Web Services (aka JAX-RS), všeobecná špecifikácia, ktorá bola implementovaná v rámci Jersey. Prístup veľmi závisí od použitia anotácií na určenie mapovania cesty a podrobností návratu. Všetko ostatné od syntaktickej analýzy parametrov a balenia JSON rieši Jersey.

Hlavnou výhodou Jersey je to, že implementuje štandard JAX-RS, teda funkciu, ktorá je natoľko žiaduca, že niektorí vývojári kombinujú Jersey s Spring Boot, aby si ich mohli užiť obaja.

hrať

Jedným z najlepších spôsobov, ako vyskúšať medzijazykovú silu JVM, je rámec Play, hromada kódu Scala, ktorý je prepojený s Javou alebo iným jazykom JVM. Základ je veľmi moderný a má asynchrónny model bez štátnej príslušnosti, ktorý server nepreťažuje nekonečnými vláknami, ktoré sa snažia sledovať používateľov a údaje o ich reláciách. Existuje aj niekoľko ďalších funkcií, pomocou ktorých je možné rozšíriť webovú stránku, ako napríklad OpenID, overovanie a podpora nahrávania súborov.

Play codebase sa vyvíja už viac ako desať rokov, takže tu nájdete aj ozveny dávno zabudnutých čias, ako je podpora XML. Hra je zrelá a pružná, kombinácia, ktorá môže byť vo voľnej prírode vzácna.

Swagger

Vytvorenie API sa môže javiť tak jednoduché ako napísanie kódu, ktorý počúva na porte a poskytuje odpovede, vývojári Swaggeru sa však musia líšiť. Vytvorili celý špecifikačný jazyk API s názvom OpenAPI, ktorý môžete použiť na vysvetlenie toho, čo API bude robiť. Môže sa to zdať ako ďalší krok, ale tím Swagger poskytol aj kód, ktorý z tejto špecifikácie urobí automatizované testy, dokumentáciu a ďalšie.

Jednoduchý, takmer sparťanský popis API v konfiguračnom súbore Swagger sa spriada do kódu Java na implementáciu rozhrania, dokumentáciu jeho správania a poskytnutie sady nástrojov na testovanie kódu zabudovaného pod ním. Existuje dokonca aj mechanizmus pre správu API, takže môžete pracovať s neumytými masami, ktoré čoskoro narazia na dvere vášho API a očakávajú odpovede.

Swagger je ekosystém pre API a neobmedzuje sa iba na Javu. Ak váš tím prejde na Node.js alebo na niektorý z niekoľkých desiatok ďalších jazykov, čaká tu modul Swagger Codegen na prevedenie vašich špecifikácií OpenAPI na implementáciu v tomto jazyku.

Restlet

Jedným z väčších rozdielov medzi rôznymi rámcami je počet pripojení k iným službám a knižniciam. Projekt Restlet ponúka jednu z väčších zbierok funkcií a pripojení. Je to už integrované s knižnicami ako JavaMail, pre prípad, že vaša mikroslužba bude musieť hovoriť POP, IMAP alebo SMTP na nejaký poštový server, a Lucene / Solr, pre prípad, že chcete vytvoriť prehľadávateľné indexy veľkých častí textu a okolo zabalených metadát. to.

Možnosti v Restlete pokračujú, pretože tento zásobník všeobecne podporuje niekoľko rôznych možností pre každú časť. Nemusíte napríklad používať JSON, pretože kód zvládne formáty XML, CSV, YAML a niekoľko ďalších formátov súborov. Získate niekoľko rôznych možností pre šablóny, pomocou ktorých môžete štruktúrovať aj svoju odpoveď. Jednou z úhľadnejších funkcií je klient Restlet, ktorý vám umožňuje testovať vaše API z prehliadača Chrome.

Squash

Ladenie mikroslužieb je často skutočnou výzvou, pretože časti sú tak voľne spojené a je ťažké sledovať tok údajov cez všetky vrstvy systému. Squash vám umožňuje nastaviť hraničné hodnoty vo vašom kóde bežiacom na klastri Kubernetes a potom prijímať všetky dáta späť do vášho IDE, akoby to bol kód bežiaci lokálne. Squash sa tiež integruje s runtime Node.js a Python v prípade, že vaša zbierka mikroslužieb nie je iba v Jave.

Teleprezencia

Ďalšou možnosťou ladenia je použitie Telepresence na vytvorenie lokálneho proxy servera pre mikroslužbu vo vzdialenom klastri Kubernetes. Vaše hovory na túto službu budú presmerované do miestnej verzie, kde môžete na svojom lokálnom počítači nastaviť hraničné hodnoty alebo urobiť čokoľvek iné, čo si dokážete predstaviť.

Zipkin

Zipkin je mechanizmus na zaznamenávanie udalostí na rôzne mikroslužby a následnú korekciu udalostí, aby bolo možné izolovať a študovať problémy, ktoré sa hromadia v strojoch. Existuje implementácia Zipkin pre Javu a najmenej šesť ďalších jazykov, aby bolo možné zvládnuť viacjazyčné systémy. Niektoré z najsofistikovanejších rámcov ako Spring už majú Zipkin v nejakej podobe integrované.

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