Skala med säkerhet, övervakning och automatisering från slutpunkt till slutpunkt
När vi utformar program måste vi bestämma hur vi ska anpassa oss till ändringar i arbetsbelastningen, återställa från oväntade fel, minimera säkerhetsrisker och så vidare. Även om man kan börja med en utvärderings- och felmetod, tar det tid från andra organisationsmål och kan påverka vårt rykte negativt. Azure tillhandahåller arkitekturvägledning som behövs för att få saker rätt från början. Du har också allt du behöver för att skapa ett skalbart program – från toppmodern säkerhet och automatisk skalning till stödtjänster för data, meddelanden, cachelagring, prestandaövervakning och automatisering. Många av dessa stödtjänster baseras även på populär programvara med öppen källkod – till exempel PostgreSQL, Redis, JMS och Kafka – så att du inte låses in i egna lösningar.
Nu ska vi ta en titt på några viktiga Azure-tjänster och funktioner – och hur du kan använda dem för att skapa skalbara Java-program.
Utöka funktionerna för Java-program – databaser och meddelanden
Förutom att tillhandahålla flera alternativ för att köra Din Java-kod erbjuder Azure ett brett utbud av fullständigt hanterade tjänster som stöder dina databasbehov – inklusive Azure Database for PostgreSQL, Azure Database for MySQL, MongoDB Atlas, Azure Cosmos DB, Azure SQL Database och Azure SQL Managed Instance. Detsamma gäller för meddelanden, med alternativ som Azure Service Bus, Azure Event Hubs och Apache Kafka för Confluent Cloud.
Azure Service Bus Premium-nivån stöder JMS, programmeringsmodellen Java Messaging Service. Oavsett om dina program körs på virtuella datorer, i Kubernetes eller på fullständigt hanterade PaaS-tjänster kan du snabbt etablera och använda dessa fullständigt hanterade data- och meddelandetjänster med hjälp av klienter med öppen källkod, Azure Java SDK:er, Spring-startservrar och programserverintegreringar. De ger alla de efterlevnads-, tillgänglighets- och tillförlitlighetsgarantier som du kan förvänta dig av Microsoft och Azure. Många Java- och Spring-utvecklare vill använda idiomatiska bibliotek för att förenkla anslutningar till sina föredragna molntjänster. Microsoft har en omfattande lista över bibliotek, drivrutiner och moduler som gör att du enkelt kan interagera med Azure-tjänster i data-, meddelande-, cache-, lagrings-, händelse-, katalog- och hemlighetshantering. Mer information finns i utvecklarguiden för Spring Cloud Azure.
Noll förtroende – säkert nätverk
Du kan skydda dina Java-program genom att distribuera dem i ett virtuellt Azure-nätverk – det grundläggande byggblocket för dina egna privata nätverk i Azure. Med virtuella nätverk kan många typer av Azure-resurser kommunicera säkert med varandra, med Internet och med dina lokala nätverk och system. Du kan använda ett virtuellt nätverk för att isolera dina program och stödja serverdelstjänster från Internet och placera dem i dina privata nätverk. Du kan ta full kontroll över inkommande och utgående för dina program och serverdelssystem.
Noll förtroende – Säker kommunikation från slutpunkt till slutpunkt
Det kan vara svårt att implementera säker kommunikation som en del av en lösningsarkitektur. Många företag roterar sina certifikat manuellt eller skapar egna lösningar för att automatisera etablering och konfiguration. Även då finns det fortfarande dataexfiltreringsrisker, till exempel obehörig kopiering eller dataöverföring.
Med Azure kan du skydda kommunikationen från slutpunkt till slutpunkt eller avsluta säkerhet på transportnivå på alla kommunikationspunkter. Du kan också automatisera etableringen och konfigurationen för alla Azure-resurser som behövs för att skydda kommunikationen.
Baserat på principen "lita aldrig på, verifiera alltid och utan autentiseringsuppgifter" hjälper Nolltillit till att skydda all kommunikation genom att eliminera okända och ohanterade certifikat och genom att endast lita på certifikat som delas genom att verifiera identiteten innan åtkomsten till dessa certifikat beviljas. Du kan använda alla typer av TLS/SSL-certifikat, inklusive certifikat som utfärdats av en certifikatutfärdare, utökade valideringscertifikat, jokerteckencertifikat med stöd för valfritt antal underdomäner eller självsignerade certifikat för utvecklings- och testmiljöer.
Java- eller Spring Boot-appar kan på ett säkert sätt läsa in certifikat från Azure Key Vault (beskrivs härnäst). Med Azure Key Vault styr du lagring och distribution av certifikat för att minska oavsiktligt läckage. Program och tjänster kan på ett säkert sätt komma åt certifikat med hjälp av hanterade identiteter, rollbaserad åtkomstkontroll och principen om lägsta behörighet. Den här säkra inläsningen drivs med hjälp av Azure Key Vault JCA-providern (Java Cryptography Architecture).
Noll förtroende – Hantera hemligheter
Många Java-program ansluter till stödtjänster med hjälp av URL:er och autentiseringsuppgifter – information som, om de exponeras, kan användas för att få obehörig åtkomst till känsliga data. Att bädda in sådan information i själva appen utgör en enorm säkerhetsrisk av många skäl, inklusive identifiering via en kodlagringsplats. Många utvecklare externaliserar sådana autentiseringsuppgifter med hjälp av miljövariabler, så att flera program kan läsa in dem, men detta ändrar bara risken från själva koden till körningsmiljön.
Azure Key Vault ger ett bättre, säkrare och säkrare sätt att skydda hemligheter. Det ger dig fullständig kontroll över lagring och distribution av programhemligheter med hjälp av rollbaserad åtkomstkontroll (RBAC) och principen om minsta behörighet för att begränsa åtkomsten. Du behåller kontrollen över dina programhemligheter – bevilja bara behörighet för dina program att använda dem efter behov. När programmet startas autentiseras programmet med Microsoft Entra-ID och Azure Key Vault med hjälp av Azure RBAC innan det beviljar åtkomst till hemligheter. Azure Key Vault innehåller fullständiga granskningsfunktioner och har två tjänstnivåer: Standard, som krypteras med en programvarunyckel och en Premium-nivå, som innehåller HSM-skyddade nycklar (Hardware Security Module).
Slutanvändarautentisering och auktorisering
De flesta Java-företagsprogram kräver användarautentisering och auktorisering, som du kan implementera med hjälp av Microsoft Entra-ID – en komplett lösning för identitets- och åtkomsthantering med integrerad säkerhet. Slutanvändarkonton kan vara organisationsidentiteter eller sociala identiteter från Facebook, Twitter eller Gmail med hjälp av Microsoft Entra-ID och Azure Active Directory B2C. Du kan implementera Microsoft Entra ID-baserade lösningar med hjälp av Microsoft Authentication Library for Java eller Spring Boot Starter för Microsoft Entra. Du kan också använda valfri identitetsprovider, till exempel ForgeRock, Auth0, Ping eller Okta.
Övervaka från slutpunkt till slutpunkt
Med Azure kan du övervaka dina Java-program från slutpunkt till slutpunkt med alla verktyg och plattformar. Alternativt kan du implementera fullständigt hanterad, intern övervakning – inklusive övervakning av programprestanda (APM) – med hjälp av Application Insights, en funktion i Azure Monitor. Det ger starkt stöd för Java, Spring och ramverk som Micrometer och Spring Boot, så att du snabbt kan identifiera och felsöka problem. Funktionerna omfattar direktuppspelning av mått, spårning av begäranden och svarstid, händelsespårning och externa beroendefrekvenser – allt du behöver för att övervaka tillgänglighet, prestanda, tillförlitlighet och användning av dina Java-program som körs i Azure eller lokalt.
Du kan övervaka från slutpunkt till slutpunkt genom att aggregera loggar och mått i Log Analytics, ett verktyg i Azure Portal, som kan användas för att redigera och köra frågor på loggar och måttdata i Azure Monitor. Du kan skriva en fråga som returnerar en uppsättning poster och sedan använda Log Analytics för att sortera, filtrera och analysera dem. Eller så kan du skriva en mer avancerad fråga för att utföra statistisk analys och visualisera resultaten i ett diagram, vilket kan behövas för att identifiera en viss trend. Oavsett om du arbetar med resultatet av dina frågor interaktivt eller använder dem med andra Azure Monitor-funktioner, till exempel loggfrågeaviseringar eller arbetsböcker, är Log Analytics ett bra verktyg att använda för att skriva och testa dina frågor.
Med det sagt inser vi att kunder som tar sina Java-program till Azure kanske vill fortsätta använda samma APM-verktyg som de använder för att övervaka sina lokala program. För att stödja den här användningen samarbetade vi med New Relic, AppDynamics, Dynatrace och Elastic för att integrera deras övervakningslösningar med Azure App Service och Azure Container Apps. Övervakningsagenter körs sida vid sida med din kod, och vi installerar och håller agenterna uppdaterade åt dig. När du distribuerar till Azure Container Apps, Azure Kubernetes Service eller Virtual Machines kan du köra någon av dessa agenter (inklusive New Relic, AppDynamics, Dynatrace, Elastic och Datadog) tillsammans med dina program, men du måste installera och hantera dem på egen hand. På samma sätt kan du övervaka från slutpunkt till slutpunkt genom att aggregera loggar och mått i Elastic och Splunk.
Vi inser också att många kunder vill fortsätta använda Grafana för att fråga, visualisera, avisera om och förstå deras mått. Därför samarbetade vi med Grafana Labs för att leverera Azure Managed Grafana, en fullständigt hanterad tjänst som låter kunder köra Grafana internt i Azure. Tjänsten gör det enkelt att distribuera säkra och skalbara Grafana-instanser och ansluta dem till datakällor med öppen källkod, moln och tredje part för visualisering och analys. Tjänsten är optimerad för Azure-inbyggda datakällor som Azure Monitor och Azure Data Explorer, och den innehåller integrering av programprestandaövervakning (APM) med Azure-beräkningstjänster som Azure App Service, Azure Container Apps, Azure Kubernetes Service, Splunk, Datadog och Azure Virtual Machines.
Påskynda Java-program med cachelagring
När arbetsbelastningarna för dina Java-program växer kan du öka prestandan genom att använda Azure Cache for Redis för att implementera ett cachelagringslager i minnet för frågeresultat, sessionstillstånd och statiskt innehåll. Det är ett bra sätt att förbättra programmets dataflöde och minska svarstiden utan att behöva göra om den underliggande databasen. Azure Cache for Redis Enterprise-nivåerna, som utvecklats i samarbete med Redis och hanteras fullständigt av Microsoft, är det mest tillgängliga och skalbara distributionsalternativet för att köra Redis på Azure – inklusive funktioner som aktiv geo-replikering, externaliserad sessionshantering och snabb sökning och indexering.
Automatisk skalning
Alla Azure-"beräkningstjänster" för körning av Java-program stöder automatisk skalning (automatisk skalning), vilket kan hjälpa dig att maximera kostnadseffektiviteten och anpassa dig till föränderliga arbetsbelastningar utan att betala för mer kapacitet än du behöver. När du är aktiverad kan du vara säker på att automatisk skalning tar hand om din underliggande infrastruktur och dina programarbetsbelastningar.
Du kan automatiskt skala in eller ut baserat på belastning eller schema. I belastningsbaserat (eller måttbaserat) läge skalas dina program horisontellt ut till de resurser som behövs för att hantera belastningen, upp till de gränser som du anger. På samma sätt skalas resurserna horisontellt in när belastningen minskar och hamnar aldrig under de miniminivåer som du anger.
I schemabaserat läge skalas dina program in och skalas ut baserat på ett definierat schema och gränser. Schemabaserat läge är användbart för arbetsbelastningar som följer ett förutsägbart mönster och kan användas för att upprätta en baslinje för mer belastningsbaserad skalning.
Automatisering från idé till produktion
När du flyttar dina program till molnet vill du automatisera allt – efter behov för Java-utveckling i företagsskala. Du måste överväga automatisk skalning för att hantera programarbetsbelastningar, enligt beskrivningen tidigare. Men du måste också skala och automatisera din molnmiljö som helhet – helst från idé till produktion – inklusive hur du snabbt kan etablera nya miljöer för testning, QA, produktion, blå/gröna distributioner, geografisk expansion och så vidare.
Med Azure kan du automatisera från idé till produktion med hjälp av ett brett utbud av verktyg och plattformar. På hög nivå kan sådana automatiseringspipelines delas in i tre kategorier:
Etableringspipelines – Du kan etablera Azure-resurser med Hjälp av Terraform, ARM-mallar (Azure Resource Manager), Bicep-mallar eller Azure CLI efter behov för att skapa repeterbara skript för konsekvent snurrande och snurrande miljöer.
Skapa pipelines – baserat på verktyg som Maven eller Gradle, enligt beskrivningen tidigare i den här dokumentationen.
Distributionspipelines – Du kan använda GitHub Actions, Azure Pipelines, Jenkins Pipelines, GitLab Pipelines eller Azure CLI för att automatisera koddistributioner, inklusive blå/gröna distributioner som håller kritiska system i produktion när du distribuerar koduppdateringar.
Fortsätt att använda befintliga metoder och system
När du migrerar eller skapar och sedan skalar dina Java-program i Azure kan du använda dina befintliga investeringar i nätverk, övervakning, automatisering, identitetsprovidrar, lokala system, utveckling och byggverktyg och appbibliotek. Följande tabell innehåller några exempel:
Kategori | Java-ekosystemprodukter och -tjänster |
---|---|
Nätverk | F5, Palo Alto, Cloudflare, Checkpoint, Infoblox |
Övervakning | New Relic, Dynatrace, AppDynamics, Elastic, Splunk |
Automation | GitHub Actions, Azure Pipelines, Jenkins, GitLab |
Identitetsprovidrar | Microsoft Entra ID, ForgeRock, Auth0, Ping, Okta |
Lokalt system | Databaser (till exempel Oracle DB eller IBM DB2), meddelanden (till exempel IBM MQ eller TIBCO EMS), eventing (till exempel Kafka), kataloger (till exempel Microsoft Entra ID, OpenLDAP eller IBM ID) |
Utvecklingsverktyg | IntelliJ, Visual Studio Code, Eclipse, Spring Tool Suite, Maven, Gradle |
Referensarkitekturer
Azure Architecture Center ger vägledning för att skapa lösningar på Azure med hjälp av etablerade mönster och metoder, inklusive hur du använder dessa funktioner. Dessa referensarkitekturer baseras på vad vi har lärt oss från kundengagemang, med hänsyn till kostnadsoptimering, driftseffektivitet, prestandaeffektivitet, tillförlitlighet, skalbarhet, säkerhet, övervakning, röktestning med mera. De hanterar även komponenter för lösningsdesign, till exempel Azure-landningszoner – miljöer som är värdar för dina arbetsbelastningar som är företablerade via infrastruktur som kod, efter behov för att aktivera Java-programmigreringar och grönfältsutveckling i företagsskala.
Här är till exempel en accelerator för landningszoner för Azure Container Apps som visar hur du implementerar en hub-and-spoke-design där Azure Container Apps distribueras i en enda eker som är beroende av delade tjänster som finns i hubben. Det här projektet är byggt med komponenter för att uppnå grundsatserna i Microsoft Azure Well-Architected Framework. Information om hur du utforskar en implementering av den här arkitekturen finns i lagringsplatsen för Azure Container Apps Landing Zone Accelerator på GitHub. Du kan använda samma metod för alla Java-program som distribueras till valfri Azure-beräkningsmål , till exempel Azure App Service eller Azure Kubernetes Service. Om du tittar på att migrera befintliga Java-program till Azure har vi dessutom en omfattande uppsättning migreringsguider och rekommenderade strategier.