AppFabric m Velocity distribueret cache

25. January 2010

På et site som Arena365, som jeg bruger en del tid på, er der så mange små datachunks hist og pist at caching er en nødvendighed.

I starten er det fint nok at bruge den indbyggede HttpRunTime.Cache der gemmer data i applikationens IIS process, men hvis man har brug for at skalere ud til flere webservere kan være en fordel at have en central cache.

Velocity er microsofts bud på en distribueret cache. Andre kendte alternativer er kommercielle NCache eller open source varianten Memcached.

Velocity er en del af det som bliver markedsført som Windows Server AppFabric, og det er endnu et codename, som iflg ScottGU bliver erstattet af noget lidt mere enterprise-venligt senere. Windows Server AppFabric skal forstås som et samling af services som ligger ovenpå IIS’en og der findes også en AppFabric variant på Azure, som tilbyder nogle andre lidt mere mesh-agtige services.

Nå, men det er altså den distribuerede cache jeg kigger på her.

Hvis du ikke gider læse mere, skal du se denne session fra PDC09: Scaling Your Data Tier with Windows Server AppFabric

Anvendelsesmuligheder

Velocity kan med en enkelt linje i web.config plugges ind som session store. Og når session storage er afkoblet fra webserver processen åbner det op for nogle interessante muligheder ift skalering. Det er ikke meget anderledes end at bruge den gode gamle Session State Service, vi nok allesammen har haft fingrene i.

Man kan i øjeblikket ikke på samme måde lave en one-liner replacement af den almindelige HttpRuntime.Cache, så hvis den skal skiftes ud, er det lettest, hvis man i forvejen har pakket den funktionalitet ind.

I mit tilfælde havde vi i forvejen pakket den ind i en WebCache klasse, der implementerer et ICache interface med et passende antal metoder, så jeg lavede blot endnu en ICache implementation, VelocityCache, på 15 minutter og var i luften med det samme.

Output Cache kan ikke skiftes ud i øjeblikket, men bliver i Visual Studio 2010/ .Net 4 skrevet om til en Output Cache Provider, som Velocity vil kunne hooke ind i på samme måde som Session Store Provideren.

Vi bruger NHibernate på Arena365 og NHibernates 2nd level cache er pluggable med en mindre hær af forskellige cache providers, herunder også en til Velocity. Som jeg i skrivende stund ikke har afprøvet endnu, men mine erfaringer vil snart erstatte denne sætning.

Det kan være en enorm fordel på en udviklermaskine at have en cache-provider, der overlever builds og IIS restarts, og det kan over tid spare en for en del fingertrommen.

Installation/Opsætning

Denne post beskriver opsætningen af betaudgaven af Microsoft Distributed Cache, aka Velocity, som er en del af Microsoft AppFabric. (få den her)

Jeg oplevede et enkelt problem under installationen:

Problem 1: “Failed to apply Distributed Cache Configuration ”
Løsning 1: Opret en tom database i sqlserver og sørg for at brugeren NT Authority\System er db_owner. Når du vælger at lægge konfigurationen i sql server under installationen, så tryk på “edit” og vælg derefter den tomme database.

Administrationen af Velocity gøres gennem en powershell console, så den starter man op (genvej i programs menuen)

Brug dette cheat sheet. Det dækker en CTP3-releasen, men virker også til Beta-versionen. Du kan også få hjælp indefra PowerShell med denne kommando:

PS>Get-CacheHelp

Nå, men start Velocity:

PS> Start-CacheCluster

Derefter kan du verificere at der er hul igennem med
PS> Get-Cache
- denne returnerer en enkelt række, cachen “default”

Og få en liste over cache hosts i dit cluster med
PS> Get-CacheHost

Så, nu er Velocity oppe at køre, vores cache server er i luften.
Det var første halvdel.

Når der er puttet items i din cache, kan du trække stats fra din “default” cache sådan her:

PS> Get-CacheStatistics default

Cache klienten

Start evt. med at downloade kode-samples.

Den nemmeste måde at konfigurere sin cache client på i et ASP.NET website (webforms eller MVC) er at smide et par linjer i sin web.config:

