SlideShare una empresa de Scribd logo
1 de 9
Digital Marketing IT Feedback
Construire un IIS like pour configurer et
gérer ses noms de domaines sur une
solution Cloud
Vousl’avieznoté,il n’existe pasunsite Microsoftmaisplusieurs.C’estpourquoi nousavonsbesoin
de noms de domaines;soitpourfaire atterrirdessitescampagnes – éphémèresde nature - , soit
pour avoirdes« friendlyname » pourredirigerversces campagnes,soitenfinpourprotégernos
marques,développerdesservices…Beaucoupde campagnes,beaucoupde sites,nousavonsdonc
besoind’une solutionsouple etefficace pourlesgérer.
Dans cet article,nousvousprésentonsune solutionpertinente –pournousau moins - qui nous
permetd’administrernomsde domaine le touttirantpleinementpartie de lapuissance de Microsoft
Azure.
Cédric Folliot, Tech Lead, Redsen Consulting
Lucas Riedberger, Digital Optimization Lead, Microsoft France
Contexte
Une url est constituée d’undomaine représentantl’entreprise etd’unmotfacile àretenirpouvant
éventuellementrappelerlacampagne. Elle doitdonnerdusensavecunminimumde caractère. Afin
de maximiserle SEOetla gestiondu site, nousfaisons atterrirlacampagne surunsite existant. Pour
ces communications,nousévitons l’utilisationde liens nonhuman readableàla bitly…C’estvrai pour
lessites/pagescampagnes,maiségalementpourlessiteswebproduitsouservices. Dansle cas d’un
produit, nousprotégeonssimplement nosmarques.
En faisantpointernoszonesDNSsurnos instancesAzure (IPouCNAME),nouspouvonsanalyserla
requête etconstruire desrèglesde redirectioncomplexes.Pourcelanousutilisonslapuissance des
expressionsrégulièresRegex.
A date,tousnos nomsde domaine ne sontpas managéspar cette application,uniquementceux qui
nécessitentdesmodifications rapidesetune administrationagile. Danscetarticle,vousdécouvrirez
commentcomposervotre service pour pouvoirbénéficierde lacontinuité de service d’Azure
essentielle pource type d’application.
Architecture de la solution
Parcours d’une requête
Architecture Fonctionnelle sur Windows Azure
Le cœur de notre programme réside dansl’analysede l’url.Cetteanalyse estfaitegrâce àune
requête Linqcouplée àdes expressionsrégulières.Elle nousfournitl’url dudomaine de destination
le pluspertinent ainsi que le code httpàrenvoyer.Le traitementse faitsurcesdifférents cas:
 Trouve l'url exacte
 Trouve le répertoire
 Trouve lesexpressionsRegex.
