Da Facebook-eier Meta skulle lage X/Twitter-konkurrenten Threads, klarte utviklerteamet bak å få appen klar i løpet av bare fem måneder.
Det fikk de til ved å basere Threads på Instagrams eksisterende monolittiske arkitektur, som de så itererte videre på, skriver InfoQ og DevClass.
På QCon-konferansen i London fortalte Metas utvikler Zahan Malkani om hvordan Meta på rekordtid fikk klar en X-konkurrent, etter at Meta hadde sett en forretningsmulighet da mange brukere begynte å forlate X og så etter alternativer.
Men selv om de sparte tid i starten, har valget fått konsekvenser i ettertid.
«Du akkumulerer en massiv teknisk gjeld ved å bruke en kodebase til noe nytt den ikke var designet for å brukes til.»
Instagram-backend
Malkani fortalte ifølge DevClass at Meta i januar i fjor så et mulighetsvindu som kunne forsvinne like fort som det hadde oppstått.
Det å få klar et et X-alternativ raskt var ifølge Malkani en stor utfordring, og alle snarveier for å komme raskere i mål ble diskutert. Teamet lovte ledelsen i Meta at de skulle ha noe klart innen sommeren – men da kunne de ikke bygge Threads fra bunnen av.
Siden Instagram allerede hadde mye av av funksjonaliteten de trengte, bestemte de seg for å bruke Instagram-kodebasen som utgangspunkt.
– Vi gjenbrukte Instagram for backenden. Det er bokstavelig talt bare Instagram-backenden med noe skreddersydd funksjonalitet for Threads, sa Malkani ifølge DevClass.
Også klient-appene for hver plattform er i prinsippet bare nedstrippede versjoner av Instagram-appene der de blant annet har endret litt på rekkefølgen på bilder og bildetekster.
Teknisk gjeld fra første dag
Det å basere et produkt på den tekniske plattformen til et annet produkt har som nevnt ikke vært helt problemfritt.
– Du akkumulerer en massiv teknisk gjeld ved å bruke en kodebase til noe nytt den ikke var designet for å brukes til, sa Malkani.
Instagram-stacken består blant annet av et Python-bibliotek som kalles Distillery, som håndterer det meste av forretningslogikken. Ifølge Malkani er dette antagelig den største Django-deploymenten i hele verden. Denne snakker igjen med andre tjenester, InfoQ har mer informasjon om stacken her.
Metas utviklere jobber nå med å prøve å separere Instagram- og Threads-plattformene. For eksempel trenger Threads andre datamodeller enn Instagram, og en del av forretningslogikken og backend-stacken trengs å skrives om.
Malkani angrer ikke på at de valgte å basere seg på Instagram-koden, men:
– Jeg ville gjort noen få arkitekturvalg litt annerledes og brukt mer tid på datamodellen. Kanskje det ville forsinket oss med en måned eller noe, men det ville være verdt det.