zondag 22 september 2013

Van infrastructuur naar platform

Ook als software ontwikkelaar lukt profiteren van cloud computing niet zonder veranderingen. Als traditionele software naar de cloud wordt gemigreerd is dit vaak op basis van Infrastructuur as a service. Dit is geen keuze die je veel verder zal brengen en van kostenbesparing is al vaak geen sprake meer. Lees nu hoe het dan wel moet.


Van de week mocht ik een seminar van een uur geven aan een groep Java ontwikkelaars. De eerste dertig minuten heb ik besteed om een basis te leggen wat cloud computing is, het laatste half uur heb ik een demonstratie gegeven hoe ik niet 1, maar twee platformen heb gebruikt om een dienst vanaf scratch te ontwikkelen en te deployen naar de cloud.

Dit op basis van een schaalbaar, robuust en veerkrachtig platform die zich automatisch aanpast naar de omstandigheden. De essentie is dat er gebruik gemaakt wordt van automatisering. Iets wat zelf heel veel geld en tijd zou kosten om zelf te realiseren.

Ik kan bijna niet genoeg benadrukken hoe belangrijk het is om dit als software ontwikkelaar te onderzoeken. Dit negeren is een zonde en kan in de toekomst het verschil tussen succes zijn en het opereren in de marge.

Traditioneel
Stel je biedt een dienst aan op basis van Software as a service. Je ontwikkelt code, richt een database en een server in en om de zoveel tijd deploy je de code naar de test omgeving zodat deze geaccepteerd kan worden voor de productieomgeving.

Vaak is de productieomgeving omvangrijker dan de test omgeving en wordt het in de lucht houden van de omgeving gedaan door beheerders. Het opschalen (neerschalen wordt niet gedaan in traditionele omgevingen) is iets wat gepland moet worden en veelal veel geld, tijd  en hoofdbrekens kost.

Als dit uitbesteed wordt naar de cloud is dit altijd op basis van Infrastructure as a service. Hiermee zijn de kosten welliswaar operationeel, maar kan er van besparing geen sprake zijn. Je hebt gewoon je spullenboel elders draaien met alle bijkomende kosten die daar bijhoren. Ja, je kunt zeggen dat je de cloud geadopteerd hebt, maar per saldo schiet je er niets mee op.

Platform as a service
Om echt een hefboom te verkrijgen die leidt tot minder kosten, betere schaalbaarheid, robuust en flexibeler is met lagere beheerkosten zul je moeten overschakelen naar Platform as a service. Aan de ene kant zijn de verschillen om dit te realiseren niet heel groot. De essentie van de geproduceerde code is vaak niet heel anders en de manier van deployen is vrij simpel als je van diensten gebruik maakt zoals Windows Azure of Amazon Webservices. Het Windows Azure platform leent zich overigens vooral voor Windows .NET code, Amazon Webservices kan veel breder toegepast worden.

Wat er gebeurt is dit: Er is een configuratie ingesteld voor de software. Deze is anders voor Windows Azure dan voor Amazon Webservices. In deze configuratie staat o.a. welk type server in de basis gebruikt wordt en een aantal eigenschappen zoals geheugen, processor en dergelijke. Ook naar welk abonnement gedeployed wordt en hoe de omgeving heet en over welke URL deze benaderd wordt.

Als er op de deploy knop gedrukt wordt gebeuren er zeer veel dingen onder de motorkap. Er worden virtuele servers aangezet, certificaten geïnstalleerd, virtuele load balancers geplaatst en een aantal business rules geactiveerd. Een voorbeeld van een businessrule is bijvoorbeeld dat als de CPU van een server meer dan 80% gebruikt wordt voor drie minuten er een server wordt bijgeplaatst en als de CPU van een server langer dan drie minuten onder de 30% komt er een server wordt weggehaald tot een minimum van twee servers.

Een detail wat je op het eerste gezicht niet ziet, maar bijdraagt aan de "resilience" is dat elke server in een ander "fault domain" draait. Vrij letterlijk is dit een ander serverrack in het datacenter en dat het "cloud OS" weet dat de servers met elkaar in verbinding staan en bij onderhoud dus nooit twee server tegelijkertijd een update krijgen.

Maar het zit hem in deze automatisering die cloud computing zo aantrekkelijk maakt. Je kunt op een vrij gemakkelijke manier op een hele robuuste manier met online software omgaan. Dit is wat het een platform maakt.

Aandachtspunten
Overigens zijn er wel degelijk dingen anders als je software op een platform van Amazon of Microsoft deployed. Zo heb je geen invloed op de servertijd. Alle servers in de cloud ongeacht locatie draaien op UTC tijd. Dit betekent dat je direct vanaf de basis hier rekening mee moet houden aangezien de tijd van je klanten (en dus hun browser) niet overeen komt met de tijd op de server. Het is geen ramp, maar wel iets wat je in het ontwerp mee moet nemen.