On ordonne larègle ayantlachaine la plusgrande.C'estdoncl'url lapluslongue qui vienten
premier.Celapermetde prendrelesrèglesplusprécises pourfinirsurlesrèglesgénérales.
On suppose que le code Httpexiste. Vouspouvezutiliserl’ensemble descodes (From100 to520).
Néanmoins,si uncode httpn’existepas, l’applicationretournerauncode 500 signifiantque le code
http n’existepas.
Les statutsde redirectionsontindispensablesàvotre stratégie SEO. Par exemple,si vousgardezune
redirection302 sur le rootmicrosoft.comvers www.microsoft.com;lesmoteursde recherche
afficherontcomme url le rootet non lavéritable url.Le title etladescriptionaffichésserontceux de
la page cible etlespagesqui sontendessusserontaffectées…
Status Code Status
300 "Multiple Choices"
301 "MovedPermanently"
302 "Found"
303 "See Other(since HTTP/1.1)"
304 "NotModified"
305 "Use Proxy(since HTTP/1.1)"
306 "SwitchProxy"
307 "TemporaryRedirect(since HTTP/1.1)"
308 "PermanentRedirect(approvedas
experimental RFC)[12]"
Architecture Applicative
Compute
Afind’obtenirles99.8 % d’uptime,nous avonsaligné2instances Azure.Le besoinenressources
étantlimité,nousavonsopté pourdesinstancesextrasmall.
Database
Nousavonschoisi SQL Serverpourcette applicationmais unblobtable Azure auraitputoutautant
satisfaire nosbesoins.Eneffet,le modèlede données n’apasbesoinde relationnel caril comporte
une table seulement.
Table Domains
- [IdDomain] INT IDENTITY (1, 1) NOT NULL,
- [Domain] NVARCHAR(500) NOT NULL,
- [Type] NCHAR (3) NULL,
- [Destination] VARCHAR(250) NULL,
- [StatusCode] INT NULL,
- [Actif] BIT NULL,
- [MailOwner] VARCHAR(250) NULL,
- [DateCreated] DateTime NULL,
- [DateUpdated] DateTime NULL,
Cache
Nousavonschoisi le cache HttpRuntime du .NetFramework.Inutile dansnotre cas d’avoiruncache
distribué.Néanmoins, si vousle souhaitez, le systèmede cache distribué estaccessible directementà
partir despropriétésde l’application.
La logique de développement, le métier et les regex
Les Evènements :
Afind’écouterl’ensemble desrequêtesqui arriventsurnotre applicationnousavonschoisi
l’événementApplication_BeginRequest qui se trouve dansle fichier Global.asax
Logique métier :
La logique métierestencapsulée dansune classe.
L’essentiel de cette logique se trouve danscette requête Linq
var lDDMList = from obj in this.ListDomains
let mySearchTerm = obj.DomainRegex.Match(this.FinalPath)
where mySearchTerm.Success
orderby obj.Domain.Length descending
select new DomainsDataModel
{
Destination = obj.Destination,
Domain = obj.Domain,
DomainRegex = obj.DomainRegex,
DomainMatch = mySearchTerm,
StatusCode = obj.StatusCode
};
Nouscherchonsdansnotre base de domaine àanalyserl’expression(notre requête)laplus
pertinente etnousrenvoyonslaredirection correspondante.
La Data Access Layer
Nouscréonsun repositoryde domainqui gère le cache etl’accèsà la base de donnéesviaEntity
Framework.Afind’assurerune continuité de service,nousne rafraichissons le cache que si la
requête SQLestpassé.Si une coupure entre labase et l’applicationarrive,alorsnousgardonsles
règlesenmémoire etce jusqu’àce qu’ellesoitaccessible ànouveau.
Gestion des erreurs
Si une redirectionn’estpas trouvée ousi unmauvaiscode httpest fourni,l’application redirige
temporairementvers une page pardéfaut.
Monitoring
DepuislaSDK 2.0, un système de diagnosticestapparudansAzure.Ce monitoringestutilisédans
notre applicationqui tourne surlaSDK Azure 2.2. Pour l’utiliser,il suffitde bienconfigurer
l’applicationlorsdudéploiement suivantvotre besoin :
Ensuite,il suffitd’utiliserlalibde diagnosticdu.NetFramework :
System.Diagnostics.Trace.TraceError
System.Diagnostics.Trace.TraceWarning
System.Diagnostics.Trace.TraceInformation
Plusieursressourcessontutilisées pourlarécupérationdesdonnées :
Type Stockage Accès Type d’erreur
Blob storage wad-control-container Déploiement
Table storage WADLogsTable AppTrace Error
HandledException
Table storage WADWindowsEventLogsTable Windows Error
Infrastructure
UnandledException
Si une expressionrégulière n'estpasbonne,le problème estnotifié dansleslogs.Elle n'estpas
ajoutée àla liste.
Les principes de sécurité
L’avantage de déployersonapplicationsurAzure estde ne pas se soucierde lapartie infrastructure.
Vouspouvezdoncvousconcentrersurla partie applicative. Voici quelquesconsidérationsgénérales :
Faille potentiel Solution Sévérité
XSS Si une requête potentiellementdangereuseest
détectée alorsonredirige verslapage pardéfaut(":"et
les"////") > mécanisme Unandledexception
HIGH
Configuration La chaine de connexionestencodéegrâce auprotocole
PKCS12ProtectedConfigurationProvider (voir
déploiement)
MEDIUM
DOS Load balancerAzure contientdesmécanismes de
protection.
Timeoutexecutionde 10 secs
MEDIUM
Data hack SQL ServerprotectedbyFirewall IP.Bydesign dansSQL
Azure
LOW
SQL Injection Use of Entityframework
No input:L’applicationn’estpasautorisée àécrire en
base.
LOW
Et pour le déploiement, c’est simple
Pour Updater le rôle sans downtime
1. Update le rôle de Visual Studioversle staging
2. Test
3. Swap d'adresse IP
Encoder le fichier de configuration :
1. Il fautStrong typerl’application(lien)
2. Ensuite copierl’Assemblyde l’application dansle dossier .NETFramework
(C:WindowsMicrosoft.NETFrameworkv4.0.30319)
3. Installerle CertificatAzure généré dansle magasinde lamachine de développement
4. Run CommandwithVSCommandprompt(AdminMode):
/// cd root folderde l’application
/// aspnet_regiis -pef "connectionStrings""." -prov"CustomProvider"
Aide : http://archive.msdn.microsoft.com/pkcs12protectedconfg
http://www.heikniemi.net/hardcoded/2013/06/encrypting-connection-strings-in-windows-azure-
web-applications/
Next Step
Aujourd’hui,lesrèglessontinséréesenbase parun poweruserqui vérifie que le domaine ne rentre
pas enconflitavecune autre.Dans une VNext,nousmettronsàdispositiondesutilisateursmarketing
un outil permettantde mettre àjourleurUrls sanspassé par l’IT.Idéalementce système pourra
gérerlesTime Policies(une url qui n’estpasrenouvelée estautomatiquementsuppriméeauboutde
T Temps).Les3 grandesfonctionnalitésàmettre enplace serontdonc :
- Analyse métier/Validationdudomaine.(larequête estjouée surl’ensembledesrègles.Si le
domaine envoyé estégale audomaine saisi,alorslarègle estvalidée.)
- Notification :Mail envoyé 1moisavantl’expirationavecunlienpermettantd’étendre l’url
pour une nouvelle période.
- Mise en place d’une mémoire tamponenglobantl’ensemble desdemandes.Eventuellement,
système de synchronisationdataentre le système de donnéeslocalesetle systèmede
donnéesAzure.
Conclusion
Comme vous l’avezconstaté, le développementducœurde l’applicationn’estqu’uneinfimepartie
de l’effortde développementtotal. A ce titre, laplateforme nouspermetde basernos
développementssurdesFrameworképrouvés.Ainsi,cescouchessonttotalementoupartiellement
traitéesparMicrosoftou sespartenaires sanscoutsadditionnels :
- Monitoring
- Cache system
- Data Synchronisation
L’applicatif estsimple,ne nécessite pas d’effortde mise àjourou d’administrationcomme c’étaitle
cas lorsque nousavionsune machine dédiéeetse metà jouren toute simplicité.

