Älykäs paikkatietoinen ostoskärry Azure osana erittäin vähävirtaista kommunikointijärjestelmää. Marko Mattila Tuomas Tolvanen Agaidi Oy 5.3.2012 Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management @AgaidiOy, @MattilaMarko, @ttolvanen
Esityksen sisältö Agaidi Oy Mitä me teemme ja mihin tarvitsemme Azurea Case - Älykäs paikkatietoinen ostoskärry Azure ja Agaidi Cloud System -arkkitehtuuri Demo Käytännön kokemuksia Azure-palveluiden kehittämisestä Roadmap #td2013fi
Agaidi Oy We create intelligent assets that communicate their location and present real-time information from cloud Teknologia startup, jonka alkujuuret ovat enemmän elektroniikan kuin tietotekniikan maailmassa. Yhdistämme e-paperi ja aktiivi-rfid tekniikoita pilvisoftaan luodaksemme äärimmäisen vähän energiaa kuluttavan ja helpon RTLS ja informaation esittämis palvelun. #td2013fi
Omaisuudenseuranta ja informaationvälitys ratkaisu Ratkaisu koostuu fyysisistä laitteista sekä merkittävästä määrästä erilaista ohjelmistoa. Kuhunkin osa-alueeseen valittu soveltuvin tekniikka: Tagit, beaconit, DASH7 stack 16/32bit ucontroller, Bare-metal C Dash7 reader / AccessPoint ARM Linux, C++ / QT Information system Azure,.Net Agaidi RTLS Agaidi CMS Agaidi Core 3G REST DASH7 Data Center Access Point Beacon 3rd party systems #td2013fi
Miksi Azure? Kehityksen tehokkuus Helppous Kustannukset Ylläpitovastuu Skaalautuvuus BizSpark #td2013fi
Case - älykäs paikkatietoinen ostoskärry #td2013fi Konseptin tekninen testaus aloitetaan Kannelmäen Prisman tiloissa 3/2013.
Case - älykäs paikkatietoinen ostoskärry #td2013fi Konseptin tekninen testaus aloitetaan Kannelmäen Prisman tiloissa 3/2013.
Älykäs paikkatietoinen ostoskärry Ostoskärryssä on e-paperinäyttö, jossa näytetään paikkasidonnaista informaatiota kaupan asiakkaalle. Sisällönhallintajärjestelmällä hallitaan paikkasidonnaisia markkinointikampanjoita Kärryn sijainti määritetään reaaliajassa Dash7 aktiivi RFID tekniikkaa käyttäen. Kärryn saapuminen määrättyihin sijainteihin laukaisee sisällön näyttämisen kärryssä. Kärryn reitti tallennetaan kävijävirtojen analysointia varten. #td2013fi
Kehitystiimi CTO Embedded Team 2 kehittäjää Cloud Team 4 kehittäjää (1 Linux) Offbeat Solutions CMS, WAAD
Azure Agaidi Content Management CMS Application Agaidi Core System Management Integration Worker Content DB Core Worker Config DB Access Point Service 3G, REST DASH7 433MHz Access Point Beacon #td2013fi
Agaidi Cloud System Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management
Startupin tuotekehityshaasteet Minimum Viable Product Nopea kehityssykli Muuttuvat vaatimukset Ketterä kehitys #td2013fi Inkrementaalinen kehitys Arkkitehtuurinen visio Asteittainen skaalautuvuus
Arkkitehtuurinen visio Perinteinen palvelinsovellus vs. Pilvipalvelu Globaali pilvipalvelu on-site asennusmahdollisuudella #td2013fi
Arkkitehtuurinen visio Pilvinatiivin sovelluksen piirteitä Horisontaalinen skaalautuvuus ja luotettavuus pilvipalveluiden avulla Asynkrooninen, ei-blokkaava, löyhästi kytkeytynyt arkkitehtuuri Kustannustehokas resurssien käyttö Skaalautuvuus, päivitykset ja vioista toipuminen ilman käyttökatkoksia #td2013fi Bill Wilder, Cloud Architecture Patterns: Using Microsoft Azure, O'Reilly Media, 2012
Älykkään ostoskärry-järjestelmän erityispiirteet Erittäin resurssiköyhät sulautetut laitteet DASH7 radioprotokolla Tiedon esiprosessointi pilvessä Natiivi sulautettu C-koodi Azuressa Epätavalliset mobiili -laitteet 3G Access Point Eri sovellusalustat.net, Qt, embedded C Binääriformaatit, REST, JSON
Agaidi Cloud System Agaidi Content Management Shared Agaidi Cloud Backend Content Managers Content Management CMS Worker Content Blob Container Administration Access Point Service Administrators Access Point CMS Queues Core Worker CMS Database Azure AD ACS Core Database Status & Log Queues Shopping Carts Beacons
Kehitysympäristö Platform.NET 4.5 ASP.NET MVC 4.5 WCF REST Services / ASP.NET WebApi Kirjastot NHibernate, Autofac, FluentMigrations, Json.NET, log4net Windows Identity Framework Twitter Bootstrap, KnockoutJS, Typescript
Kehitysympäristö Kehitysvälineet Visual Studio 2012, Resharper Git, PowerShell, MSBuild Jira, Stash, TeamCity
Web Autofac IoC Repository Server MVC Browser MVVM View Controller Model Contract REST/ JSON View View model Model Contract Model Data Access Interfaces ASP.NET MVC 4.5 Typescript+ KnockoutJS + jquery Queue DB Blob
Web Api Autofac IoC Server Web Api Access Point Controller Data Contract REST/ JSON Rest Client Data Access Interfaces Model ASP.NET 4.5 Web Api Linux + Qt Queue DB Blob
Autofac IoC Worker Server Worker role MessageProcessor Data Access Interfaces Model Azure Queues Queue DB
Demo Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management
Autentikaatio ja käyttöoikeudet WS-Federation protocol SAML 2.0 tokens Identity Claim Azure Active Directory Security group Graph API Get Security groups for user (Graph API) Administrator Administration UI Role Claim Windows Identity Frameworkv Lisätietoa: http://blog.rytmis.net/archive/2012/12
Ylläpito CMS Worker Site Layout Location CMS Database Content Blob Container Administration UI Configure Site Administrator Site Beacon Core Database Access Point Shopping Cart Layout Location
Sisällönhallinta CMS Database ROCKS! Content Manager Promotion Screen Text Image Content Management UI Rocks! Promotion Screen Text Image Content Blob Container Core Database Core Worker Notification queue GetContentAction
Access Point kommunikaatio GetContentAction Core Database Select actions Delete action Access Point Service Get action queue Delete action Access Point
Access Point kommunikaatio Content Blob Container Get content blobs Access Point Service Get new contents Access Point Rocks! Screen Image Text Core Database Select contents Content package Content package Content package Content package Content package
Kokemuksia Azurekehityksestä Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management
Deploy-automaatio kannattaa Powershell + Azure PowerShell Cmdlets FluentMigrations $deploymentenvironment = getgitbranchname Invoke-Expression $msbuild Get-AzureService -ServiceName $servicename Set-AzureDeployment -ServiceName $servicename Upgrade Mode Auto -Force -Slot "Production" -Package $package -Configuration $serviceconfiguration -Label $label FluentMigrator\migrate.exe -a $migrationsassembly git tag -f -m $deploymenttag -a $deploymenttag git push origin $deploymentenvironment --tags
Käytännön kokemukset Git branchit ja tagit TortoiseGit + Visual Studio Git Tools Stash - Pull Requests
Käytännön kokemukset Pilvidebuggaus haastavaa Puuttuvat DLL:t Käynnistyksenaikaiset virheet Lokitus IntelliTrace + Trace.WriteLine Remote desktop log4net lokaali lokit ja log4net.azure
Käytännön kokemukset Rajapinnat muuttuvat usein Azure Tools, WAAD Extra Small -instanssi on käytännössä erittäin pieni Jaettu CPU, Muisti ja IO Deploymentit käynnistyvät hitaasti IIS 8.0 Application Initialization module
Roadmap Jatkokehitysteemoja Access Control Service ja Käyttöoikeushallinta Transient Error Handling Storage Queuen ja Blob storagen tehokkaampi hyödyntäminen Access Point-rajapinnassa Hajautetut Cache-ratkaisut Azure Service Bus ja SignalR reaaliaikaiseen kommunikaatioon
Lisätietoa Agaidi ja ostoskärryt startup-osastolla Web: http://www.agaidi.com Twitter: @AgaidiOy @MattilaMarko @ttolvanen
Thank you for coming! Feedback can be given via mobile or laptop through techdays.fi seminar schedule. 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentations. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. #td2013fi