Wij gebruiken cookies. Akkoord
Techorama

De hoogtepunten van Techorama 2018

15 oktober 2018 door Danny Schalken

In dit artikel lees je het verslag van twee dagen bezoek aan de Techorama 2018. Veel, behoorlijk diepgaande, informatie speciaal voor developers.

Voor wie Techorama nog niet kent: Techorama is hét kennis-event voor Microsoft Developers. Er zijn eerder al vijf succesvolle edities in België geweest. Dit jaar is het event voor het eerst ook in Nederland en wel in Cinemec in Ede. Vorig jaar was Tech-Days het event van Microsoft voor Developers, maar vanaf nu is Techorama de vervanger.

Sprekers van over de hele wereld
De Cinemec is een (grote) bioscoop waar je als bezoeker kunt genieten van (technische) sessies met, bekende en minder bekende, sprekers van over de hele wereld, maar zeker ook uit Nederland. Er wordt aandacht besteedt aan ontwikkeling, implementatie en beheer van applicaties op grote schaal, machine- en deep learning, IoT, opslag van (grote hoeveelheden) data en natuurlijk Azure, Azure en nog meer Azure. Je wordt up-to-date gebracht van welke technieken, tools en processen de wereld van IT transformeren. Daarnaast is er veel ruimte tot netwerken en kennisuitwisseling op de Expo(‘s).

Overal waar je kijkt zijn stands met bedrijven, koelkasten met drinken, schalen met eten om de innerlijke mens te verzorgen en veel mensen te vinden. In totaal waren er ruim 1.100 bezoekers, 75 sprekers en 34 partners aanwezig.

Dag 1 - Opening
Scott Guthrie opent het event. Scott is de Executive Vice President van de Cloud and Enterprise group, maar wellicht het meest bekend voor het “bedenken” van ASP.NET. Ook staat hij aan het hoofd van het Azure ontwikkelteam. Net zoals bijvoorbeeld Steve Jobs deed, draagt ook Scott (bijna) altijd de bekende rode polo met een (zwarte) jeans.

Het is tijd om de verschillende zalen af te lopen om kennis op te gaan snuiven. Een greep uit de vele onderwerpen die we gevolgd hebben zijn:

  • Agile (en Scaling er van)
  • Microservices Development
  • Docker Containers
  • Asynchroon ontwikkelen in Javascript
  • Teamwork
  • Progressive Web Apps
  • Azure Messaging
  • Azure Storage
  • SQL Performance verbeteren

En nog veel meer. Toelichting over deze onderwerpen lees je hieronder.

Scaling Agile
Tijdens deze sessie ligt de nadruk op Agile en dan met name op het gebruik van Agile door Spotify, ofwel het Spotify Model.

Spotify heeft een manier gevonden om Agile toe te passen binnen hun organisatie op grote schaal. Ze hebben hun model gedeeld met iedereen. Wat duidelijk herhaald werd, is dat dit geen “heilige graal” is, maar een manier die voor Spotify werkt.

Mocht je geïnteresseerd zijn in het hele model, check dan deze link.

Samengevat:

  • Het model is opgebouwd uit Squads, Tribes, Chapters en Guilds.
  • Een Squad is vergelijkbaar met een Scrum-team. Dit team is zelfsturend en wordt gezien als een soort mini-startup. Ze zijn verantwoordelijk voor een eigen onderdeel binnen de muziekdienst.
  • Een Tribe is een groep Squads die aan dezelfde of gerelateerde producten of diensten werken.
  • Een Chapter bestaat uit de werknemers met dezelfde expertise binnen een Tribe.
  • Een Guild is een groep werknemers met dezelfde expertise en/of interesses die niet beperkt zijn tot de Tribe maar verspreid zijn over de gehele organisatie.

De spreker, Stephan Haunts, sprak over zijn eigen ervaringen met dit model bij een bedrijf waar hij heeft gewerkt en gaf duidelijk aan dat het niet weggelegd is voor iedereen. Ze hadden zelf een eigen variant op het model van Spotify aangezien niet alles aansloot op hun eigen wensen.

Azure Dev Spaces
Het werken met microservices wordt steeds populairder en Azure speelt hier handig op in. Leuke van deze sessie was dat de spreker, Lars Klint, probeerde te achterhalen, via de aanwezige bezoekers in de zaal, wat de definitie van een Microservice eigenlijk. Iedereen bleek een andere interpretatie te hebben, maar uiteindelijk was de conclusie dat er geen duidelijke definitie is. Volgens Lars is dit dus “Een microservice doet maar één ding en doet dat goed”!