Más contenido relacionado

Destacado

Valentines Ideas - True Love
Valentines Ideas - True LoveValentines Ideas - True Love
Valentines Ideas - True LoveKen Sapp
 
Patent_written by Dr. John Hemphill
Patent_written by Dr. John HemphillPatent_written by Dr. John Hemphill
Patent_written by Dr. John HemphillClaire Warshaw
 
Visita a la iglesia skate de coruño
Visita a la iglesia skate de coruñoVisita a la iglesia skate de coruño
Visita a la iglesia skate de coruñoisabelri
 
DEB1 still lives DPS
DEB1 still lives DPSDEB1 still lives DPS
DEB1 still lives DPSJihane Miller
 
Клинические исследования на малых популяциях
Клинические исследования на малых популяцияхКлинические исследования на малых популяциях
Клинические исследования на малых популяцияхPHARMADVISOR
 
Качество исследуемых лекарственных препаратов для терапии соматическими клетками
Качество исследуемых лекарственных препаратов для терапии соматическими клеткамиКачество исследуемых лекарственных препаратов для терапии соматическими клетками
Качество исследуемых лекарственных препаратов для терапии соматическими клеткамиPHARMADVISOR
 
Обзор модных коллекций. Весна-Лето 2016. Подколзина
Обзор модных коллекций. Весна-Лето 2016. ПодколзинаОбзор модных коллекций. Весна-Лето 2016. Подколзина
Обзор модных коллекций. Весна-Лето 2016. ПодколзинаЖанна Подколзина
 

Destacado (20)

Valentines Ideas - True Love
Valentines Ideas - True LoveValentines Ideas - True Love
Valentines Ideas - True Love
 
Seo company in dwarka delhi
Seo company in dwarka delhiSeo company in dwarka delhi
Seo company in dwarka delhi
 
