Jfokus 2012: 3 x Continuous och annat

Jag tror att Jfokus kan bli en stor miljöförkämpe framöver. Om de håller årets nivå eller bättre finns det helt enkelt ingen kunskapsmässig anledning längre att resa långt för att få kompetent och inspirerande info som Java (JVM-baserad?)-utvecklare i Stockholm. Här nedan har jag summerat mina intryck – som inte alls är heltäckande förstås för konferensen. Jag är trots allt bara en enkärnas CPU och skalar dåligt till flera lokaler.

CONTINUOUS
Ett av ledorden på Jfokus var Continuous. Det togs upp på flera plan och jag tolkade dem så här:

– På ett högre plan är Continuous Delivery (CDiv), vilket är löftet om att leverera produkter affären behöver (inte att förväxla med vad de vill) när det är affärsmässigt lämpligt. I praktiken innebär det att produkten alltid är redo att produktionsättas, men affär beslutar när nya produkter/features publiceras. Tekniskt kan det åstadkommas genom att produktionsätta med feature toggles (funktioner som kan slås av/på) eller dark launch (t ex backendfunktionalitet som inte syns)

– För Continuous Deployment (CDep) är fokus att få ut ändringar i produktion så fort som möjligt med så lite motstånd som möjligt. Det innebär att alla ändringar produktionsätts direkt efter rigorösa automatiska tester. Ändringarna är så små att risk för fel i produktion minimeras. Man rullar aldrig tillbaka utan driftsätter istället bättre kod. CDiv är i praktiken CDep fast det är ett affärsmässigt beslut att trycka på deploy-knappen när ändringar samlats ihop till något vettigt (minimal marketable feature)

– Continuous Integration (CInt) har fokus i början av leveranskedjan (delivery pipeline) där varje ändring som checkas in i källkoden plockas upp av byggserver, genomgår tester och resulterar i distributioner som kan driftsättas automatiskt i testmiljö och automatiskt/manuellt i produktionsmiljö. CInt är alltså en förutsättning för CDep och CDiv

Rådet som alla ger är som vanligt “gräv där du står”. Börja automatisera det du kan från vänster till höger – bygge, test, driftsättning i test/prod, mät och följ upp. Här kan konceptet DevOps hjälpa till, vilket i stort sett går ut på att riva muren mellan utvecklings- (devs) och driftavdelning (ops). Det kan vara en person som funkar som en brygga mellan dessa eller ett förhållningssätt, t ex att en ops är med i projektteamet.

Det finns förstås flera utmaningar med detta – t ex att gå från arkitektur (svårt att ändra) till design (lättare att ändra), kunna ändra databaser och snabbt kunna sätta upp korrekt infrastruktur. Några tips som gavs var:

– Se leveranskedjan från idé till produktion som en kostnad och jobba för att få ned denna kostnad till ett minimum

– Dela upp system i komponenter som kan driftsättas oberoende av varandra. Det är ok att inte dela domänobjekt eftersom olika system använder dessa på olika sätt. Dela gärna på use case istället för domäner, t ex en service /user blir svår att hantera när det används både av admin (inlåst, 5 användare) och huvudsajten (publik, miljoner användare). Pröva /useradmin och /useraccount istället, “Working complex systems comes from simple systems that work”

– Standarisera på data och protokoll (inte SOAP som tyvärr exponerar implementationen) istället för plattformar.