Het doel van Azure Dev Spaces (ADS) is om het werken met microservices, zonder alle hassle, mogelijk te maken. Dit houdt in dat er geen kennis van infrastructuur nodig is om microservices met elkaar te laten praten en deze services benaderbaar te laten zijn. Met minimale kennis kunnen, in de Azure Kubernetes Service, containers uitgevoerd worden met de eigen applicaties.

Een ander groot voordeel is dat je met meerdere ontwikkelaars kunt werken aan hetzelfde project, waarbij je gebruik kunt maken van hun microservices zonder dat je de broncode op de lokale eigen machine hoeft te hebben. Je kunt dus werken aan je eigen applicatie of microservice zonder na te denken over allerlei bibliotheken die je nodig hebt. Iedereen werkt dus in zijn eigen “space”.

Wat heel duidelijk naar voren kwam, is dat dit GEEN productieplatform is, maar alleen gericht op, zoals de naam al zegt, op ontwikkeling.

SQL Performance in 60 seconds
Dit was een hele energieke sessie met Pinal Dave. Voor wie Pinal niet kent; hij is een SQL Server Performance Expert en een grote (en hele drukke) Indiër met een fantastisch accent.

De zaal zat overvol. De mensen zaten op de trappen en lagen zelfs (half) over de grond om de sessie te kunnen volgen.

Enkele one-liners van Pinal waren:

‘This session will be 60 seconds long, so you’ll have plenty of time for coffee.’

‘This will be the best session after lunch.’

Leuke was dat er heel veel interactie met de mensen in het publiek was. Er werden allerlei tests gedaan met SQL-statements als “warm-up” zoals Pinal het zo mooi noemde. Er werd o.a. een weddenschap afgesloten dat, de bezoeker die op het podium werd geroepen, het antwoord goed had, dat Pinal twee burpees zou doen en als het antwoord fout was, dat de bezoeker twee burpees zou doen… De bezoeker had het goed. :)

De tips die gegeven zijn, werden ook live gedemonstreerd. Belangrijke tip was dat elke omgeving en server anders is en om de aanpassingen dan ook goed te testen door het uitvoeren van de juiste queries (die voor een vertraging zouden zorgen).

Enkele tips:

  • Zet “auto_create_statistics” en “auto_update_statistics” op databases aan te zetten om zo enorm veel performance te kunnen winnen.
  • Zet log back-ups aan, veel database beheerders vergeten dit.
  • Vergroot de “Autogrowth” limiet van de database naar 100MB in plaats van de standaard 1MB. Elke keer als die 1MB bereikt wordt, moet SQL-server nl. aan het onderliggende Windows systeem vragen om ruimte (locking).
  • Denk na over je queries, zorg er voor dat je vergelijkingen met hetzelfde datatype doet om snelheidswinst te halen. Als je bijvoorbeeld in een query waar een een integer waarde gaat vergelijken met tekst, moet sql-server op de achtergrond telkens de waarde van de record(s) converteren.

Azure Data Lake
Een van onze eigen wensen is om alle data binnen Proxsys op één plaats op te slaan en op verschillende manieren toegankelijk te maken voor gebruikers, maar ook de eigen applicaties.

Rick van den Bosch van Betabit gaf in deze sessie een introductie over Azure Data Lake (ADL) en Azure Storage en de bijbehorende tools en middelen om de data te kunnen schrijven, lezen en converteren.

Er is heel veel te vertellen over dit onderwerp, maar in essentie komt het er op neer dat ADL bestaat uit drie onderdelen, namelijk Data Lake Store, Data Lake Analytics en HDInsight. In ADL kun je allerlei data van elk type, grootte en met elke snelheid opslaan. Meteen out of the box heb je security, beheersbaarheid, schaalbaarheid, betrouwbaarheid en zeer hoge beschikbaarheid en dat alles met enkele klikken in het Azure Portal. Aangeraden werd om de PowerShell cmdlets te gebruiken aangezien de portal nog niet alles ondersteund en ook zaken aan-/uit zet waar je geen zicht op hebt.

Er is Azure AD integratie en OAuth 2.0 support voor de REST interface. Op alle data worden kunnen rechten worden ingesteld (POSIX-compliant) en al het verkeer van en naar ADL is encrypted.

ADL verspreidt bestanden in delen over verschillende server om lees snelheid te verhogen en zorgt ook voor redundante kopieën (Enterprise-Grade security).

Op alle data zijn allerlei vormen van analytics toepasbaar. Je kunt meteen andere datastores zoals je Managed SQL Instance koppelen om te laten uitlezen door bijvoorbeeld U-SQL.