Patent_written by Dr. John Hemphill
Patent_written by Dr. John HemphillPatent_written by Dr. John Hemphill
Patent_written by Dr. John Hemphill
 
Estrategia de procesos
Estrategia de procesosEstrategia de procesos
Estrategia de procesos
 
Visita a la iglesia skate de coruño
Visita a la iglesia skate de coruñoVisita a la iglesia skate de coruño
Visita a la iglesia skate de coruño
 
MonCV2
MonCV2MonCV2
MonCV2
 
DEB1 still lives DPS
DEB1 still lives DPSDEB1 still lives DPS
DEB1 still lives DPS
 
Клинические исследования на малых популяциях
Клинические исследования на малых популяцияхКлинические исследования на малых популяциях
Клинические исследования на малых популяциях
 
SELVAM.CV
SELVAM.CVSELVAM.CV
SELVAM.CV
 
Качество исследуемых лекарственных препаратов для терапии соматическими клетками
Качество исследуемых лекарственных препаратов для терапии соматическими клеткамиКачество исследуемых лекарственных препаратов для терапии соматическими клетками
Качество исследуемых лекарственных препаратов для терапии соматическими клетками
 
Acrostici
Acrostici Acrostici
Acrostici
 
Decoracao com-moda-mkp
Decoracao com-moda-mkpDecoracao com-moda-mkp
Decoracao com-moda-mkp
 
Inducción proceso de comunicaciones
Inducción proceso de comunicaciones Inducción proceso de comunicaciones
Inducción proceso de comunicaciones
 
Poesia
Poesia Poesia
Poesia
 
Gli stati della materia
Gli stati della materiaGli stati della materia
Gli stati della materia
 
Foreign Assistance Newsletter - June/July 2016 Edition
Foreign Assistance Newsletter - June/July 2016 EditionForeign Assistance Newsletter - June/July 2016 Edition
Foreign Assistance Newsletter - June/July 2016 Edition
 
A grande tribulação
A grande tribulaçãoA grande tribulação
A grande tribulação
 
Inducciòn salud y seguridad en el trabajo
Inducciòn salud y seguridad en el trabajoInducciòn salud y seguridad en el trabajo
Inducciòn salud y seguridad en el trabajo
 
Proyecto holmquist
Proyecto holmquistProyecto holmquist
Proyecto holmquist
 
Обзор модных коллекций. Весна-Лето 2016. Подколзина
Обзор модных коллекций. Весна-Лето 2016. ПодколзинаОбзор модных коллекций. Весна-Лето 2016. Подколзина
Обзор модных коллекций. Весна-Лето 2016. Подколзина
 

Similar a ShortUrlApp-iis-like

la session Patterns azure cloud au Gwab 2014
la session Patterns azure cloud au Gwab 2014la session Patterns azure cloud au Gwab 2014
la session Patterns azure cloud au Gwab 2014Aymeric Weinbach
 
