Ein E-Commerce-Unternehmen in der Reisebranche modernisiert seinen bestehenden browserbasierten Softwarestapel.An e-commerce company in the travel industry is modernizing their legacy browser-based software stack. Der vorhandene Stapel ist größtenteils monolithisch, das Unternehmen hat jedoch einige SOAP-basierte HTTP-Dienste, die aus einem aktuellen Projekt stammen.While their existing stack is mostly monolithic, some SOAP-based HTTP services exist from a recent project. Das Unternehmen erwägt, zusätzliche Einnahmequellen zu erschließen, um Teile des von ihm entwickelten internen geistigen Eigentums gewinnbringend zu nutzen.They are considering the creation of additional revenue streams to monetize some of the internal intellectual property that's been developed.
Zu den Zielen für das Projekt zählen der Abbau technischer Schulden, die Verbesserung der laufenden Wartung und die Beschleunigung der Featureentwicklung mit weniger Regressionsfehlern.Goals for the project include addressing technical debt, improving ongoing maintenance, and accelerating feature development with fewer regression bugs. Bei dem Projekt wird zur Vermeidung von Risiken ein iterativer Prozess eingesetzt, und einige Schritte werden parallel ausgeführt:The project will use an iterative process to avoid risk, with some steps performed in parallel:
- Das Entwicklungsteam wird das Anwendungs-Back-End modernisieren, das aus auf VMs gehosteten relationalen Datenbanken besteht.The development team will modernize the application back end, which is composed of relational databases hosted on VMs.
- Das interne Entwicklungsteam wird neue Geschäftsfunktionen entwickeln, die über neue HTTP-APIs verfügbar gemacht werden.The in-house development team will write new business functionality that will be exposed over new HTTP APIs.
- Ein externes Entwicklungsteam wird eine neue browserbasierte Benutzeroberfläche erstellen, die in Azure gehostet wird.A contract development team will build a new browser-based UI, which will be hosted in Azure.
Neue Anwendungsfeatures werden in mehreren Phasen bereitgestellt.New application features will be delivered in stages. Diese Features werden die vorhandene (lokal gehostete) browserbasierte Client/Server-Benutzeroberfläche, die gegenwärtig für das E-Commerce-Geschäft des Unternehmens genutzt wird, schrittweise ersetzen.These features will gradually replace the existing browser-based client-server UI functionality (hosted on-premises) that powers their e-commerce business today.
Das Managementteam möchte unnötige Modernisierungen vermeiden.The management team does not want to modernize unnecessarily. Außerdem möchte es die Kontrolle über den Umfang und die Kosten des Projekts behalten.They also want to maintain control of scope and costs. Aus diesem Grund hat sich das Unternehmen entschieden, die vorhandenen SOAP-HTTP-Dienste beizubehalten.To do this, they have decided to preserve their existing SOAP HTTP services. Zudem sollen Änderungen an der vorhandenen Benutzeroberfläche auf ein Minimum beschränkt werden.They also intend to minimize changes to the existing UI. Mit Azure API Management (APIM) können viele der Anforderungen und Auflagen des Projekts erfüllt werden.Azure API Management (APIM) can be used to address many of the project's requirements and constraints.
AufbauArchitecture
Die neue Benutzeroberfläche wird als PaaS-Anwendung (Platform-as-a-Service) in Azure gehostet und ist sowohl von vorhandenen als auch neuen HTTP-APIs abhängig.The new UI will be hosted as a platform as a service (PaaS) application on Azure, and will depend on both existing and new HTTP APIs. Diese APIs werden einen besseren Satz von Schnittstellen enthalten, die die Leistung verbessern, die Integration vereinfachen und zukünftige Erweiterbarkeit unterstützen.These APIs will ship with a better-designed set of interfaces enabling better performance, easier integration, and future extensibility.
Komponenten und SicherheitComponents and Security
- Die vorhandene lokale Webanwendung wird die vorhandenen lokalen Webdienste weiterhin direkt nutzen.The existing on-premises web application will continue to directly consume the existing on-premises web services.
- Aufrufe von der vorhandenen Web-App an die vorhandenen HTTP-Dienste bleiben unverändert.Calls from the existing web app to the existing HTTP services will remain unchanged. Diese Aufrufe erfolgen intern im Unternehmensnetzwerk.These calls are internal to the corporate network.
- Eingehende Aufrufe werden von Azure an die vorhandenen internen Dienste gesendet:Inbound calls are made from Azure to the existing internal services:
- Das Sicherheitsteam verwendet den sicheren Transport (HTTPS/SSL), um zuzulassen, dass Datenverkehr von der APIM-Instanz durch die Unternehmensfirewall zu den vorhandenen lokalen Diensten geleitet wird.The security team allows traffic from the APIM instance to pass through the corporate firewall to the existing on-premises services using secure transport (HTTPS/SSL).
- Das operative Team lässt eingehende Aufrufe der Dienste nur von der APIM-Instanz zu.The operations team will allow inbound calls to the services only from the APIM instance. Innerhalb der Unternehmensnetzwerkumgebung wird die IP-Adresse der APIM-Instanz der Zulassungsliste hinzugefügt, um diese Anforderung zu erfüllen.This requirement is met by adding the IP address of the APIM instance to the allow list within the corporate network perimeter.
- In der Anforderungspipeline der lokalen HTTP-Dienste wird ein neues Modul konfiguriert (um nur externe Verbindungen zu verarbeiten), das ein von APIM bereitgestelltes Zertifikat überprüft.A new module is configured into the on-premises HTTP services request pipeline (to act on only those connections originating externally), which will validate a certificate which APIM will provide.
- Für die neue API gilt Folgendes:The new API:
- Die neue API wird nur über die APIM-Instanz verfügbar gemacht, die die API-Fassade bereitstellt.Is surfaced only through the APIM instance, which will provide the API facade. Auf die neue API wird nicht direkt zugegriffen.The new API won't be accessed directly.
- Die neue API wird als eine Azure-PaaS-Web-API-App entwickelt und veröffentlicht.Is developed and published as an Azure PaaS Web API App.
- Die neue API wird so konfiguriert (über Web-App-Einstellungen), dass nur die virtuelle IP-Adresse (VIP) der APIM-Instanz akzeptiert wird.Is configured (via Web App settings) to accept only the APIM VIP.
- Die neue API wird mit aktiviertem sicheren Transport/SSL-Protokoll in Azure-Web-Apps gehostet.Is hosted in Azure Web Apps with Secure Transport/SSL turned on.
- Für die neue API ist die Autorisierung aktiviert. Diese wird von Azure App Service mithilfe von Azure Active Directory und OAuth 2 bereitgestellt.Has authorization enabled, provided by the Azure App Service using Azure Active Directory and OAuth 2.
- Die neue browserbasierte Webanwendung ist für die vorhandene HTTP-API und die neue API von der Azure API Management-Instanz abhängig.The new browser-based web application will depend on the Azure API Management instance for both the existing HTTP API and the new API.
Die APIM-Instanz wird so konfiguriert, dass sie die älteren HTTP-Dienste einem neuen API-Vertrag zuordnet.The APIM instance will be configured to map the legacy HTTP services to a new API contract. Der neuen Webbenutzeroberfläche ist die Integration einer Gruppe von älteren Diensten/APIs und neuen APIs daher nicht bekannt.By doing this, the new Web UI is unaware of the integration with a set of legacy services/APIs and new APIs. Das Projektteam wird in der Zukunft schrittweise Funktionen zu den neuen APIs portieren und die ursprünglichen Dienste außer Betrieb setzen.In the future, the project team will gradually port functionality to the new APIs and retire the original services. Diese Änderungen werden in der APIM-Konfiguration vorgenommen, sodass die Front-End-Benutzeroberfläche davon nicht betroffen ist und Neuentwicklungen vermieden werden.These changes will be handled within APIM configuration, leaving the front-end UI unaffected and avoiding redevelopment work.
AlternativenAlternatives
- Wenn die Organisation eine Migration ihrer vollständigen Infrastruktur (einschließlich der VMs, die ältere Anwendungen hosten) zu Azure planen würde, wäre APIM dennoch eine gute Option, da der Dienst als Fassade für alle adressierbaren HTTP-Endpunkte fungieren kann.If the organization was planning to move their infrastructure entirely to Azure, including the VMs hosting the legacy applications, then APIM would still be a great option since it can act as a facade for any addressable HTTP endpoint.
- Wenn sich der Kunde dafür entschieden hätte, die vorhandenen Endpunkte privat zu halten und nicht öffentlich verfügbar zu machen, könnte die API Management-Instanz mit einem virtuellen Azure-Netzwerk (VNET) verknüpft werden:If the customer had decided to keep the existing endpoints private and not expose them publicly, their API Management instance could be linked to an Azure Virtual Network (VNet):
- In einem Azure-Lift & Shift-Szenario, das direkt mit dem bereitgestellten virtuellen Azure-Netzwerk verknüpft ist, könnte der Kunde den Back-End-Dienst direkt über private IP-Adressen adressieren.In an Azure "lift and shift" scenario linked to their deployed Azure virtual network, the customer could directly address the back-end service through private IP addresses.
- Im lokalen Szenario könnte die API Management-Instanz eine private Verbindung über ein Azure-VPN-Gateway und eine Site-to-Site-IPSec-VPN-Verbindung oder ExpressRoute mit dem internen Dienst herstellen, wodurch ein Hybridszenario mit Azure und einer lokalen Umgebung entstehen würde.In the on-premises scenario, the API Management instance could reach back to the internal service privately via an Azure VPN gateway and site-to-site IPSec VPN connection or ExpressRoute making this a hybrid Azure and on-premises scenario.
- Die API Management-Instanz kann privat gehalten werden, indem sie im internen Modus bereitgestellt wird.The API Management instance can be kept private by deploying the API Management instance in Internal mode. Die Bereitstellung könnte dann mit einer Azure Application Gateway-Instanz verwendet werden, um den öffentlichen Zugriff für einige APIs zu ermöglichen, während andere APIs weiterhin nur intern zugänglich sind.The deployment could then be used with an Azure Application Gateway to enable public access for some APIs while others remain internal. Weitere Informationen finden Sie unter Verbinden von API Management mit einem VNet im internen Modus.For more information, see Connecting APIM in internal mode to a VNet.
Hinweis
Allgemeine Informationen zum Verbinden von API Management mit einem VNET finden Sie hier.For general information on connecting API Management to a VNet, see here.
Verfügbarkeit und SkalierbarkeitAvailability and scalability
- Azure API Management kann horizontal hochskaliert werden, indem Sie einen Tarif auswählen und anschließend Einheiten hinzufügen.Azure API Management can be scaled out by choosing a pricing tier and then adding units.
- Die Skalierung erfolgt auch durch automatische Skalierung.Scaling also happen automatically with auto scaling.
- Die Bereitstellung in mehreren Regionen ermöglicht die Verwendung von Failoveroptionen und ist im Premium-Tarif verfügbar.Deploying across multiple regions will enable fail over options and can be done in the Premium tier.
- Erwägen Sie die Integration in Azure Application Insights. Dadurch stehen Ihnen über Azure Monitor auch Metriken für die Überwachung zur Verfügung.Consider Integrating with Azure Application Insights, which also surfaces metrics through Azure Monitor for monitoring.
Bereitstellen des SzenariosDeploy the scenario
Der erste Schritt ist das Erstellen einer Azure API Management-Instanz im Portal.To get started, create an Azure API Management instance in the portal.
Alternativ können Sie eine der vorhandenen Azure Resource Manager-Schnellstartvorlagen auswählen, die für Ihren spezifischen Anwendungsfall geeignet ist.Alternatively, you can choose from an existing Azure Resource Manager quickstart template that aligns to your specific use case.
PreisePricing
API Management ist in vier Tarifen erhältlich: Developer, Basic, Standard und Premium.API Management is offered in four tiers: developer, basic, standard, and premium. Ausführliche Informationen zu den Unterschieden zwischen den einzelnen Tarifen finden Sie in der API Management-Preisübersicht.You can find detailed guidance on the difference in these tiers at the Azure API Management pricing guidance here.
Kunden können API Management skalieren, indem sie Einheiten hinzufügen und entfernen.Customers can scale API Management by adding and removing units. Die Kapazität jeder Einheit ist vom Tarif abhängig.Each unit has capacity that depends on its tier.
Hinweis
Der Developer-Tarif kann zur Evaluierung der API Management-Funktionen verwendet werden.The Developer tier can be used for evaluation of the API Management features. Der Developer-Tarif sollte nicht für die Produktion verwendet werden.The Developer tier should not be used for production.
Im Azure-Preisrechner können Sie die voraussichtlichen Kosten für Ihre speziellen Bereitstellungsanforderungen ermitteln, indem Sie die Anzahl von Skalierungseinheiten und App Service-Instanzen ändern.To view projected costs and customize to your deployment needs, you can modify the number of scale units and App Service instances in the Azure Pricing Calculator.
Zugehörige RessourcenRelated resources
Zu Azure API Management stehen Ihnen eine umfangreiche Dokumentation und Referenzartikel zur Verfügung.Review the extensive Azure API Management documentation and reference articles.