Jatkuvan integroinnin uudet tuulet

Tilaisuuden avasi Jyrki Puttonen esittelemällä Jenkinsin 2.0 version uusia ominaisuuksia sekä Jenkinsin skriptaamista.

Jenkins 2.0 ei sinällään ole mullistava uudistus. Suurimmat uudistukset kohdistuvat ensimmäisen käyttökerran parantamiseen sekä pieniin käyttöliittymäparannuksiin usein käytettyjen ominaisuuksien osalta. Lisäksi uuden version luvataan olevan täysin taaksepäin yhteensopiva.

Jenkinsin versio 2.0 nostaa "Pipeline as Code" käsitteen vahvemmin esille. Aiemmin Jenkinsin konfigurointi on ollut hyvin käyttöliittymäpainotteista. Pipeline as Code mahdollistaa konfiguroinnin määrittelyn Jenkinsfile:ssä, jonka voi liittää mukaan projektin versionhallintaan.

Toinen esitelty keino Jenkinsin skriptaamiseen on Job DSL. Tämän avulla on mahdollista määritellä ohjelmallisesti uusia Build Jobeja Jenkinsiin.

Esityksen jälkeen käytiin keskustelua siitä kuinka skriptaamista saataisiin yleisempään käyttöön. Jostain syystä harvaa kehittäjää kiinnostaa miten ohjelma rakennetaan, joten näiden käyttöönotossa voi olla vaikeuksia.

Toinen keskustelun aiheeksi noussut teema oli buildikoneiden tietoturva. Paikalla oli tietoturvaan erikoistuneiden yritysten edustajia jotka olivat törmänneet tähän asiaan. Asia koettiin hankalaksi, koska pitäisi pystyä varmistamaan tietoturva niin koneiden kuin projektien riippuvuuksien osaltakin.

Lisäksi Selkosoftin edustaja esitteli lyhyesti Softagram -tuotetta. Softagram on jatkuvasti ohjelmakoodia analysoiva palvelu. Voit selata ohjelmistoasi kartan tapaan, ja näkymä on aina ajantasalla.

Linkkejä:

Tilaisuudessa käytetty yleiskuva
Tilaisuudessa käytetty yleiskuva

Integroinnin haasteet: Tosielämän tetristä

Päätimme jatkaa Sysart Hotspot perinnettä järjestämällä pienimuotoisen keskustelufoorumin integraatioiden haasteista. Otsikkona tapahtumalla oli "Integroinnin haasteet: Tosielämän tetristä kompleksisten Intranet-/Internet-järjestelmien parissa". Paikalle saapui asiantunteva osanottajajoukko edustaen yrityksiä jotka tekevät haastavia integraatioita sisältäviä tuotteita ja projekteja.

Marko Oikarinen ja Jyrki Puttonen alustivat keskustelua esittelemällä erilaisia ongelmia joihin tosielämässä on törmätty. Asiaa lähestyttiin erilaisista näkökulmista kuten:

  • Kokonaisuuden suunnittelu
  • Kehittämisen haasteita
  • Testaamisen haasteita
  • Resiliency / Vastustuskyky
  • Deployment
  • Ongelmien ratkaisu tuotannossa

Yhdeksi pääteemaksi keskustelussa nousi tiedon merkityksen muuttuminen ja vääristyminen. Tiedettiin tapauksia joissa tiedon merkitys vaihtuu (“nimi” tarkoitti ennen etunimeä, nyt koko nimeä). Todettiin myös että tiedon merkitys voi muuttua syvemmälläkin tasolla. Kun asiat halutaan mallintaa omalle palikalle järkevimmällä tavalla tarvitaan usein ns. "anti-corruption layer". Koko maailmaa ei ole mahdollista tehdä optimaaliseksi joten pidetään oma keskeisin tontti puhtaana. Context mapping on yksi työkalu integroidun kokonaisuuden ymmärtämiseen: Eric Evans / GOTO Berlin 2015

Huonolaatuinen tai epäkelpo data ja sen käsittely herätti myös paljon keskustelua. Erilaisia paikkoja joista käyttäjä voi syöttää tietoja on paljon. Integraation kautta tuleva tieto ei ole välttämättä kunnolla validoitu lähdejärjestelmässä. Konfiguraatioparametritkin ovat käyttäjän syötteitä (admin on myös käyttäjä).

Pohdittiin pitäisikö järjestelmän räjähtää näyttävästi heti kun tulee virheellistä dataa jotta vältytään sen levittämiseltä? Tämä nopeuttaa integraatio-ongelmien löytämistä. Mutta miten hoidetaan tilanne jossa sama, mahdollisesti virheellinen data menee myös muille, ulkopuolisille järjestelmille, jolloin oma järjestelmä jää ilman kyseistä tietoa? Järjestelmä joka on ollut vuosia käytössä pitää todennäköisesti sisällään epäkelpoa dataa ja kun tähän integroidaan uusia osia, joudutaan huonon datan ongelmalle tekemään jotain. Mahdollisia ratkaisuvaihtoehtoja ovat ainakin datan siivous tai vaihtoehtoisesti epäkelvon datan kanssa eläminen ottamalla se huomioon mallinnuksessa.