U-SQL is een query language en is een soort combinatie van SQL en C# en maakt het extreem krachtig om data te transformeren of te analyseren. U-SQL kun je met bijvoorbeeld een Azure Function (periodiek of na een trigger) laten uitvoeren om bepaalde data te controleren of transformeren. Tijdens lezen van de data kun je in U-SQL het schema definiëren van de output, waarbij de output via Extractors (ook zelf te ontwikkelen) uitgevoerd kan worden in een ander format.

Vanuit PowerBI is het mogelijk, met enkele klikken, om rechtstreeks te koppelen aan ADL om vervolgens de data te gebruiken in je eigen rapportage. Enorm krachtig.

Teamwork

Binnen elke organisatie wordt gewerkt in- en met teams en je wordt doodgegooid met termen zoals “There’s no I in Team” en “Je moet samenwerken om het doel te behalen”. En dit is absoluut waar. In deze sessie werd door, Mike Wood “Lead Cloud Engineer”, vanuit zijn ervaring heel nuttige informatie gedeeld over samenwerken in een team. Er werd een vergelijk gemaakt met een basketbal team wat zeer goed op elkaar ingespeeld moet zijn om überhaupt iets te kunnen presteren.

Het was een heel verhaal. Hieronder vind je een opsomming van de kern van het geheel:

  • De missie van het bedrijf waarvoor je werkt is belangrijk om te weten. Weet je waarom of waarvoor je je werk doet? Waar pas jij zelf in het plaatje? Weet je wat de andere afdelingen doen (interesse)? Dus … weet wat het grote plaatje is. Ken je team en collega’s.
  • Be valuable! M.a.w. draag iets bij. Laat je horen/zien.
  • “Pull your weight”. Deze term komt van de Navy Seals vandaan, waar bij je gedwongen wordt om samen te werken door bijvoorbeeld het omhoog houden van zware items in het water (wat je alleen nooit zou lukken).
  • Verander de interne cultuur, dat is een van de moeilijkste dingen. Zorg dat je samen overlegd.
  • Alle ideeën zijn goed, stimuleer dat ook. Luister goed naar elkaar en beslis dan samen de weg die je wilt bewandelen. Luister naar alle viewpoints en laat iemand uitspreken. Interrumpeer niet.
  • Praat altijd over WE en ONS. Neem je verantwoording (als het mis loopt).
  • Als iets mis loopt, ga dan geen vingers wijzen, maar ga kijken hoe je het samen beter kunt doen. Wat gaan WE in gang zetten om iets op te lossen?
  • Als manager wil je weten dat iets wel of niet werkt. Als manager kun je blokkades weghalen.
  • Heb vertrouwen in elkaar en ben eerlijk! Zorg dat iedereen zich veilig voelt.
  • Zeik andere collega’s niet af, ongeacht of je er een hekel aan hebt. Zeg wat je denkt, maar dan wel tegen de persoon in een persoonlijk gesprek. Er werden vervolgens ook tip gegeven hoe je dit dan aan pakt (door bijv. diplomatiek te zijn). Moeilijke gesprekken zijn er altijd. “Ik constateer dat WE een uitdaging hebben … jij bent daar mee bezig toch? Kun je dat oplossen? Lukt dat?”.
  • “Delegation is a must”. Hier had hij een mooie anekdote bij:
  • Mike was op het kinderdagverblijf voor zijn kinderen en de “juffrouw” moest even weg. Hij staat daar vervolgens alleen en een jongetje (Bob) komt naar hem toe en staat te dansen en heen en weer te bewegen en in zijn kruis te grijpen, “the universal sign of weeing”. “Here’s a nuclear bomb, can you please defuse it? Mike vraagt vervolgens een andere jongen om met Bob naar de wc te gaan. In eerste instantie had Tommy daar geen zin in, maar Mike haalt hem over om toch te gaan. Tommy komt terug samen met Bob met een enorm stoere houding en een grote lach op zijn gezicht; hij was supertrots.
  • En als laatste … Ruim niet zelf altijd de rotzooi op voor anderen. Soms moet je samen falen om te groeien. Daarna samen de situatie oplossen. “Don’t be a superhero”.

Als extra tips kregen we mee om het boek “Extreme Ownership” te lezen en eens wat Youtube video’s van Randy Pausch te bekijken. Erg leerzaam.

DevOps Dashboarding
Een goed dashboard (met metrics) is belangrijk. In deze sessie werd het belang van een goed dashboard aan de hand van een van de meest duidelijke en meest gebruikte dashboards, namelijk het dashboard van een auto, uitgelegd.

