Digital plattform for å tilby tjenester i sanntid
Item har bidratt med plattform og programmeringskompetanse for å utvikle Ruters digitale selvbetjeningsløsninger for bedriftsmarkedet.
Om oppdraget
Selvbetjeningsløsninger og sanntidsdata
Om RUTER#
Ruter er et felles administrasjonsselskap for kollektivtrafikken i Oslo og deler av Viken (tidligere Akershus fylke). Ruter står i dag for over halvparten av landets kollektivtransport. I 2019 ble det foretatt 398 millioner kollektivreiser i Oslo og deler av Viken (tidligere Akershus fylke).
Digitale selvbetjeningsløsninger for bedriftsmarkedet
Bakgrunnen for Items oppdrag hos Ruter var at kunden ønsket å utnytte mer av potensialet i bedriftsmarkedet, som et ledd i Ruters mål om å bedre miljø og klima ved å tilrettelegge for miljøvennlig mobilitet. Dette ønsket de å gjøre ved å blant annet utvikle og tilby selvbetjente digitale løsninger for bedriftsmarkedet. Det å tiltrekke seg nye kunder var også et viktig delmål for å effektivisere eksisterende tilbud for bedriftsmarkedet. Spesielt fokus var å tilby billetter og andre produkter på de ansattes mobiltelefoner.
I en større kontekst inngår prosjekter i Ruters ambisjon om å tilby transport som en tjeneste i stedet for å tilby enkeltreiser.
Prosjektets hovedmål var å utvikle en bedriftsportal hvor bedriftene selv kan administrere billettabonnement for sine ansatte. Det var ønskelig at dette prosjektet også skulle være en pilot på hvordan systemer kan lages med moderne sky-arkitektur, og hvor det er mulig å gjenbruke løsninger i ulike kontekster.
Et eksempel er at billettluken utviklet for Ruter også kunne integreres i løsninger hos andre kollektivselskaper hvor den kan selge deres produkter.
En mer omfattende liste over leveranser fremover inneholder blant annet en billettluke for selvbetjent kjøp av enkeltreiser og periodebilletter, en selvbetjeningsløsning for fribilletter (for underleverandører av Ruter), integrasjon mot Ruters eksisterende systemer, ulike støttefunksjoner som automatisk fakturering, brukeradministrasjon, rapportering og videreutvikling av bysykkelløsning.
Plattform for å tilby tjenester i sanntid
Parallelt med utviklingen av digitale selvbetjeningsløsninger ble Item også engasjert i utvikling og forvaltning av ny sanntidsplattform for bla disse nye selvbetjeningsløsningene. Oppdraget var å være en del av et Biz/Dev/Ops team som utvikler og forvalter sanntidsplattformen til Ruter.
Plattformen er laget for at Ruter skal ha en sentral innsamling av data fra kjøretøy, for å kunne tilby tjenester i sanntid. Tjenester omfatter skilting og lydanrop på kjøretøy, estimater, passasjertellinger og signalprioritering til lyskryss.
Bakgrunnen til at denne nye plattformen ble bygd er at dette ble tidligere løst med innkjøpte «black box» løsninger som var tett knyttet til løsninger på busser eid av ruters operatører. Dette førte til vanskelig integrasjon mellom løsninger internt og et uklart eierskap til ombordløsninger mellom Ruter og operatørene.
For å støtte en løsere kobling mellom Ruter, operatør og kjøretøyprodusent var Ruter med på å starte https://itxpt.org for å komme frem til en standard for IT løsningene på kjøretøy i offentlig transport.
Resultat
Ruter har så langt fått en bred forankret, moderne sky-arkitektur basert på blant annet AWS og Kubernetes.
Ruter har nå en bedriftsløsning som gjør det attraktivt og enkelt for bedriften å benytte deres tjenester, og tilby disse videre til sine ansatte uten ekstra administrasjonsarbeid.
Videre kan deres underleverandører nå selv administrere fribilletter for sine ansatte, og hente ut ferdig beregnede skattetrekksgrunnlag.
Ruter har fått en gjenbrukbar løsning for salg av enkeltstående billetter, og denne er allerede levert videre til andre kollektivselskap for salg av deres respektive produkter, integrert i andre løsninger rettet mot bedriftsmarkedet.
Fakturering av bedrifter for bruk av tjenester er automatisert
Videre har vi sammen med Ruter forbedret den underliggende sanntidsplattformen, slik at antall henvendelser til kundesenteret målt i antall klager på feil, til tider har falt drastisk.
Med omstrukturering og utvidelse av plattformen har Ruter nå implementert et velfungerende miljø og er klare for å støtte nye operatøranbud og nye transportløsninger som har muligheter for mer avansert estimering og mer nøyaktige tjenester. I tillegg er den nye løsningen enklere å forvalte.
Teknologier vi har brukt
Fra Ruters side var det et krav om en mikrotjeneste og event source-basert arkitektur, med Apache Kafka som felles kanal for persistering og kommunikasjon mellom tjenester.
Som en pilot ble det undersøkt ulike løsninger for å kjøre mikrotjenester i en skybaserte plattform, hvor man landet på Amazon-managed Kubernetes (EKS).
Applikasjoner og biblioteker ble utviklet med Kotlin for både Java 11 og Java 8. En typisk applikasjon vil motta kommandoer fra Kafka topics eller via REST-kall, og publisere eventuelle resultater som egne Kafka topics og eventuelt tilby et svar i samme REST-kall i tilfellene hvor det er krav til synkrone operasjoner.
Rammeverk og verktøy har endret seg noe over tid, fra Apache Camel for REST og integrasjoner (herunder Kafka), lagret i BitBuchet og rullet ut via Jenkins, til applikasjoner basert på Javalin for REST og Kafka Streams-rammeverket for Kafka-operasjoner, hostet og rullet ut via GitLab og Helmsman, med utrulling av infrastruktur ved hjelp av Terraform.
Videre har Elasticsearch blitt benyttet for søk, Amazon SQS for tilfeller hvor det er strengere krav til at kommandoer behandles én gang, OAuth2 for autentisering (via Okta og Amazon Cognito), OpenAPI/Swagger for dokumentasjon, Datadog for monitorering og alarmer, Junit 5 for unit-tester og integrasjonstester, Amazon ECR og Google Jib for containerisation og lagring.
Videre er det benyttet Gradle som byggsystem, IntelliJ som IDE, JIRA, Confluence, Trello, Slack og Teams som administrasjons- og kommunikasjonsverktøy. Apache Avro er brukt for datakontrakter for Kafka-meldinger.