Näin me kehitämme - tutustu Funidatan kehityskäytäntöihin!
Tuotamme SaaS-palveluita, joten teknologiavalintamme heijastelevat palvelumalliamme.
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. Tästä syystä meillä on myös Pythonilla kirjoitettuja backendejä, erityisesti käyttäen FastAPIa. Pienempiä taustapalveluita on toteutettu myös Nodella, kuten esimerkiksi osa integraatioistamme.
Käytämme paljon TypeScriptiä erityisesti frontendin taustana, mutta myös JavaScriptiä on edelleen menossa mukana. Frontendimme pääsääntöisesti webbipohjaisia ja yleisin 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. Myös Redis löytyy cachetus-käyttöön Varnishin ohella.
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, Kibana ja Grafana 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 melko vapaasti valittavissa ja editoreista suosituimpia ovat tällä hetkellä IntelliJ IDEA, Visual Studio Code ja PyCharm. Hyödynnämme staattista analyysiä koodauskäytäntöjemme valvonnassa ja käytännössä kaikki luetellut IDEt integroituvat hyvin työkaluihimme.
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 tuotamme myös avointa saavutettavaa komponenttikirjastoamme Fudista. Myös käyttämämme Slack-botti hybridityön tukemiseen (hybridilusmu) löytyy sieltä. Pyrimme julkaisemaan avoimesti mahdollisimman useita työkalujamme.
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 ja kumppaniemme 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.
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 ja Flingaa, mutta tässäkin käytetty paletti riippuu lopulta tilaisuuden vetäjästä.
Pyöritämme myös erilaisia tukipalveluita asiakkailemme. Yhdessä tärkeimmistä eli Funidatan asiakaspalvelussa käytämme taustalla Zendeskiä jalostamaan työjonoa ja tarjoamaan näkyvyyttä. Yhteistyö devaustiimien kanssa sujuu suoraan Slackin kautta Zendeskin ominaisuuksilla.
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!