<!-- Velocity Cache Configuration -->

<section name="dataCacheClient" type="Microsoft.Data.Caching.DataCacheClientSection, CacheBaseLibrary" allowLocation="true" allowDefinition="Everywhere"/>

<datacacheclient deployment="simple" timeout="150000">

<localcache isEnabled="true" sync="TTLBased" ttlValue="300" />

<hosts>

<host name="localhost" cachePort="22233" cacheHostName="DistributedCacheService"/>

</hosts>

</datacacheclient>

Nu kan du inde i din cache klasse initialisere cachen med

var cacheFac = new DataCacheFactory();
var cache = cacheFac.GetCache("default");
cache.CreateRegion("myregion", true);

Udfordringer

Et par ting jeg er stødt på.

Indtil videre understøtter Velocity ikke sliding expiration på cache items. Det skyldes at man ved hver cache access vil være nødt til at updatere timeouten på samme item i hele clusteret. Og det er ikke just definitionen af high performance. Det kan lade sig gøre at updatere timeout, men det er ret tydeligt for udvikleren, at det ikke er en gratis operation.

Cache Servicen kan ikke overleve sleep og hibernate på min windows 7 laptop. Det er lidt irriterende at man ikke bare kan have den kørende uden at skulle nurse den flere gange dagligt.

Links

AppFabric

Windows Server AppFabric Beta 1 Samples

PowerShell cheat sheet til CTP3

Session fra PDC09: Scaling Your Data Tier with Windows Server AppFabric

Hej igen du danske muld/mudder

22. October 2009

Don't HonkEr tilbage fra en fantastisk honeymoon i New York!
En del møgvejr og en forkølelseshammer der tog lidt af smagen ud af en 2-stjerners michelin restaurant kunne ikke ødelægge det!

Indtil videre er der et Flickr Set her.
Og der finder man også denne 58 sek video, som er skudt med mit nyindkøbte ultrabillige kodak zi8 lommevideokamera, der går for sølle $180 og altså leverer HD video fra lommen for under en tudse. Det skal der lige eksperimenteres lidt med.

Musikken er The Avett Brothers, som vi var til koncert med på Terminal5, et superfedt spillested på westi Vega-størrelse, lidt mere hærget og med en ekstra balkon. Avett Brothers kan minde lidt om Sufjan Stevens med lidt mere knald på og lidt mere country. Jeg ved ikke hvor store de er i USA men til den udsolgte koncert virkede det som om det var Le Shit.

Podcastet om Arena365 tech

14. October 2009

For et par uger siden blev jeg interviewet af Daniel Mellgaard Frost, Developer Evangelist hos Microsoft, om de mere tekniske aspekter ved Arena365.com.

Jeg har ikke den store erfaring med at blive interviewet, og min øh-koefficient er noget højere end jeg bryder mig om. Og så kan jeg konstatere at “Man kan sige at” for mig er en fast vending når jeg prøver at forklare noget teknisk.

Vi taler om arkitekturen - Asp.Net MVC + NHibernate, valideringsframeworket xVal, valg af jQuery fremfor MS AjaxHelpers og meget andet, herunder udvikling af sportsligt talent og min mangel på samme.

Der er en enkelt passage hvor jeg forsøger at overtage Brian Rasmussens StackOVerflow identitet i en bisætning. Det var den digitale vaneforbryder, der viste sit ækle ansigt. Undskyld Brian. Men du har bare så meget EXP og jeg har kun 509

Stilen er let omend teknisk, lydkvaliteten er lidt ussel og du kan finde det hele her:

Frosts’ Podcast Show #2 – Arena365.com med Christian Dalager

Fremtidsoplæg hos DANSK IT

11. September 2009

Jeg holdt i går eftermiddags et non-tech oplæg på et møde om IT og velfærd hos DANSK IT om hvor vi måske havner i år 2020.

Titlen på oplægget er “Tid til Transparens”, og handlede bl.a om: det svære ved at se ind i fremtiden, om at facebook-vejen ikke er nødvendigvis er den bedste i offentlige it-systemer, om mere åbenhed, standardisering og deling. Og afslutningsvis en ønskeseddel til fremtiden.

