Mobile Backend in Cloud Azure Mobile Services / Websites / Active Directory /
Einführung Wachstum / Marktanalyse Quelle: Gartner 2012 2500 Mobile Internet Benutzer Desktop Internet Benutzer Internet Benutzer (Mio) 2000 1500 1000 500 0 2007 2008 2009 2010 2011 2012 2013 2014 2015
Kontext Back-Office Auth Mobile Users Push Data Website DevOps Social Networks Logic Others TFS online
Anforderungen an Mobile Lösung Endbenutzer Jederzeit, überall, sofort, aktuelle Daten Unterschiedliche Plattformen Sicher & Zuverlässig Meldungen zu Neuigkeiten Geringe Kosten Business Skalierbar Verfügbar Integrierbar (Eigene- & Fremdsysteme, Soziale Netzwerke, ) Verteilte Teams Automatisierung (Test, Verteilung) Agiles Projektmanagement Geringe Kosten
Windows Azure Mobile Service
Beispielapplikation? 3 Neu! Anforderungen Portal Website Team Portal Website Push Data (SQL DB) Team Active Directory? 5 Neu! Push Mobile Service? 5 Neu! Anforderungen
Portal mit Azure Website ASP.NET MVC 5 Web Applikation Entity Framework Code First Bootstrap Framework, JQuery Azure Active Directory Integration Identity and Access Auslesen der Benutzer aus dem Active Directory mittles Graph API Azure SQL Database Speichern der Projekte Gemeinsam genutzte Datenbank mit Website und Mobile Service
Mobile Backend mit Mobile Services Mobile Services Access Layer f Identity Providers Storage Other Cloud Services PNS
Mobile Services Data Mobile Services Data Problem: «Geheimnisse sollen geheim bleiben» (Connection-Strings, ) Lösung: Web-Service (REST) Mobile Service Basiert auf Node.js (JavaScript-Server) oder ASP.NET WebAPI (Preview) Kapselt Datenzugriff mit Webservice Ermöglicht Ausführung von Code bei Datenzugriff auf Daten-Tabellen Auth Connection String (Username, Secret) Mobile Service Data (SQL DB)
Mobile Services Data: Beispiel (Node.js) Table Scripts Für CRUD Operationen (Funktionen): read insert delete update Rechte pro Funktion Jeder Jeder mit Application Key Nur authentisierte Benutzer Nur Scripts und Admins
Mobile Services Logic API JavaScript oder.net WebAPI basierter Web-Service (REST) Nicht an Tabellen gekoppelt Zugriff auf andere Azure Dienste Libraries für Node.Js bzw..net Storage (SQL-Azure, Blob, Table, Queues, Service Bus) Management API Windows Store Partners (Sengrid, Twillio, Pusher) Scheduler Zeitintervall oder «manuelle Anfrage» Kein Webservice-Endpunkt
Mobile Services Authentication Mobile Services Identity gemeinsames API für unterschiedliche Identity Provider: Microsoft Account, Facebook, Twitter, google, Azure Active Directory (preview) Code Server-side-Scripts: user-object Beispiel AAD: user.getidentities({ success: function (identities) { var objectid = identities.aad.oid; console.log(objectid); } }); Client-Side: App.MobileService.CurrentUser var user = await App.MobileService.LoginAsync("aad"); var user = await App.MobileService.LoginAsync(MobileServiceAuthenticationProvider.Facebook);
Mobile Services Push Notification 1. PNS Handle abrufen Mobile App 2. PNS Handle im App Backend speichern 4. Gerät benachrichtigen Plattform Notification System 3. Benachrichtigung senden Mobile Service App Backend
Mobile Services Push Notification Platform Notification Systems (PNS) Windows 8: Windows Push Notification Service Windows Phone: Microsoft Push Notification Service ios: Apple Push Notification Service Android: Cloud To Device Messaging Klassische Push-Infrastruktur Plattformabhängigkeit: Pro Plattform eine Schnittstelle Eingeschränkte Skalierbarkeit Weiterleitung an einzelne Geräte nicht an Gruppen
Service Bus Push Notification Benachrichtigungshubs (Notification Hubs) Gemeinsame Schnittstelle für alle wichtigen Plattformen Beliebiges Backend (Cloud or on-premises,.net, PHP, Java, Node, etc.) Pub/Sub-Routing an Tags zur Benachrichtigung von Gruppen Skalierung
Service Bus Push Notification 1. PNS Handle abrufen Mobile App 2. PNS Handle (und Tags) in App Backend speichern Plattform Notification System 4. Geräte benachrichtigen 3. Benachrichtigung senden Benachrichtigungshub 2. PNS Handle (und Tags) in Benachrichtigungshub registrieren 3. Benachrichtigung an Benachrichtigungshub senden Mobile Service App Backend
Lean Startup Process Schneller lernen TFS Templates Lernen for Scrum and Agile Task / Bug Tracking Conituous Feedback DevOps (TFS & SystemCenter) Benutzerverhalten: Application Insights Telemetry Big Data Analysis mit HDInsight Daten Ideen Messen Erstellen Code Schneller entwickeln Visual Studio Source Verwaltung Testautomatisierung Keine Server aufsetzen Continuous Integration Frameworks für gängige Plattformen Schneller messen Load Testing Performance Analysis Usage Statistics / Dashboards Monitoring of Cloud Services Intelli Trace. Lean Startup, see: http://theleanstartup.com/principles
ALM in Cloud Projekten Technologien Kurze Release-Zyklen: Mobile Technologien sind laufenden Änderungen unterworfen Unterschiedliche, sich stetig ändernde Technologien (Windows 8, Windows Phone, Android, ios) Azure abstrahiert von konkreten Mobile Plattformen Kürzere Entwicklungszeit, geringere Wartungskosten Integration von Tools (Visual Studio online) mit Operation Plattform (Azure) Projektmanagement Verteilte und heterogene Teams Anforderungsmanagement Qualitätssicherung Testautomatisierung Kontinuierliche Integration
ALM in Cloud Projekten Android ios Windows 8 Kontext Windows Phone Windows Azure Verfügbarkeit Identity Technologie Skalierbarkeit Azure SDK Integration ALM Bausteine Schichten Abläufe Architektur Qualität Abstraktion Verteilung Dev-Ops Anforderungen Application Insights Tools Vorgehen Scrum Visual Studio online / TFS Kollaboration Projektmanagement Agile Visual Studio 2013 Anforderungen
Zusammenfassung Das sind die 3 wichtigsten Punkte, die wir Ihnen erzählen wollten: 1. Mobile Lösungen sind mehr als nur Apps 2. Mobile Services bieten Lösungen zu allen wesentlichen Aspekten von mobilen Backends 3. Agiles Vorgehen benötigt entsprechende Infrastruktur. Die Cloud ist ein «Enabler» dafür.
Besten Dank für Ihre Aufmerksamkeit Für allfällige Fragen stehen wir Ihnen jederzeit gerne zur Verfügung: Martin Weber Noser Engineering AG Rudolf-Diesel-Strasse 3 8404 Winterthur +41 52 234 56 11 martin.weber@noser.com www.noser.com blog.noser.com