Ondanks dat de data opslag en rekenkracht schaalbaar en elastisch is opgezet, gaat dit niet zomaar op voor relationele databases. Ook hier heb je met beperkingen te maken en dingen die in de cloud anders zijn dan on-premises.

Niettemin adviseer ik bedrijven om in ieder geval een account aan te maken en ontwikkelaars ervaringen op te laten doen. Door het gebruiken van de diensten komen ze op ideeën die ze na kunnen bouwen. Er is geen excuus om dit links te laten liggen omdat je Amazon of Microsoft afkeurd. Daarnaast gaat de ontwikkeling van de diensten griezelig snel. Bijna wekelijks komen er nieuwe opties in de portal of worden verdere principes uitgewerkt.

Ik ben er dan ook voorstander van om de diensten zo "kaal" en puur mogelijk te consumeren, dit voorkomt aanpassingen bij veranderingen en maakt een exit ook beter mogelijk en maakt een vendor lock-in zo klein als mogelijk. Er zijn veel diensten die de huidige problemen met cloud computing op kunnen lossen. Als die noodzakelijk zijn om live te kunnen gaan, kun je ze inzetten, maar gebruik ze vooral als een losse en vervangbare extensie en verweef ze niet in teveel in de oplossing zelf.  Als de ideeën van deze extensies namelijk goed zijn worden ze vanzelf overgenomen of nagebouwd.

Conclusie
Kortom, bouwen op een platform heeft zeer veel voordelen en weinig nadelen. Met minder mensen meer kunnen doen in kortere tijd met een verbeterde kwaliteit en controle en veiligheid. Het klinkt bijna te goed om waar te zijn. IT simpel maken is een basishouding die elke software ontwikkelaar zou moeten adopteren en verschuiven van infrastructuur naar platform is een zinvol middel. Nee, het is nog niet af, nog niet compleet, maar het komt dicht in de buurt en de ontwikkelingen gaan razend snel.

maandag 9 september 2013

Nexus 7 2013: Eerste bevindingen

De dag dat de nieuwe Asus Nexus 7 32 GB 7 inch tablet in Nederland wordt aangeboden heb ik hem aangeschaft voor 269 euro. Bij deze deel ik mijn eerste bevindingen. 

Een van de redenen voor mijn aanschaf is dat ik geen ervaring met Android heb. Natuurlijk kijk ik wel eens mee op iemand zijn telefoon, maar echte hands-on ervaring heb ik niet. Ik heb wel een iPhone 4s met IOS 6 en een 2e generatie iPad. De overeenkomsten en verschillen wil ik hierin meenemen.

Voor een goede review waar ik het mee eens ben, zie:
http://tweakers.net/reviews/3147/de-nieuwe-nexus-7-de-beste-kleine-tablet.html

Eerste bevindingen

Eerst een paar eigenschappen die mij direct opvallen:
- Zeer veel waarde voor je geld
- Prachtig scherm
- Heerlijke behuizing
- Goed geluid
- Gelikte animaties in Android 4.3
- Leuke extra's zoals NFC, draadloos opladen (niet inclusief), aansluitmogelijkheid USB stick of externe harde schijf (vereist extra kabeltje)

Het concept van de Nexus -goedkope tablet met goede specificatie- sprak mij al aan bij de eerste versie van de Nexus 7, maar de goede reviews van de nieuwe versie trokken mij over de streep om wat vlieguren met Android op te doen. De iPad doet heel goed wat het moet doen en Android sprak me nooit zo aan, maar ik moet wel weten waar ik over praat en nu was er een perfecte reden om een apparaat met Android aan te schaffen.

In de winkel werd er weinig ruchtbaarheid gegeven aan de lancering, er waren er in ieder geval voldoende op voorraad. Bij het uitpakken vind je twee dingen: Een micro USB oplader en de tablet. Zeker in landscape modus is hij groot genoeg om te internetten en hij houdt heerlijk vast en doet best luxe aan. Het scherm is schitterend met kleuren en een ongeloofelijke resolutie van 1920 x 1200 pixels, evenveel als mijn 24 inch monitor en deze is meteen gedegragdeerd tot blokkerig scherm. Ik ben een Google gebruiker en aan de gang gaan is een fluitje van een cent. Android zit goed in elkaar en Nexus 7 heeft alleen een knop voor aan en uit en voor volume. De Home, Terug en Multitask knoppen worden gewoon op het beeldscherm geprojecteerd.

Veiligheid