Soveltuuko Robustness principle integraatioihin? Periaate on peräisin internetin alkuajoilta kun oli vaikeuksia saada matalan tason verkkoprotokollat toimimaan eri pelureiden kesken. Robustness principle sanoo: "code that receives input should accept non-conformant input as long as the meaning is clear". Toisaalta, miksi hyväksyä edes osittain viallisia syötteitä? Viallinen syötehän on oire lähettävässä järjestelmässä olevasta bugista. Kehitys ja testausvaiheessa validointi voi olla tarkempaa jotta ongelmat löydetään nopeasti. On helpompaa pitää ensin tiukka linja syötteiden suhteen ja höllentää tarvittaessa kuin toisinpäin.

Työkaluksi rajapintojen oikean toiminnan varmistamiseen mainittiin consumer-driven contract testing. Keskustelussa todettiin että tämä onnistuu kyllä oman talon sisällä. Hankalampaa on kun palveluiden omistajat ovat eri yrityksiä.

Juttelimme myös siitä, miten integroituja kokonaisuuksia saadaan kasattua testi ja koulutuskäyttöä varten. Yleensä kokonaisuus sisältää muutamia hankalia palikoita joita ei vain ole mahdollista saada testiympäristöön (lisenssit, asennuksen vaikeus, tms.). Tällaisissa tapauksissa voidaan käyttää ns. mock-toteutusta kyseisestä palikasta (toim. huom: korrektimpi termi olisi "fake"). Mock-toteutuksia voidaan käyttää muuhunkin kuin testaamiseen. Eräässä tapauksessa tehtiin alunperin testaustarkoitukseen luotuun mock-palveluun vain pari pientä lisäystä jolloin se kelpasi koulutusympäristön tarpeisiin ja käyttäjille saatiin kokonaisuus käyttäytymään oikealla tavalla.

Valtuutusten, roolien ja tunnistautumisen hallinta eri järjestelmien välillä on muodostumassa ongelmaksi. Valtuutuksilla tarkoitetaan tilannetta, jossa toinen toimija valtuutetaan tekemään asioita käyttäjän puolelta. Tämä tilanne on hyvin yleinen viranomaisten kanssa toimiessa. Kansallinen palveluarkkitehtuuri sisältää roolien ja valtuutuksien hallinnan, mutta kokemusten mukaan tämä on hankala käyttää. Valtiovarainministeriö / Roolit ja valtuudet

Venkat Subramaniam

Venkat Subramaniam
Venkat Subramaniam

Sysart on kutsunut Venkat Subramaniamin Helsinkiin 2.11.2011. Tämän vuoden Hotspotissa aiheena on funktionaalinen ohjelmointi. Ohjelmassa on esitys suunnittelumalleista moderneilla JVM-pohjaisilla kielillä ja workshop funktionaalisesta ohjelmoinnista. Tapahtuma järjestetään Scandic Simonkentän Mansku kokoustilassa osoitteessa Simonkatu 9.

Lisää kouluttajana ja konsulttina tunnetusta Subramaniamista löydät hänen Agile Developer yrityksen sivuilta ja Twitteristä.

Ohjelma

12:00 Tilaisuuden avaus ja kahvi
12:05 Design Patterns in Modern JVM Languages presentation
13:30 Iltapäiväkahvi
14:00 Programming in Functional Style workshop

The GOF design patterns were quite centered around OOP languages. Now that we have dynamic and functional languages on the JVM, there are quite a few other patterns that come in handy with these capabilities. In this presentation we will explore patterns that allow us to make better use of closures and functional style of programming.

Functional programming has been around for a while, however, they have sharply raised to prominence on the JVM with the emergence of languages like Scala, Clojure, Groovy, and JRuby. Programming in functional style is not about picking a set of syntax, it is thinking in a particular idiomatic style and programming using a set of constructs. One of the better way to learn this is by doing it. In this workshop, we will take ten different tasks, discuss how to do them with the all-too-familiar imperative style and then how to program it using functional style. We will then implement our design for each task using a language that provides functional style of programming on the JVM.

Workshoppia varten on hyvä ottaa oma kannettava tietokone matkaan. Asenna myös JDK ja Groovy, Scala tai Clojure ympäristö. Suosittelemme käyttämään Scalaa. Seuraa myös @SysartHotspot twitter-tiliä saadaksesi viimeisimmät tiedot.

Ilmoittautuminen

Tapahtuma on loppuunmyyty, mutta voit edelleen ilmoittautua mahdollisille peruutuspaikoille lähettämällä sähköpostia ilmoittautuminen@sysarthotspot.fi 28.10.2011 klo 16.00 mennessä. Tilaisuus on ilmainen, mutta perimme 50 euron maksun kaikilta poisjäänneiltä, joista ei ole ilmoitettu 1.11.2011 klo 12.00 mennessä.