DevOps Day - Monitoring
DevOps Day - MonitoringDevOps Day - Monitoring
DevOps Day - MonitoringRadoine Douhou
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows Azure[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows AzureMicrosoft Technet France
 
L’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleL’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleManon PERNIN
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasMicrosoft
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteMicrosoft
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Microsoft Décideurs IT
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Microsoft Technet France
 
Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?Microsoft Décideurs IT
 
Reprise et Continuité d’activité sur le Cloud : Mythes & Réalités
Reprise et Continuité d’activité sur le Cloud : Mythes & RéalitésReprise et Continuité d’activité sur le Cloud : Mythes & Réalités
Reprise et Continuité d’activité sur le Cloud : Mythes & RéalitésMicrosoft Technet France
 
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksSQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksPhilippe Geiger
 
Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?Christophe Villeneuve
 
Microsoft Azure : The cloud for modern business
Microsoft Azure : The cloud for modern businessMicrosoft Azure : The cloud for modern business
Microsoft Azure : The cloud for modern businessChourouk HJAIEJ
 
Migration des réseaux d agence : les apports de Windows Server 2012 R2
Migration des réseaux d agence : les apports de Windows Server 2012 R2Migration des réseaux d agence : les apports de Windows Server 2012 R2
Migration des réseaux d agence : les apports de Windows Server 2012 R2Microsoft
 
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptxSQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptxPhilippe Geiger
 

Similar a ShortUrlApp-iis-like (20)

la session Patterns azure cloud au Gwab 2014
la session Patterns azure cloud au Gwab 2014la session Patterns azure cloud au Gwab 2014
la session Patterns azure cloud au Gwab 2014
 
DevOps Day - Monitoring
DevOps Day - MonitoringDevOps Day - Monitoring
DevOps Day - Monitoring
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows Azure[Tuto] Web burst : Débordement Web vers Windows Azure
[Tuto] Web burst : Débordement Web vers Windows Azure
 
Dev ops Monitoring
Dev ops   MonitoringDev ops   Monitoring
Dev ops Monitoring
 
L’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitaleL’intégration, facteur clef de succès d’une transformation digitale
L’intégration, facteur clef de succès d’une transformation digitale
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?Cloud Privé, Cloud Public...poursquoi choisir ?
Cloud Privé, Cloud Public...poursquoi choisir ?
 
Reprise et Continuité d’activité sur le Cloud : Mythes & Réalités
Reprise et Continuité d’activité sur le Cloud : Mythes & RéalitésReprise et Continuité d’activité sur le Cloud : Mythes & Réalités
Reprise et Continuité d’activité sur le Cloud : Mythes & Réalités
 
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les NotebooksSQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
SQL Saturday Haïti 2023 - Bien maîtriser Azure Data Studio et les Notebooks
 
DataStax Enterprise BBL
DataStax Enterprise BBLDataStax Enterprise BBL
DataStax Enterprise BBL
 
[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker
 
Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?Open source et microsoft azure reve ou realite ?
Open source et microsoft azure reve ou realite ?
 
Microsoft Azure : The cloud for modern business
Microsoft Azure : The cloud for modern businessMicrosoft Azure : The cloud for modern business
Microsoft Azure : The cloud for modern business
 
Migration des réseaux d agence : les apports de Windows Server 2012 R2
Migration des réseaux d agence : les apports de Windows Server 2012 R2Migration des réseaux d agence : les apports de Windows Server 2012 R2
Migration des réseaux d agence : les apports de Windows Server 2012 R2
 
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptxSQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
SQL Saturday Haïti 2022 - Débuter avec Azure pour les DBA.pptx
 

ShortUrlApp-iis-like

  • 1. Digital Marketing IT Feedback Construire un IIS like pour configurer et gérer ses noms de domaines sur une solution Cloud Vousl’avieznoté,il n’existe pasunsite Microsoftmaisplusieurs.C’estpourquoi nousavonsbesoin de noms de domaines;soitpourfaire atterrirdessitescampagnes – éphémèresde nature - , soit pour avoirdes« friendlyname » pourredirigerversces campagnes,soitenfinpourprotégernos marques,développerdesservices…Beaucoupde campagnes,beaucoupde sites,nousavonsdonc besoind’une solutionsouple etefficace pourlesgérer. Dans cet article,nousvousprésentonsune solutionpertinente –pournousau moins - qui nous permetd’administrernomsde domaine le touttirantpleinementpartie de lapuissance de Microsoft Azure. Cédric Folliot, Tech Lead, Redsen Consulting Lucas Riedberger, Digital Optimization Lead, Microsoft France
  • 2. Contexte Une url est constituée d’undomaine représentantl’entreprise etd’unmotfacile àretenirpouvant éventuellementrappelerlacampagne. Elle doitdonnerdusensavecunminimumde caractère. Afin de maximiserle SEOetla gestiondu site, nousfaisons atterrirlacampagne surunsite existant. Pour ces communications,nousévitons l’utilisationde liens nonhuman readableàla bitly…C’estvrai pour lessites/pagescampagnes,maiségalementpourlessiteswebproduitsouservices. Dansle cas d’un produit, nousprotégeonssimplement nosmarques. En faisantpointernoszonesDNSsurnos instancesAzure (IPouCNAME),nouspouvonsanalyserla requête etconstruire desrèglesde redirectioncomplexes.Pourcelanousutilisonslapuissance des expressionsrégulièresRegex. A date,tousnos nomsde domaine ne sontpas managéspar cette application,uniquementceux qui nécessitentdesmodifications rapidesetune administrationagile. Danscetarticle,vousdécouvrirez commentcomposervotre service pour pouvoirbénéficierde lacontinuité de service d’Azure essentielle pource type d’application. Architecture de la solution Parcours d’une requête Architecture Fonctionnelle sur Windows Azure Le cœur de notre programme réside dansl’analysede l’url.Cetteanalyse estfaitegrâce àune requête Linqcouplée àdes expressionsrégulières.Elle nousfournitl’url dudomaine de destination le pluspertinent ainsi que le code httpàrenvoyer.Le traitementse faitsurcesdifférents cas:  Trouve l'url exacte  Trouve le répertoire  Trouve lesexpressionsRegex. On ordonne larègle ayantlachaine la plusgrande.C'estdoncl'url lapluslongue qui vienten premier.Celapermetde prendrelesrèglesplusprécises pourfinirsurlesrèglesgénérales.
  • 3. On suppose que le code Httpexiste. Vouspouvezutiliserl’ensemble descodes (From100 to520). Néanmoins,si uncode httpn’existepas, l’applicationretournerauncode 500 signifiantque le code http n’existepas. Les statutsde redirectionsontindispensablesàvotre stratégie SEO. Par exemple,si vousgardezune redirection302 sur le rootmicrosoft.comvers www.microsoft.com;lesmoteursde recherche afficherontcomme url le rootet non lavéritable url.Le title etladescriptionaffichésserontceux de la page cible etlespagesqui sontendessusserontaffectées… Status Code Status 300 "Multiple Choices" 301 "MovedPermanently" 302 "Found" 303 "See Other(since HTTP/1.1)" 304 "NotModified" 305 "Use Proxy(since HTTP/1.1)" 306 "SwitchProxy" 307 "TemporaryRedirect(since HTTP/1.1)" 308 "PermanentRedirect(approvedas experimental RFC)[12]" Architecture Applicative Compute Afind’obtenirles99.8 % d’uptime,nous avonsaligné2instances Azure.Le besoinenressources étantlimité,nousavonsopté pourdesinstancesextrasmall.
  • 4. Database Nousavonschoisi SQL Serverpourcette applicationmais unblobtable Azure auraitputoutautant satisfaire nosbesoins.Eneffet,le modèlede données n’apasbesoinde relationnel caril comporte une table seulement. Table Domains - [IdDomain] INT IDENTITY (1, 1) NOT NULL, - [Domain] NVARCHAR(500) NOT NULL, - [Type] NCHAR (3) NULL, - [Destination] VARCHAR(250) NULL, - [StatusCode] INT NULL, - [Actif] BIT NULL, - [MailOwner] VARCHAR(250) NULL, - [DateCreated] DateTime NULL, - [DateUpdated] DateTime NULL, Cache Nousavonschoisi le cache HttpRuntime du .NetFramework.Inutile dansnotre cas d’avoiruncache distribué.Néanmoins, si vousle souhaitez, le systèmede cache distribué estaccessible directementà partir despropriétésde l’application. La logique de développement, le métier et les regex Les Evènements : Afind’écouterl’ensemble desrequêtesqui arriventsurnotre applicationnousavonschoisi l’événementApplication_BeginRequest qui se trouve dansle fichier Global.asax Logique métier : La logique métierestencapsulée dansune classe.
  • 5. L’essentiel de cette logique se trouve danscette requête Linq var lDDMList = from obj in this.ListDomains let mySearchTerm = obj.DomainRegex.Match(this.FinalPath) where mySearchTerm.Success orderby obj.Domain.Length descending select new DomainsDataModel { Destination = obj.Destination, Domain = obj.Domain, DomainRegex = obj.DomainRegex, DomainMatch = mySearchTerm, StatusCode = obj.StatusCode }; Nouscherchonsdansnotre base de domaine àanalyserl’expression(notre requête)laplus pertinente etnousrenvoyonslaredirection correspondante. La Data Access Layer Nouscréonsun repositoryde domainqui gère le cache etl’accèsà la base de donnéesviaEntity Framework.Afind’assurerune continuité de service,nousne rafraichissons le cache que si la requête SQLestpassé.Si une coupure entre labase et l’applicationarrive,alorsnousgardonsles règlesenmémoire etce jusqu’àce qu’ellesoitaccessible ànouveau. Gestion des erreurs Si une redirectionn’estpas trouvée ousi unmauvaiscode httpest fourni,l’application redirige temporairementvers une page pardéfaut. Monitoring DepuislaSDK 2.0, un système de diagnosticestapparudansAzure.Ce monitoringestutilisédans notre applicationqui tourne surlaSDK Azure 2.2. Pour l’utiliser,il suffitde bienconfigurer l’applicationlorsdudéploiement suivantvotre besoin :
  • 6. Ensuite,il suffitd’utiliserlalibde diagnosticdu.NetFramework : System.Diagnostics.Trace.TraceError System.Diagnostics.Trace.TraceWarning System.Diagnostics.Trace.TraceInformation Plusieursressourcessontutilisées pourlarécupérationdesdonnées : Type Stockage Accès Type d’erreur Blob storage wad-control-container Déploiement Table storage WADLogsTable AppTrace Error HandledException Table storage WADWindowsEventLogsTable Windows Error Infrastructure UnandledException Si une expressionrégulière n'estpasbonne,le problème estnotifié dansleslogs.Elle n'estpas ajoutée àla liste.
  • 7. Les principes de sécurité L’avantage de déployersonapplicationsurAzure estde ne pas se soucierde lapartie infrastructure. Vouspouvezdoncvousconcentrersurla partie applicative. Voici quelquesconsidérationsgénérales : Faille potentiel Solution Sévérité XSS Si une requête potentiellementdangereuseest détectée alorsonredirige verslapage pardéfaut(":"et les"////") > mécanisme Unandledexception HIGH Configuration La chaine de connexionestencodéegrâce auprotocole PKCS12ProtectedConfigurationProvider (voir déploiement) MEDIUM DOS Load balancerAzure contientdesmécanismes de protection. Timeoutexecutionde 10 secs MEDIUM Data hack SQL ServerprotectedbyFirewall IP.Bydesign dansSQL Azure LOW SQL Injection Use of Entityframework No input:L’applicationn’estpasautorisée àécrire en base. LOW
  • 8. Et pour le déploiement, c’est simple Pour Updater le rôle sans downtime 1. Update le rôle de Visual Studioversle staging 2. Test 3. Swap d'adresse IP Encoder le fichier de configuration : 1. Il fautStrong typerl’application(lien) 2. Ensuite copierl’Assemblyde l’application dansle dossier .NETFramework (C:WindowsMicrosoft.NETFrameworkv4.0.30319) 3. Installerle CertificatAzure généré dansle magasinde lamachine de développement 4. Run CommandwithVSCommandprompt(AdminMode): /// cd root folderde l’application /// aspnet_regiis -pef "connectionStrings""." -prov"CustomProvider" Aide : http://archive.msdn.microsoft.com/pkcs12protectedconfg http://www.heikniemi.net/hardcoded/2013/06/encrypting-connection-strings-in-windows-azure- web-applications/ Next Step Aujourd’hui,lesrèglessontinséréesenbase parun poweruserqui vérifie que le domaine ne rentre pas enconflitavecune autre.Dans une VNext,nousmettronsàdispositiondesutilisateursmarketing un outil permettantde mettre àjourleurUrls sanspassé par l’IT.Idéalementce système pourra gérerlesTime Policies(une url qui n’estpasrenouvelée estautomatiquementsuppriméeauboutde T Temps).Les3 grandesfonctionnalitésàmettre enplace serontdonc : - Analyse métier/Validationdudomaine.(larequête estjouée surl’ensembledesrègles.Si le domaine envoyé estégale audomaine saisi,alorslarègle estvalidée.) - Notification :Mail envoyé 1moisavantl’expirationavecunlienpermettantd’étendre l’url pour une nouvelle période. - Mise en place d’une mémoire tamponenglobantl’ensemble desdemandes.Eventuellement, système de synchronisationdataentre le système de donnéeslocalesetle systèmede donnéesAzure. Conclusion Comme vous l’avezconstaté, le développementducœurde l’applicationn’estqu’uneinfimepartie de l’effortde développementtotal. A ce titre, laplateforme nouspermetde basernos développementssurdesFrameworképrouvés.Ainsi,cescouchessonttotalementoupartiellement traitéesparMicrosoftou sespartenaires sanscoutsadditionnels : - Monitoring - Cache system
  • 9. - Data Synchronisation L’applicatif estsimple,ne nécessite pas d’effortde mise àjourou d’administrationcomme c’étaitle cas lorsque nousavionsune machine dédiéeetse metà jouren toute simplicité.