Näin me kehitämme

Näin me kehitämme

Tutustu kehityskäytäntöihimme!

TÄRKEIMMÄT TEKNOLOGIAT

Tuotamme SaaS-palveluita, joten teknologiavalintamme heijastelevat palvelumalliamme. Taustajärjestelmissä suosimme pääsääntöisesti Javaa Spring Bootiahyödyntäen, mutta pyrimme aina valitsemaan tehtävään sopivimman ratkaisun. Kirjoitamme myös pienempiä ketterämpiä taustapalveluita Nodella.

Kehitämme paljon skriptikielillä, kuten Pythonilla, TypeScriptillä sekä Javascriptilla. Frontendimme ovat enimmäkseen Typescript-vetoisia ja pääsääntöinen SPA-teknologia on Angular, mutta tuotepaletistamme löytyy myös Reactia. Tietokantanamme käytämme PostgreSQL:ää, ja erityisesti sen JSON-kenttätyyppejä hyödyntäen.

Palvelutuotantomme rooli on myös tärkeä. DevOps-mallimme kulmakiviä ovat Terraform, Ansible ja Docker. Näillä luomme uudet ympäristöt automaattisesti AWS -pohjaiseen julkipilvipalveluumme. Lisäksi Elastic Stack eli ElasticSearch, Logstash, Beats ja Kibana ovat meillä aktiivisessa käytössä monitoroinnissa ja logien hallinnassa.

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.

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, johon jatkossa tuotamme myös avointa saavutettavaa komponenttikirjastoamme Fudista. Jenkinsin varaan rakentuva Continuous Integration -putkemme on vahvasti liitoksissa versionhallintaan. Pyöritämme CI-putkessamme staattista analyysiä (mm. SonarQubea), yksikkötestejä, integraatiotestejä, kuormitustestejä ja E2E-testejä (Cypress) sekä rakennamme valmiit Docker-kontit sovelluksista. Ajamme kattavan testipatteristostamme myös jokaiselle pull requestille laadun varmistamiseksi ja regressioiden ehkäisemiseksi. Testitapausten hallintaan käytämme TestRailia.

Käyttöliittymäsuunnittelun työvälineemme on Figma. Sitä 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. Retrojen pyörittämiseen olemme käyttäneet Retrotoolia.

PILVIPALVELUT

Kaikki palvelumme tarjotaan AWS -julkipilvestä. Infrastruktuurimme on automatisoitu, ja AWS mahdollistaa palvelimien ja PaaS / IaaS -palveluiden provisioinnin automaattisesti työkalustollamme.  Samalla olemme pystyneet hyödyntämään pilvialustojen tarjoamia palveluita entistä 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 versioissa, mutta tavoitteemme on muokata kehitysprosessiamme jatkuvan julkaisun periaatteita ja saada uudet toiminnallisuudet entistä nopeammin ja ketterämmin. Muiden palveluidemme osalta pyrimme julkaisemaan muutoksia mahdollisimman nopeasti aina tuotantoympäristöihin asti.

Kahlasitko koko tekstin läpi? Huh, sisukasta meininkiä – sinussa taitaa olla ainesta seuraavaksi funidatalaiseksi!