Bij het installeren van diensten en apps krijg ik wel een unheimlich gevoel dat ik keuzes maakte waarvan in de impact niet goed in kan schatten. Elke app vraag bepaalde toestemming die in sommige gevallen erg duister overkomen zoals "kan geslagen data veranderen en verwijderen" zonder dat er bijvoorbeeld een scope gesteld wordt als "binnen de applicatie". Eigenlijk in het verlengde hiervan vind ik Android minder geschikt voor kinderen en ouderen die eigenlijk geen clue hebben, IOS is wat dit betreft nog echt heer en meester. Het lijkt er in ieder geval op dat malware meer kans krijgt op Android en ik vroeg me ook wat dingen af, als "hoe voorkom ik toegang tot mijn data als mijn tablet gestolen wordt?" en zelf gebruik ik 2-staps authenticatie welke niet meer nodig is nadat je deze eenmaal hebt ingevoerd. In hoeverre kunnen apps de API's van Google aanspreken onder mijn credentials?
Ik heb de antwoorden nog niet, maar dit zijn wel aandachtspunten en bedenkingen die ik heb.

Indrukwekkend

Eén ding die Android 4.3 in ieder geval kan en welke een zeer krachtig voordeel zijn is dat je de tablet met meerdere accounts kunt gebruiken, ook kan ik een profiel voor de kinderen maken die dan maar beperkte toegang tot zaken krijgen en bijvoorbeeld geen in-app aankopen kunnen doen. Dit is technisch gezien heel complex en echt een voordeel t.o.v. IOS. Wellicht dat IOS 7 hier ook wel wat mee doet, maar Android was hier in ieder geval sneller mee.

Dan het scherm en geluid. Ik bekeek een paar YouTube trailers van films en wow! ik was meteen onder de indruk. Wat een scherm en wat een goed geluid voor zo'n kleine en goedkope tablet. Wat ik wel weer een nadeel vind is dat ondanks dat de Nexus heel breed is, je bij het bekijken van de trailers nog steeds een flinke zwarte balk hebt waarop je niet een klein stukje in kan zoemen, iets wat bij de iPad wel kan.

De batterij lijkt ruim voldoende overigens. Ik heb best al een paar uurtjes gespeeld met brightness voluit en de batterij is nog niet half leeg. Overigens had ik de buienradar app even gebruikt, en dit bleek wel een batterij killer, zelfs niet op de voorgrond begon deze door GPS gebruik mijn batterij te consumeren. Een “slecht” ontwikkelde app heeft dus direct impact op je batterij. De tools die meegeleverd worden om dit te zien heb je in IOS niet.

Prestaties en multitasken

Een ander ding wat positief opvalt zijn de prestaties. Niet alleen ziet Android er best gelikt uit, de apps presteren alsof het een high-end tablet is en dat gevoel heb ik bij alles, het gevoel dat ik een duur en snel apparaat heb gekocht. Maar toch... hapert er af en toe iets. Dan druk ik ergens op en gebeurt er niets. Iets wat ik bij mijn relatief oude iPad (2e generatie) nagenoeg niet mee maak. Ook het scrollen is niet consistent. Af en toe gaat het te rap, af en toe te langzaam en meestal is het gewoon net iets minder intuitief. Kortom, IOS is op dit gebied nog echt heer in meester in mijn ogen.

Een ding waarbij Android echt de tafel aanveegt met IOS is multitasken, wat heerlijk simpel werkt dat met rechter van de drie (virtuele) knoppen onderaan. Kiezen, switchen, maar vooral ook beeindigen gaat geniaal. Het lijkt erg op wat ik zo aantrekkelijk vond aan Palm OS. Ook het notificatie centrum links boven in het scherm werkt erg prettig. Een ander ding wat me opvalt is dat mijn WIFI extreem veel sneller is op de Nexus 7 dan op mijn laptops of de iPad. 3 MB per seconden met gemak.

Voorlopige conclusie

De nieuwe Nexus 7 32 GB Android tablet is voor 269 euro echt een zeer goede koop. Je kunt je afvragen of je 7 inch niet te klein vindt, maar door de hoge resolutie is het in ieder geval prima werkbaar. Het scherm, geluid en bouwkwaliteit voelen aan alsof je een high-end product hebt gekocht en ik ben er dus erg blij mee.

Mijn eerste indruk van Android is goed, 4.3 ziet er gelikt uit en is prima mee te werken. Dat je het apparaat met meerdere mensen kan gebruiken is echt een krachtige toevoeging en het switchen en beeindigen van programma's gaat veel beter dan IOS. Toch is IOS eenvoudiger in gebruik, hapert vrijwel nooit en is ongeevenaard wat scrollen en zoomen betreft.  Android is niet voor kleine kinderen en ik zou het mijn moeder ook niet direct aanraden, maar Android is enorm gegroeid de laatste jaren al heb ik mijn twijfels bij de veiligheid, deze kan ik vooralsnog niet onderbouwen met feiten.

Android en het ecosysteem heeft overeenkomsten met IOS, maar zeker ook verschillen. Android is niet per se minder of beter dan IOS, en hoewel IOS wel wat dingen mist, of achter loopt, is de beleving net wat soepeler. Een Android tablet kost me gewoon meer inspanning in gebruik dan een iPad.

Ik zal dit topic wellicht nog de komende dagen aanvullen aangezien ik de Nexus 7 koud 48 uur heb.