Sijainti


Näytä suurempi kartta

Scandic Simonkenttä, Mansku kokoustila
Simonkatu 9, Helsinki

Jimmy Nilsson

Jimmy Nilsson
Jimmy Nilsson Helsingissä 26.10.2010

Jimmy Nilsson houkutteli runsaan osallistujajoukon Helsingissä 26.10.2010 ja Oulussa 27.10.2010 pidettyihin Sysart Hotspot -tapahtumiin. Spontaanien kommenttien perusteella päivä tarjosi paljon ajatuksia ja ideoita omiin projekteihin.

Aamupäivän esityksessään "From requirements to code" Jimmy näytti runsaiden esimerkkien avulla kuinka vaatimuksista rakennetaan helposti testattava domain-malli. Jimmy painotti erityisesti koodin ja puhutun kielen välisen kuilun kaventamista ja jopa koodin kirjoittamista natiivikielellä. Tätä näkemystä ei osallistujien keskuudessa varuksetta hyväksytty ja aihe herättikin kiihkeän keskustelun ja open space -session.

Jimmy työstämässä esimerkkiapplikaation vaatimuksia
Oulun tilaisuuden yleisöä

Iltapäivän ohjelmassa oli kolme mielenkiintoista ja aamupäivän aiheita syventävää esitystä. Marko Oikarinen ja Daniel Wellner puhuivat arvo-objekteista sekä mille tasolle domain-maliissa esimerkiksi datan validointi pitäisi sijoittaa. Esitys ja sen materiaali on ladattavissa täältä. Ville Oikarinen puolestaan demosi luonnolliseen kieleen perustuvaa testauskieltä. Villen koodi oheisessa linkissä. Lopuksi Pertti Erkkilä esitteli helppokäyttöisen periaatteen suorituskykyisten tietokantaintensiivisten sovellusten rakentamiseksi. Ohessa Pertin esitys ja lähdekoodi.

Iltapäivän esitysten kanssa rinnan pyöri open spacet. Näissä käsiteltyjä aiheita olivat muun muassa "kuinka päästä alkuun DDD:n kanssa, jos työskentelee hankalan legacy-koodin kanssa?", sekä jo Jimmyn esityksen aikana paljon keskustelua herättänyt natiivikielen käyttö vaatimuksissa ja koodissa.

Open spaceissa käytiin tiiviitä keskusteluja

Keräsimme taas osallistujilta palautetta seminaarien annista ja saimmekin arvokkaita vinkkejä tulevaa Hotspotia varten. Palautelomakkeen täyttäneiden kesken arvotut elämyslahjakortit voittivat tällä kertaa Antti Kirjavainen, Aki Arvio, Tuomas Jomppanen, Eetu Huisman ja Antti Holvikari.

Kiitoksia kaikille Sysart Hotspotiin osallistuneille ja tavataan jälleen ensi vuonna uuden tapahtuman merkeissä.

Steve Freeman

Maanantaina 10.5.2010 järjestettiin ensimmäinen Sysart Hotspot -seminaari pääesiintyjänä Steve Freeman. Tilaisuus houkutteli paikalle runsaslukuisen yleisön ja palautteen perusteella iltapäivä oli erittäin onnistunut.

Seminaari alkoi Steve Freemanin esityksellä aiheesta "Sustainable TDD". Steve toi painokkaasti esille, että yksikkötestien koodi on yhtälailla kehittämistä kuin muukin koodi. Yksikkötestien koodin laatuun ja arkkitehtuuriin panostamalla saadaan parannettua testien kattavuutta ja kehityksen ketteryyttä. Erityisesti Steve painotti testikoodin luettavuutta - on helposti ymmärrettävä mitä testi tekee ja miksi se ei mene läpi.


Steven esittää näkemyksensä kompleksisen testidatan luomisesta

Kahvi- ja verkostoitumistauon jälkeen vuorossa olivat Open Spacet. Aiheiksi muodostuivat Gui testing, Refactoring tests, Testing large & complex systems, Testing legacy code sekä Unit testing vs integration testing. Porukka jakaantui kyseisten otsikoiden ympärille viiteen ryhmään keskustelemaan aiheesta. Mikäli äänen voluumia voi käyttää mittarina, keskustelut vaikuttivat erittäin kiinnostavilta.

Open Space aiheiden valinta

Kysyimme osallistujilta palautetta tilaisuuden annista ja saimmekin kiitettävästi kehitysehdotuksia seuravaa Hotspotia varten. Palautelomakkeen täyttäneiden kesken arvoimme kolme elämyslahjakorttia. Tällä kertaa onnettaren suosikkeja olivat Sami Hyytiäinen, Timo Harstela ja Aki Koskinen.

Kiitoksia kaikille Sysart Hotspotiin osallistuneille ja tavataan jälleen syksyllä uuden tapahtuman merkeissä.