Autor: Kristijan Sekereš
Azure Cloud Services (Extended Support) lõpetatakse 31. märtsil 2027: kuidas viia üle veebi- ja töörollid

Microsoft kuulutas Azure Cloud Services (extended support) aegunuks 31. märtsil 2025 ja lõpetab selle täielikult 31. märtsil 2027. Kui mõni teie äriline rakendus töötab veebi- ja töörollidena (web role, worker role), peab see enne seda kuupäeva töötama kusagil mujal Azure'is. Lõpetamise KKK vastab otse kahele küsimusele, mida kõik esimesena küsivad: Microsoft „ei saa pikendustaotlusi rahuldada“ ja „ühe klikiga migratsioonitööriista pole saadaval“.
Tänasest, 3. oktoobrist 2026, jääb seega kuus kuud.
Kellele see on mõeldud
Tüüpiline juhtum: ASP.NET rakendus .NET Frameworkil, ees veebiroll ning selle taga üks või kaks järjekordi töötlevat töörolli, mille on kaheksa või kümme aastat tagasi ehitanud mõni agentuur. Agentuur on sageli edasi liikunud, rakendus käitab endiselt tellimuste töötlemist või kliendiportaali ja keegi pole .csdef-faili pärast viimast migratsiooni avanud.
Et kontrollida, kas see teid puudutab, avage Azure'i portaal ja loetlege ressursid tüübiga „Cloud services (extended support)“. Microsofti lõpetamisteade lingib otse sellele vaatele. Kui see on tühi, olete valmis.
See artikkel ei käsitle Cloud Services'it (classic), mis lõpetati 2024. aastal. Kui toodet majutab teie eest tarnija, on migratsioon tema töö: küsige temalt kuupäeva kirjalikult. Kõik allpool kirjutatu on mõeldud meeskondadele, kellele kood kuulub või kellele see kuulub paberil ja kes peavad leidma kellegi, kes sellest aru saab.
Miks see on raskem kui 2024. aasta üleminek
Paljud ettevõtted läksid extended supportile üle 2024. aastal, kui classic lõpetati. See üleminek oli teadlikult odav. Microsofti extended supporti ülevaade ütleb, et failid .csdef, .cscfg ja .cspkg „kantakse üle ja vormingutes muudatusi pole“ ning et „käitusaja koodis muudatusi vaja ei ole“. Oli isegi kohapealne migratsioon. Sama leht soovitas extended supporti rakendustele, mis enam ei arene, sest „see pakub kiiret migratsiooniteed“.
Seekord samaväärset sihtkohta pole. Microsofti sõnul on Cloud Services „rakenduste juurutamine virtuaalmasinatena. Teie kirjutatud kood on tihedalt seotud virtuaalmasina instantsiga“. Teie kood teab, et see töötab rollis. See loeb konfiguratsiooni rollist, leiab kettaruumi rolli kaudu, saab sertifikaadid rolli paigaldatuna ja käitab enne rolli käivitumist administraatorina seadistusskripte. Kõik see tuleb asendada.
Veel üks asi, enne kui ametlikke juhiseid loete. Microsofti lõpetamisteade ja KKK nimetavad üht sihtkohta, Service Fabric managed clusterit. Ülevaateleht loetleb viis ja Microsofti enda migratsiooni otsustusmaatriks võrdleb seitset. Service Fabric on vaikevalik, mitte nõue, ja paljude veebirollide jaoks on see vale valik.
Sihtkohad ja millal milline sobib
Veebi- ja töörollid ei pea maanduma samas kohas. Valige sihtkoht rolli kaupa.
App Service (Windows). ASP.NET rakenduse puhul veebirollile kõige lähemal olev lahendus. Windowsi instantsidel on toetatud .NET Frameworki versioonid paigaldatud, nii et Web Forms ja MVC 5 töötavad ümberkirjutamiseta. Töörollid saavad järgneda WebJobidena, mis töötavad „veebirakendusega samas instantsis“ ilma lisatasuta. Piiriks on masin ise: Microsoft suunab rakendused, mis vajavad COM-komponente, registrile juurdepääsu või MSI-paigaldajaid, Managed Instance'i, nii et kõrgendatud õigustega käivitusülesannetel pole tavapaketis kuhugi minna.
App Service Managed Instance. Loodud pärand-Windowsi veebirakenduste jaoks. Microsofti ülevaate järgi on see „Windowsi veebirakenduste jaoks valitud piirkondades üldiselt kättesaadav“, piiratud Pv4- ja Pmv4-pakettidega, eelpaigaldatud .NET Framework 3.5 ja 4.8-ga ning PowerShelli paigaldusskriptidega, mis saavad registreerida COM-komponente, kirjutada registrivõtmeid, käitada MSI-paigaldajaid ja seadistada IIS-i. See katab suurema osa sellest, mida kõrgendatud õigustega käivitusülesanded tegid. Piirangud: ainult veebirakendused (WebJobe pole), konteinereid pole, ainult Entra ID ja hallatud identiteet (domeeniga liitumist, NTLM-i ega Kerberost pole) ning kirjutamise ajal oli ainus loetletud Euroopa piirkond North Europe.
Container Apps. Sobib töörollidele, kui need on juba kaasaegsel .NET-il: järjekorrapõhine skaleerimine, ajastatud ja sündmustest käivitatavad tööd, skaleerimine nullini. Kuid konteinerinõuded ütlevad: „Nõutavad on Linuxi-põhised (linux/amd64) konteinerikujutised.“ .NET Frameworkil olev kood ei tööta seal enne, kui see on üle viidud.
Azure Kubernetes Service. Käitab Windows Serveri konteinereid Windowsi sõlmekogumites, nii et .NET Frameworki rolli saab konteineriseerida ja üle viia. Otsustusmaatriks hindab nii selle migratsiooni keerukust kui ka käituskoormust kõrgeks. See sobib, kui käitate juba Kubernetest, mitte esimese klastrina ühe pärandrakenduse jaoks.
Virtual Machine Scale Sets. Maatriks nimetab seda „Cloud Services'i mudelile lähemaks, pakkudes lihtsamat lift-and-shift üleminekut“. Saate virtuaalmasina tagasi koos paikamise, kujutiste ehitamise ja IIS-i seadistamisega, mida roll varem teie eest tegi.
Service Fabric managed cluster. Microsofti nimetatud sihtkoht. Töörollid sobituvad sellega puhtalt. Veebirollid sageli mitte: Service Fabric „ei toeta IIS-i“ ja teisendusjuhend loetleb ASP.NET Web Formsi mittetoetatuna, teena teisendus ASP.NET Core MVC-ks. Service Fabricu migratsioonijuhend lisab, et hallatud klastrid „praegu konteinereid ei toeta“, nii et IIS-ist sõltuv rakendus vajab traditsioonilist klastrit, mille käitamisega on rohkem tööd.
Otsustustabel
| Teie roll näeb välja nii | Tõenäoline sihtkoht | Kuhu töö läheb |
|---|---|---|
| ASP.NET Web Formsi või MVC 5 veebiroll, käivitusülesanded tühised või puuduvad | App Service (Windows) | Konfiguratsioon, sertifikaadid, juurutuskonveier |
| Veebiroll, mille käivitusülesanded paigaldavad COM-komponente, MSI-sid või registrivõtmeid | App Service Managed Instance | Käivitusülesannete ümberkirjutamine paigaldusskriptideks; piirkonna ja paketi kontrollimine |
| .NET Frameworki tööroll, mis küsitleb järjekorda, mõõdukas koormus | WebJob veebirakenduse kõrval | RoleEntryPoint asendamine konsoolihostiga |
| Tööroll, mille olete valmis kaasaegsele .NET-ile üle viima | Container Apps | Ülekanne ise, seejärel konteinerikujutis |
| Palju rolle ja meeskond, kes juba käitab Kubernetest | AKS Windowsi sõlmekogumitega | Kujutised, klastri käitamine |
| Rasked natiivsed sõltuvused, koodimuudatusteks puudub tahe | VM Scale Sets | Operatsioonisüsteemi paikamine ja kujutiste hooldus, alaliselt |
| Paljude töörollidega süsteem, veebikiht juba ASP.NET Core'il | Service Fabric managed cluster | Platvormi õppimine; IIS-i pole, konteinereid pole |
Mis koodis muutub
Otsige lahendusest Microsoft.WindowsAzure.ServiceRuntime. Iga fail, mis seda impordib, on nimekirjas.
RoleEntryPoint
Tööroll on klass, mis pärib RoleEntryPoint'i ja kirjutab üle meetodid OnStart, Run ja OnStop. Kui Run naaseb, taaskäivitatakse instants. Service Fabric koondab kõik kolm üheks RunAsync-meetodiks, mis peaks peatuma, „kui RunAsync-meetodi CancellationToken on signaliseeritud“. App Service'is või konteineris muutub sama loogika konsoolirakenduseks või hostitud taustateenuseks, millel on tsükkel ja tühistusmärk.
Osa, mis inimestel kahe silma vahele jääb, on sulgemine. OnStop andis teile hetke käsil oleva sõnumi lõpetamiseks. Veenduge, et uus host edastaks tühistussignaali ja et pooleli jäetud sõnumi kaks korda töötlemine oleks ohutu.
Veebirollidel on sageli samuti üks, tavaliselt WebRole.cs. Kui selle OnStart teeb midagi (IIS-i seadistused, vahemälu soojendamine), selgitage enne kustutamist välja, mida.
RoleEnvironment
RoleEnvironment.GetConfigurationSettingValue("Key") loeb seadeid .cscfg-failist. Väljaspool Cloud Services'it seda keegi ei paku. Enne kui midagi üle viite, mähkige iga kutse ühte väikesesse konfiguratsiooniliidesesse ja suunake see liides uues hostis rakenduse seadetele, keskkonnamuutujatele või Key Vaultile. See on projekti odavaim muudatus ja muudab ülejäänu sülearvutis testitavaks.
Kolm muud kasutust, mida otsida:
RoleEnvironment.Changed, mis rakendas konfiguratsioonimuudatused ilma taaskäivituseta. Service Fabricus on samaväärne sündmus. Mujal eeldage, et seade muutmine taaskäivitab protsessi, ja testige, mida see pooleliolevale tööle teeb.RoleEnvironment.CurrentRoleInstance, mida kasutatakse ühe instantsi valimiseks ajastatud tööks. Käivitatavad (triggered) WebJobid töötavad ühel instantsil; pidevad (continuous) töötavad kõigil instantsidel, kui neid pole piiratud. Otsustage see teadlikult.RoleEnvironment.IsAvailablejaIsEmulatedharud. Need eraldavad „pilve“ tee „kohalikust“ teest ja üks neist muutub peagi surnud koodiks.
.cscfg ja .csdef
.cscfg sisaldab keskkonnapõhiseid seadeid, instantside arvu ja sertifikaatide sõrmejälgi. .csdef sisaldab lõpp-punkte, virtuaalmasina suurust, kohalikku salvestusruumi, käivitusülesandeid, sertifikaadihoidlaid ja mõnikord mitut IIS-i saiti ühes veebirollis. Käige mõlemad rida-realt läbi ja pange kirja, kus iga kirje edaspidi asub: rakenduse seade, Key Vaulti viide, taristukood või mitte kusagil. Sisemised lõpp-punktid, mille kaudu rollid üksteist otse kutsuvad, vajavad asendust, kas teenuse aadressi või järjekorda.
Sertifikaadid
Extended support sundis sertifikaadid juba Key Vaulti, nii et see osa 2024. aasta tööst tasub end ära. Muutub see, kuidas kood need üles leiab. .csdef paigaldab sertifikaadid nimega hoidlasse, sageli LocalMachine. Windowsi App Service'is teeb seade WEBSITE_LOAD_CERTIFICATES need kättesaadavaks hoidlas Current User\My. Kood, mis avab LocalMachine hoidla, ei leia midagi ja esimene kutse, mis sertifikaati vajab, ebaõnnestub. Linuxi konteinerites laadige see selle asemel käivitamisel Key Vaultist.
Käivitusülesanded
Avage Startup.cmd. Siin elavad üllatused, mida käitatakse tavaliselt seadega executionContext="elevated": fondid PDF-ide genereerimiseks, COM-komponent, IIS-i rewrite-moodul, registrimuudatus TLS-i jaoks. Igal real on kolm võimalikku saatust: pole enam vaja, viiakse Managed Instance'is paigaldusskripti või küpsetatakse konteineri- või virtuaalmasina kujutisse.
Kohalik salvestusruum
.csdef-failis olev LocalStorage-ressurss, mida loeti meetodiga RoleEnvironment.GetLocalResource, andis igale instantsile ajutise ketta. Kasutage päris ajutiste failide jaoks platvormi ajutist kataloogi. Kõik, mis peab taaskäivituse üle elama, sealhulgas failid, mida keegi pidas püsivaks, läheb Blob Storage'isse.
Web Forms
See on otsus, mis juhib kõike muud. Web Forms põhineb System.Web'il ja sellel puudub ASP.NET Core'i versioon, nii et Web Formsi rakenduse viimine Service Fabricusse või Container Appsi tähendab selle kasutajaliidese ümberkirjutamist. App Service, Managed Instance, Windowsi konteiner või skaleerimiskomplekt suudavad seda kõik muutmata käitada. Viige see üle sellisena, nagu see on, ja tehke moderniseerimisest eraldi projekt oma eelarvega. Kasutajaliidese ümberkirjutamine ei kuulu sulgemiskuupäeva kriitilisele teele.
Ülejäänu
Kahe pilveteenuse vaheline VIP-vahetus muutub App Service'is juurutuspesadeks (deployment slots) või Container Appsis revisjonideks. Diagnostikalaienduse (WAD) kaudu saadetud logid vajavad uut sihtkohta, tavaliselt Application Insightsi. Tavaline App Service ja Container Apps ei paku kaugtöölauda; Managed Instance lubab seda Azure Bastioni kaudu, ainult diagnostikaks.
Kuue kuu plaan
Arvestades tagasi 31. märtsist 2027, detsembripühad keskel.
Oktoober: inventuur ja sihtkoha valik. Loetlege iga extended supporti juurutus. Pange iga rolli kohta kirja .NET Frameworki versioon, kas tegu on Web Formsi või MVC-ga, iga RoleEnvironment kutse, käivitusülesanne, kohaliku salvestusruumi ressurss, sertifikaat ja lõpp-punkt. Seejärel kontrollige ebamugavat osa: kas suudate juurutatud paketi olemasolevast lähtekoodist ehitada? Agentuuride ehitatud süsteemide puhul on vastus mõnikord eitav ja oktoober on kuu, mil see välja selgitada. Valige sihtkoht rolli kaupa.
November: üks roll otsast lõpuni. Lisage konfiguratsiooniümbris, kirjutage sihtkeskkond taristukoodina ja saage üks roll (tavaliselt kõige lihtsam tööroll) testkeskkonnas tööle koos logide, sertifikaatide ja konveieriga.
Detsember ja jaanuar: ülejäänu ülekandmine. Asendage sisenemispunktid, käivitusülesanded ja kohalik salvestusruum. Koormustestige eelkeskkonda tootmisele sarnaste andmetega: WebJob või konteiner ei pruugi saavutada eraldi rolli virtuaalmasina läbilaskevõimet.
Veebruar: paralleelne käitamine. Käitage uut keskkonda päris liikluse vastu. Töörollide puhul, mis jagavad järjekorda vanade rollidega, muutke esmalt töötlemine idempotentseks või peatage vanad töörollid enne uute käivitamist.
Märtsi algus: üleminek. Vahetage DNS aegsasti. Hoidke vana juurutus nädal või kaks peatatuna, kuid puutumatuna, seejärel kustutage see. Ärge planeerige üleminekut märtsi viimasesse nädalasse: ebaõnnestunud üleminekul pole siis teist katset.
Kui alustate hoopis jaanuaris, jätke moderniseerimine täielikult kõrvale. Valige sihtkoht, mis vajab kõige vähem koodimuudatusi (App Service, Managed Instance või skaleerimiskomplektid), viige üle ja refaktoreerige pärast.
Mis pole selge
Microsoft ütleb, et teenus „lõpetatakse täielikult“ ja et migratsioon on vajalik „teenuse katkemise vältimiseks“. Meie loetud lehed ei ütle, mis juhtub juurutusega, mis 1. aprillil 2027 veel töötab. Ärge planeerige seda välja selgitada. Ka Managed Instance'i piirkonnad ja paketid tõenäoliselt lähikuudel muutuvad, seega kontrollige need üle otsustamise hetkel, mitte selle artikli põhjal.
Kust abi saada
Võtame üle teiste ehitatud rakendusi, selgitame välja, kuidas need töötavad, ja viime need üle: inventuur, sihtkoht rolli kaupa, RoleEnvironment ja käivitusülesannete muudatused ning üleminek. Meie pärandsüsteemide hooldus hõlmab .NET Frameworki ja Web Formsi; kui teie enda meeskond teeb migratsiooni ja vajab lisakäsi, vaadake personali täiendamist.
Kui teil on Cloud Services'i juurutus ja tähtaeg kuue kuu kaugusel, kirjutage aadressile office@c9group.dev.
Platvormide migratsioon
Uued juhendid ja reeglimuudatused e-postile
Kui mõni reegel muutub, tähtaeg nihkub või avaldame uue juhendi, saadame selle teile e-postiga.