Bonusindhold: flyvende biler, sølvdragter, Kristian Jensen i Second Life og en personlig henvendelse fra Djoanna Jensen til Lars Løkke.

Men man skulle nok have været der. Bladr kun de slides igennem, hvis du venter på at din kaffe bliver så kold at den lige akkurat kan drikkes.

10 slides 4U: danskit100909.pdf

Medoplægsholdere: Andreas Johannsen (@andjohan), Christian Schwartz Lausten (@unwiredchris), Morten Østergaard (@oestergaard) og Lars Konzack.

Arrangementet er inspireret af artiklen Kultur-nørdernes indtog, om Konzacks forskning.

Lancering: Arena365

26. August 2009

Det er med grøde i stemmen at jeg må præsentere et nyt webprojekt, jeg har været med til at lave:

Tag godt imod Arena365.com!

arena3651

Det er et niche-netværk for sportsudøvere og aktiv-livsstilere og har et klart social aspekt: planlægning for hold og grupper med diverse features.

Udover det sociale er der også en individuel vinkel med træningsværktøjer, som træningslog, ruteplanlægning og en personlig motivations GTD-style feature der hjælper dig med at holde nallerne fra kagerne.

Og så er der brugt en bunke tid på at lancere på seks forskellige sprog fra starten af – check f.eks. denne screencast på italiensk (lidt grynet, desværre, men sproget ræser derudaf!)

Vi har en masse spændende ting vi gerne vil med sitet, og vi har fyldt et tegnebræt på et par hektar og der er flere ideer i kø bagved.

Det er mange år siden jeg har været med til at launche ting, som må vises til verden, og det er vildt fedt og minder mig om, hvorfor jeg overhovedet havnede i denne branche. Yay!

Nå, men den lidt officiel konceptbeskrivelse lyder sådan her:

Vi har udviklet Arena365, fordi vi gerne vil hjælpe dig med at leve et sundere og mere aktivt liv. Derfor har vi skabt rammerne og værktøjerne til at hjælpe dig godt på vej. Planlægning, kommunikation, motivation og kontakten til dit netværk er i højsædet hos os. Vores mål er at gøre sport og aktiv livsstil lidt sjovere og langt lettere for dig, dit hold, din familie og alle dine venner.

For de tekniske

Sitet er bygget i ASP.NET MVC med et NHibernate datalag. Det er mit første projekt med den teknologi, så der er naturligvis blevet smidt nogle lærepenge over disken undervejs, men det er en meget motiverende arkitektur at arbejde med.

Jeg har i et tidligere blogindlæg beskrevet stacken, og siden da er der kommet nogle yderligere ting til.

Om

Arena365 er lavet i et samarbejde mellem kommunikations- og PR-bureauet Essencius og softwarebiksen Eksponent, hvor jeg arbejder.

Omtale

Ærligt navn til mad

23. August 2009

Jeg skriver meget sjældent om mad her på stedet – ikke fordi jeg ikke har holdninger til mad, for det har jeg skam.

F.eks. kan jeg godt lide tunfisk. Og rødt kød. Og broccoli.

Men som I kan se, er det ikke særligt underholdende, så det sparer jeg gerne folk for.

Strandet i Grenaa i weekenden stod jeg i en pizzaindkøbssituation hvor jeg havde en madoplevelse, jeg ikke vil spare folk for, da det ville være oplevelsestyveri.

Here goes. Uden så meget snak.

Nr 19, Den mest ærligt navngivne pizza nogensinde:

Opgraderet til Windows 7 x64

15. August 2009

Jeg brugte det meste af fredag aften på at installere Windows 7 på min arbejdsmaskine mens jeg så lidt slamtv henover (cowboy jack anyone?).

Da jeg har en deadline, der hastigt nærmer mig, og da min nuværende installation er under et år gammel, tog jeg chancen og gik efter en opgradering i stedet for en ren installation, der alt andet lige tager en rum tid.

