Näin me kehitämme! Esittelyssä Funidatan kehityskäytännöt
Miten meillä devataan eli esittelyssä Funidatan tärkeimmät teknologiat ja työkalut. Prosessien jatkuva kehitystyö on toimintamme ytimessä.
Meillä Funidatalla suhtaudutaan kaikenlaiseen kehitykseen myönteisellä ja innokkaalla asenteella. Haluamme aina viedä osaamistamme, toimintatapojamme, prosessejamme, teknologiavalintojamme ja kehitysvälineitämme eteenpäin.
Tässä blogipostauksessa käymme läpi nykytilannettamme ja kuvaamme, millaisiin suuntiin olemme eri asioiden suhteen menossa. Yhdessä postauksessa voimme toki vain raapaista pintaa ja antaa yleiskuvan laajasta toiminnastamme, mutta ei huolta – kehittäjämme ovat ahkerasti jakaneet tarkempia yksityiskohtia työmme eri osa-alueista aiemmissa blogikirjoituksissamme.
Joko muuten huomasit, että meillä on haussa Full Stack Developer, DevOps-asiantuntija ja koodaava Scrum Master? Tämän tekstin lukemisen jälkeen kannattaakin ottaa suunta Rekry-sivullemme, jos kiinnostuit työskentelystä ohjelmistotalossa, joka tekee uraauurtavaa työtä suurella sydämellä. ♥
Kehityksemme prosessit
Kehityksemme pyörii pitkälti Scrumin varassa. Olemme vuosien varrella kehittäneet sitä toiminnallemme sopivaksi. Samaten olemme poimineet piirteitä skaalautuvista ketterän kehityksen ohjelmistokehyksistä, kuten SAFesta. Prosessien jatkuva kehitystyö on toimintamme ytimessä, joten etsimme aina tapoja parantaa tuotekehitystämme niin nyt kuin tulevaisuudessakin.
Tärkeimmät teknologiat
Tuotamme SaaS-palveluita, joten teknologiavalintamme heijastelevat palvelumalliamme. Taustajärjestelmissä suosimme pääsääntöisesti Javaa Spring Bootia hyödyntäen, mutta pyrimme aina valitsemaan tehtävään sopivimman ratkaisun.
Käytämme paljon skriptikieliä, kuten Pythonia sekä Javascriptia. Frontendimme ovat Javascript-vetoisia ja pääsääntöinen SPA-teknologia on Angular, mutta tuotepalettimme syövereistä löytyy myös Reactia. Tietokantanamme käytämme PostgreSQL:ää, ja erityisesti hyödynnämme sen JSON-kenttätyyppejä.
Palvelutuotantomme rooli on myös tärkeä. DevOps-mallimme kulmakiviä ovat Terraform, Ansible ja Docker. Näillä luomme uudet ympäristöt automaattisesti Amazon Web Services -pohjaiseen julkipilvipalveluumme. Lisäksi Elastic Stack eli ElasticSearch, Logstash, Beats ja Kibana ovat meillä aktiivisessa käytössä monitoroinnissa ja logien hallinnassa.
Devauksen työkalut
Devauksen työkalut ovat vapaasti valittavissa, ja hyödynnämme staattista analyysiä koodauskäytäntöjemme valvonnassa. Editoreista suosituimpia ovat IntelliJ IDEA, Visual Studio Code ja Eclipse.
Versionhallintamme pyörii Gitillä Githubissa, johon pohjautuu myös pull request- ja peer review -prosessimme. Avoimen lähdekoodin projektimme löytyvät Funidatan organisaatiosta. Jenkinsin varaan rakentuva Continuous Integration -putkemme on vahvasti liitoksissa versionhallintaan. Pyöritämme CI-putkessamme staattista analyysiä, yksikkötestejä, integraatiotestejä, kuormitustestejä ja E2E-testejä (Cypress) sekä rakennamme valmiit Docker-kontit sovelluksista. Ajamme suurimman osan testipatteristostamme myös jokaiselle pull requestille, mutta jatkossa haluaisimme niillekin E2E-testit automaattiseen ajoon. Testitapausten hallintaan käytämme TestRailia.
Käyttöliittymäsuunnittelun työvälineemme ovat Sketch ja sen pilvipalvelu Sketch Cloud. Niitä hyödyntäen suunnittelemme ja teemme prototyypit sekä jaamme ne muille kehittäjille. Tulosteita ja muuta materiaalisuunnittelua olemme pääsääntöisesti pyörittäneet Adoben tuotteilla.
Kommunikoidaan!
Pääasiallisena kommunikaatiokanavana käytämme Slackia, jossa meillä on sisäisten kommunikaatiokanavien lisäksi yhteistyökanavia asiakkaidemme kanssa. Olemme yhdistäneet sekä ympäristöjemme monitoroinnin että versionhallinnan osaksi kanavakokoelmaamme, jotta saamme viestit yhteen paikkaan kaikkien nähtäville. Isompiin etäneuvotteluihin, joihin Slackin videotoiminnallisuus ei taivu, käytämme Microsoft Teamsia. Harmillisesti Teamsistä puuttuvat piirto-ominaisuudet, mikä on merkittävä heikennys verrattuna Slackissa järjestettäviin etäkahvitaukoihimme.
Korona-aikana digitaaliset fasilitointityökalut ovat nousseet aivan uuteen arvoon. Olemme hyödyntäneet runsaasti Muralia erilaisissa tilaisuuksissa niin omien tiimiemme, loppukäyttäjiemme kuin asiakkaidemme kanssa. Muralin tueksi olemme ottaneet Teamsin breakout roomit, joilla isommatkin suunnittelutapaamiset on saatu sulavasti jaettua pienempiin kokonaisuuksiin. Retrojen pyörittämiseen olemme käyttäneet Retrotoolia.
Pilvipalvelut
Viimeisen vuoden aikana on tehty paljon kehitystyötä, jotta kaikki palvelumme saadaan tarjottua Amazon Web Services -julkipilvestä. Infrastruktuurimme on aiemminkin ollut muuten automatisoitu, mutta AWS-käyttöönotto on mahdollistanut myös palvelimien ja PaaS / IaaS -palveluiden provisioinnin automaattisesti työkaluilla. Samalla olemme pystyneet hyödyntämään pilvialustojen tarjoamia palveluita laajemmin. Käytämme paljon S3 Object Storagea, RDS-tietokantoja, ECR-konttirekisteriä sekä lukuisia muita pienempiä palveluja.
Monitoroimme ympäristöjemme tilannetta jatkuvasti hyödyntäen metriikkaa sekä palveluistamme että alustajärjestelmistä, jotta voimme taata parhaan mahdollisen käyttäjäkokemuksen ja palvelun luotettavuuden. Analyysivälineitämme ovat Kibana ja Grafana, ja automaattisiin hälytyksiin hyödynnämme Kapacitoria. Näiden lisäksi myös AWS:n omat monitorointivälineet ovat aktiivisessa käytössä.
Julkaisurytmi
Julkaisemme Sisun eli päätuotteemme ympäristöjä automaattisesti jokaisesta muutoksesta, jotta tuorein mahdollinen versio olisi aina sisäisesti nähtävissä. Pidämme yllä myös lukuisia muita ympäristöjä mahdollistaaksemme sekä oman että asiakkaidemme hyväksyntätestauksen.
Sisua julkaistaan toistaiseksi versioissa, mutta tavoitteemme on muokata koko kehitysprosessi hyödyntämään jatkuvan julkaisun periaatteita ja saada uudet toiminnallisuudet tuotantoon entistä nopeammin ja ketterämmin. Muiden palveluidemme osalta pyrimme julkaisemaan muutoksia mahdollisimman nopeasti aina tuotantoympäristöihin asti.
Lopuksi
Kahlasitko koko tekstin läpi? Huh, sisukasta meininkiä – sinussa taitaa olla ainesta tulevaksi funidatalaiseksi! Kiinnostaisiko sinua seuraavaksi tutustua enemmän vaikkapa päätuotteeseemme Sisuun tai sen kehityksestä kertovaan blogiin? Sisu-blogista ei materiaali helpolla lopu!
Muista myös ihmeessä kysyä meiltä lisää, jos kiinnostuit avoimista työpaikoistamme ja sinulla heräsi kysymyksiä tämän kehityspläjäyksen pohjalta. Jokaisen avoimen paikan yhteydessä on ilmoitettu yhteyshenkilömme. Odotamme viestiäsi!