– Använd verktyg (t ex http://liquibase.org/) för att underlätta evolutionära databaser, d v s hantera ändringar på ett kontrollerat sätt

– Inse att ops-resurser (Operational Expenditure, OPEX) också är en kostnad, precis som inköp av infrastruktur (Capital Expenditure, CAPEX). Det är dumsnålt att inte investera i system och verktyg för att snabba upp leveranskedjan. Att ägna dagar/veckor åt få upp en korrekt konfigurerad server istället för på 5 minuter blir hög OPEX. Framför allt blir det också enkelt och snabbt att återhämta sig från en infrastrukturkrasch

– Använd verktyg (t ex http://puppetlabs.com/) för att automatisera hur infrastruktur sätts upp. En ny server ska vara ett knapptryck. Viktigt att versionshantera de script som beskriver hur infrastrukturen sätts upp

Källor:
– Continuous Delivery, Neal Ford, ThoughtWorks – http://www.jfokus.se/jfokus/talks.jsp#Continuous%20Delivery
– Agile Architecture, Marcus Ahnve, Valtech – Design For Replaceability – http://www.jfokus.se/jfokus/talks.jsp#Agile%20Architecture%20-%20Design%20For%20Replaceability.
– The road to REST, Rickard Öberg, Neo Technology – http://www.jfokus.se/jfokus/talks.jsp#The%20road%20to%20REST
– Retrospective from the year of DevOps, Daniel Fröding, Diabol AB – http://www.jfokus.se/jfokus/talks.jsp#Retrospective%20from%20the%20year%20of%20DevOps

ÖVRIGT
Vad gäller webbsidan ser det ljust ut för Java. Webbramverket Play fångade mycket intresse på Jfokus och verkar ha alla möjligheter bli förstavalet i branschen framöver, förutom kanske i Spring-lägret. HTML5 börjar bli bara HTML i de flestas ögon, även om implementationen de nya API:na i webbläsare släpar efter. Ett av undantagen ser ut att vara localStorage som stöds av de flesta och används flitigt redan.

Nu har konsekvenser av att deploya appar i molnet börjat dyka upp och även lösningar på problem som det medför. Aktörer som VMWare genom cloudfoundry.com försöker göra plattformen portabel, medan initiativ som jclouds.org försöker göra appen portabel mellan molntjänster (PaaS i det här fallet) genom att abstrahera bort plattformen. Kritik mot CloudFoundry finns att det inte är riktigt öppet förrän det är open source, medan jclouds får höra att deras modell inte räcker, eftersom de tjänster som molnen erbjuder (data store, jobs, queue, etc) har så olika karaktär att de inte går att generalisera. En sak som eldade på diskussionen om portabilitet var när Google App Engine blev aggresivare i sin debiteringsmodell. Just nu är det svårt att flytta från en leverantör till en annan.

Det var hyfsat högt intresse för Scala (ca 6 föreläsningar) tillsammans med funktionell programmering. Det får också lite draghjälp av Play (särskilt som version 2.0 RC släpptes i dagarna) som är Scalas hemmaplan. Andra intressanta saker som kanske inte var nya är Akka (händelsedriven, skalbar och feltolerant arkitektur – http://akka.io) och Hadoop (distribuerad skalbar processing – http://hadoop.apache.org).

Källor:
– Building a web page with HTML5, Robert Nyman, Mozilla – http://www.jfokus.se/jfokus/talks.jsp#Building%20a%20web%20page%20with%20HTML5
– Patterns of Agile Enterprise Architecture, Rebecca Parsons, ThoughtWorks – http://www.jfokus.se/jfokus/talks.jsp#Patterns%20of%20Agile%20Enterprise%20Architecture
– Client-side Storage: When & How, Pamela Fox – http://www.jfokus.se/jfokus/talks.jsp#Client-side%20Storage%3A%20When%20%26%20How
– An Intro to Hadoop, Eva Andreasson, Cloudera – http://www.jfokus.se/jfokus/talks.jsp#An%20Intro%20to%20Hadoop
– Functional Thinking, Neal Ford, ThoughtWorks – http://www.jfokus.se/jfokus/talks.jsp#Functional%20Thinking
– HTML5 with Play Scala, CoffeeScript and Jade, Matt Raible, Raible Designs – http://www.jfokus.se/jfokus/talks.jsp#HTML5%20with%20Play%20Scala%2C%20CoffeeScript%20and%20Jade
– Up and out: Scaling software with Actors, Viktor Klang, Typesafe – http://www.jfokus.se/jfokus/talks.jsp#Up%20and%20out%3A%20Scaling%20software%20with%20Actors
– Developing portable PaaS applications, Andrew Phillips, jclouds – http://www.jfokus.se/jfokus/talks.jsp#Developing%20portable%20PaaS%20applications
– One-liners are your friend: Increasing Productivity with Scala, Thomas Alexandre, DevCode Consulting – http://www.jfokus.se/jfokus/talks.jsp#One-liners%20are%20your%20friend%3A%20Increasing%20Productivity%20with%20Scala


A Holistic View on Developer Productivity

What does developer productivity mean, really? Is it churning out more code or less code? Is it to have less bugs in production or shipping code more often? Is it doing a lot of things or just one thing? Let’s think about this for a moment. I believe developer productivity is about getting more things […]


Improving the usability of Aftonbladet Video-clip pages

We have recently started the process of improving the usability of video-clip pages. In order to get an idea of where Aftonbladet stands compared to other world-class online video/news providers, we conducted an online test answered by 110 visitors of Aftonbladet TV. In this test we compared their perception of an Aftonbladet TV video-clip page […]


Schibsted’s 1st iOS Deployment Meet-up

Schibsted’s 1st iOS Deployment Meet-up Thursday, 28th of April 2016: getting to know each other, guests arrive Friday, 29th of April 2016: the meet-up date We here at Aftonbladet had been planning on having a meet-up with iOS developers across various Schibsted companies for many months. We had a range of topics in mind for […]


Hackday: The Future of Storytelling is social, engaging and rewarding

We gathered students, journalists, developers and designers to get together and conceptualize something new for the news industry. This was our first organized hack event – The Future of Storytelling Hack. The hack was a team-based, news-media-focused prototyping and experimentation event within storytelling over two days at Kungsbrohuset, Schibsted and Aftonbladets headquarter in Stockholm. A good story used to […]