In/op het dashboard van een auto zitten allerlei “wijzertjes” (digitaal en/of analoog) die ons informatie verschaffen en waarschuwen als er iets mis is. Ook zijn er verschillende type informatie die worden weergeven, zoals real-time informatie en belangrijke maar ook minder belangrijk informatie en informatie waar je meteen iets mee moet doen, maar ook informatie waarop later gehandeld kan worden.

Denk bijvoorbeeld aan de snelheidsmeter of het lampje dat aangeeft dat er een motorstoring is. Als je te snel rijdt moet je meteen vaart handelen en als er een motorstoring is, moet je meteen je auto laten nakijken. Maar als het lampje van de benzinemeter aan gaat, hoef je niet per direct naar de benzinepomp te rijden.

De rest van de sessie was een demo hoe je relatief eenvoudig een dashboard met metrics kunt maken door middel van een combinatie van Grafana, Katakoda, Wisper en Graphite.

A practical guide to deep learning
Machine learning is een van de grootst groeiende onderwerpen binnen de IT en Deep learning groeit zelfs nog sneller. In deze sessie werd van start tot eind gekeken naar een deep learning project. Hoe je het programma maakt tot uiteindelijk het trainen van een neural network.

Understanding Git – behind the command line
Git is het meest gebruikte versiebeheer systeem binnen de IT. In deze sessie werd er gekeken hoe de core van Git nou eigenlijk werkt en waarom Git zo krachtig is.

Git is erg handig wanneer je met meerdere personen aan een project werkt en houd wijzigingen bij per bestand op regel niveau. Als een gebruiker klaar is met zijn aanpassingen kan hij een zogenaamde `commit` maken. Deze commit bevat dan de gemaakte wijzigingen en deze kunnen dan gedeeld worden met de rest van het ontwikkelteam door deze beschikbaar te maken op de centrale server (in ons geval Azure DevOps).

Git maakt ook gebruik van zogenaamde `branches`. Een branch is wat de naam al doet vermoeden een aftakking van het project. Binnen een branch kan je aan nieuwe features werken zonder dat deze conflicteert met andere ontwikkelingen. Deze aftakking kan wanneer de feature klaar is eenvoudig worden samengevoegd met hoofd branch van het project.

Start dag 2

Join me on my TDD journey
In deze sessie vertelde Jesse Houwing en Manuel Riezebosch over hun ervaringen met Test Driven Development (TDD).

TDD is manier van software ontwikkeling waarbij voordat de functionaliteit geschreven word eerst een test word bedacht/geschreven die de functionaliteit test. Aan de hand van deze test wordt dan gekeken of de functie aan de eisen voldoet. TDD bestaat uit een vijf stappen:

1. schrijf een unit test die een aspect van het programma test
2. voer de test uit, deze moet mislukken omdat in het programma de functionaliteit nog ontbreekt
3. schrijf “net genoeg” code, zo eenvoudig mogelijk, om de test te laten slagen
4. voer de unit test opnieuw uit
5. als de test slaagt, ga dan verder met de volgende test, en anders herschrijf / wijzig de code om de test te laten slagen

Azure Service Bus (Messaging)
Dit is een van de meest interessante sessies die we gezien hebben waar we meteen door relatief weinig ontwikkeltijd, wat aan gaan hebben. Sean Feldman verteld over zijn ervaringen met de Azure Service Bus en de verschillende typen wachtrijen.

Service Bus (hierna ASB) wordt gebruikt als “backbone” voor vele systemen. Om toepassingen en services onderling te laten communiceren kunnen er berichten uitgewisseld worden door middel van een Service Bus. Een multi-tiered applicatie of systeem hoeft op deze manier niet op een zelfde locatie of systeem te staan, maar kan ook fysiek gescheiden worden en toch onderling communiceren.

Er zijn verschillende Azure Messaging diensten beschikbaar, zie hieronder, maar deze sessie ging over “Enterprise Messaging.”

Binnen ASB kun je gebruik maken van wachtrijen (queue) of onderwerpen (topics). Een wachtrij wordt in de regel gebruikt voor p2p communicatie terwijl een onderwerp gebruikt kan worden in een scenario met publiceren en ontvangen. De berichten in een wachtrij worden met een datum bestempeld en door de ontvanger uit de wachtrij getrokken (pull). Bij een onderwerp kunnen meerdere ontvangers op de bus aanmelden (“subscriben”) om de berichten te ontvangen. Ook kan bij een onderwerp gebruik gemaakt worden van filters om alleen specifieke berichten te willen hebben.