Bortset fra at jeg skulle afinstallere Sql Server 2008 først, så gik opgraderingen strålende, selvom jeg var lidt bekymret for hvad der ville ske med mit .NET udviklingsmiljø og alle de øvrige programmer og indstillinger som gør at jeg kan arbejde nogenlunde effektivt.

Alt spiller tilsyneladende, og jeg skal ikke bruge de næste 3 uger på at installere glemte småprogrammer og skrue på environment variable.

Et par noter:

  1. Sql Server 2008 skal have en SP1 for at køre
  2. Man skal lige vænne sig til docken, tror jeg. Men den virker nice
  3. Der er blevet brugt en del energi på at forbedre app-switching og window layout, lidt inspireret af OS X, men faktisk lidt federe ikke mindst fordi der er 100% tastatursupport
  4. hvis man trykker på windowstasten og begynder at skrive, så har man faktisk en velfungerende app-launcher, der også kan gætte mappenavne.

Resten opdager jeg nok hen ad vejen.

PS: Jeg tog en fuld backup af mit system inden. Og det skal du også gøre, hvis du ikke vil risikere at blive fanget i det Swedenborgske rum.

PPS: jeg prøvede at lave en ironisk-sjaw tweet i aftes om at Win7 er overmeget federe end os x. (inspireret af et joco tweet)Tror ikke ironien kom igennem. Nåmenaltså: Win7 er et udmærket operativsystem. OS X er også et udmærket operativsystem. Jeg arbejder på begge to og er ikke religiøs, men var jeg ikke .net udvikler, ville jeg stensikkert køre fulltime OS X.

1. august på rådhuset eller ved stranden

27. July 2009

Så er den ved ved at være der. Voksenhedens næste milepæl. En af de gode af slagsen.

Ingen old school annoncer i avisen men her, så:

Trine aka Tante Lilla aka trinetrine og Christian aka dalager aka mig bliver d. 1. august kl 12:00 borgerligt viet på Nordmolen, Amager Strand (plan A, godt vejr) eller i borgerrepræsentationssalen, Københavns Rådhus (plan B, møgvejr).

Hvis du har lyst til en gang globryllup, så skal du være så velkommen!

Check http://trinetrine.dk/hvadskerdermeddetbryllup/ om formiddagen, hvis du vil vide, hvor det skal stå.

Det her er så meget mig

1. July 2009

Qwertial Aphasia
“Qwertial Aphasia”

(Tegning fra min favorittegneserie XKCD der som et kendetegn har metakommentarer i tooltips, når man holder musen over billedet)

Reboot11

28. June 2009

by tlossen @ flickr Endnu et Reboot er gennemført.

Som altid står jeg tilbage med en masse nye ideer og endnu mindre tid end jeg havde før.

Hørte gode taler, talte med en masse mennesker og fik lavet alt alt for lidt praktisk legeri, selvom der lissom var lagt meget op til det. Not so much action fra min side. Skam på mig.

Kiggede over skulderen på WIFI cykelbygggere, og blev fascineret af hvor elegant og enkelt det kan være at skrue et mobilt solcelledrevet accesspoint sammen: Re:Bike

Middagssnak med Peter Rukavina, Olle og Luisa om 100-timers tegning, ansigtsgeometri, RFID (mere om det senere), living by numbers, motionsmotivation og berigelse af bankdata.

Afterpartysludder med Moltke om sociale ruter

Goodiepal gav mig lyst til at blive lidt mere sindssyg.

Matt Webb gav mig lyst til at bruge 100 timer på at lære noget nyt. Og til at kyle noget data i nogle algoritmiske chernoff faces.

Bruce Sterling sagde at vi kommer til at leve i en mørk eufori og gav mig lyst til at leve lidt mere simpelt. (weinberger notes) Smed efterfølgende en masse tøj ud. Brugte det aldrig.

Og så var der Mark Wubbens præsentation om Homemade UbiComp, som jeg desværre ikke så, men hans slides med noter og seje links kan bruges alene.

PS: der er nogle interessante videoer fra reboot her: video.reboot.dk

PPS: se de fantastiske hoppende deltagere i slowmotion