Er werd uitvoerig uitgelegd hoe ASB omgaat met berichten die verlopen of corrupt zijn door deze te dead-letteren. Ook deze speciale wachtrij kan worden uitgelezen om iets met die data te doen. Ook is het mogelijk om berichten door te sturen naar een andere wachtrij of onderwerp op een bepaald tijdstip. Verder is het mogelijk om een sessie (id) toe te wijzen aan een bericht(reeks) om zo er voor te zorgen dat alle berichten met die specifieke sessie ontvangen worden en door middel van volgnummers ook nog eens in de juiste volgorde te kunnen ontvangen. Berichten met een sessie kunnen onbeperkt op de Service Bus blijven totdat een applicatie ze nodig heeft en markeert als verwerkt.

Sean heeft door middel van verschillende demo’s laten zien hoe de ASB werkt en hoe eenvoudig het is om te starten met het gebruiken van de “Bus”.

Indexes – The unsung heroes of SQL server
Trage Queries zijn een veel voorkomend probleem tijdens het werken met SQL Server. Al snel wordt de schuld gegeven aan SQL Server voor de trage performance. Alleen in de meeste gevallen ligt het aan de manier waarop de query is opgebouwd. Tijdens deze sessie van Pinal Dave zijn veel voorkomende problemen aangehaald en onderzocht. Vervolgens zijn verschillende oplossingen gegeven op de performance van SQL Server te verhogen.

Dit was weer een hele energieke sessie van Pinal. In de meeste gevallen zweert hij het gebruik van indices af, aangezien in de meeste gevallen niet juist worden gebruikt. Het komt zelfs voor dat het gebruik van meerdere indices de vertraging van queries (exponentieel) vergroten in plaats van de performance verbeteren.

De gebruikte queries in de demo’s van Pinal zijn gratis te downloaden voor iedereen die tijdens Techorama hem een e-mail stuurde. Deze zijn dus mooi in the pocket.

Asynchronicity in JavaScript
In deze sessie werd er verteld over asynchroon programmeren in JavaScript / ECMAScript.

Doormiddel van asynchroon programmeren kun je je applicatie logica laten uitvoeren zonder dat de applicatie moet wachten totdat is uitgevoerd (synchroon) als dat gebeurt dan wordt het in het gebruikers optiek als traag of zelfs vastlopen ervaren.

In JavaScript was het al een tijd mogelijk om asynchroon te programmeren dmv. Promises. Voorbeeld:

Dankzij ECMAScript 2017 is het mogelijk om deze onoverzichtelijke code om te zetten naar het “nieuwe” async/await model. Voorbeeld:

Verder werd er nog verteld over observables dit is een soort van event bus waar je je op kunt abonneren om zo realtime data te kunnen ontvangen. Dit is nog niet mogelijk in native JavaScript er moet dus een third party library voor gebruikt worden genaamd RxJs.

Enhancing Web Pages with VueJS
Tijdens deze sessie werd er uitgelegd over het verschil tussen VueJS tov. Angular en React waarbij je bij Angular en React een transpiler nodig hebt om te transpilen* naar native javascript.

Tanspilen is het omzetten van je code naar leesbare code voor de webbrowser in dit geval van Typescript naar JavaScript.

VueJS daarentegen werkt out of the box wat betekent dat je geen extra libraries hoeft te gebruiken (op VueJS zelf na) om het te kunnen gebruiken in je web projecten.

Verder werd er een hands-on demo gegeven voor het gebruik van VueJS in een simpele AirBnB pagina waarbij component op de website door het gebruik van VueJS makkelijk aan elkaar te koppelen zijn.

Write Object-Oriented JavaScript with TypeScript
Tijdens deze sessie werd er vergeleken tussen javascript en typescript en waarom typescript nou fijner is om in te werken.

Door typescript te gebruiken krijg het volgende out-of-the-box: Typing, Classes, Interfaces, Inheritance.

Classes heb je in zekere zin ook in javascript maar is vele malen onoverzichtelijker doordat je veel meer code moet typen om hetzelfde te bereiken.

Console.WriteLine (“Thank you for visiting Techorama 2018”)
En dan zijn de twee dagen kennis opsnuiven voorbij. Al met al een zeer geslaagd event. Erg leuk en productief om samen met de collega’s twee dagen buiten het kantoor te mogen doorbrengen in Ede. We hebben zeer interessante dingen gezien. Met name Azure Service Bus, Azure Data Lake en SQL Server Performance zijn onderwerpen die we meteen kunnen toepassen en ook gaan doen.

Delen via

Altijd en overal Ongestoord en ongemerkt veilig werken

Proxsys werkt met deze partners