København
Landemærket 10, 6. sal1119 København
Danmark+45 33 36 44 44hello@kruso.dk
Del 2
Godmorgen klasse! Jeg er glad for at se så mange tilstede i dag. Vær venlig at tage plads, og hvis du ikke allerede har læst del 1 af denne artikelserie, så kan jeg varmt anbefale det. Du kan sikkert stadig følge med i denne artikel uden at have læst den tidligere, men er det virkelig risikoen værd?
Nu hvor vi har denne klodsede introduktion/promovering ude af vejen, så lad os komme i gang med de spændende sager. Sidste gang lovede jeg dig en dybdegående gennemgang af en række kamp-testede tricks og tips til at hjælpe jer på jeres rejse, uanset om I er et team der har startet et nyt produkt eller en virksomhed der skal opdatere jeres system. Jeg er her i dag for at opfylde det løfte. Uden videre får du nu dagens 4 tips, der løst omhandler planlægningsfasen for et projekt:
På trods af den hårde titel er dette punkt det mest uklare, så tilgiv mig hvis jeg lyder som en hippie en gang i mellem. Dette kan dog være det vigtigste tip på listen.
Før du går i gang med noget andet, så er det afgørende at kigge på måden du tænker om din platform, og ændrer din tankegang omkring den: Din platform vil ikke længere være statisk. Den vil blive ved med at udvikle sig. Den vil aldrig blive færdig. Brug gerne et øjeblik på at lade det synke ind, hvis du har brug for det.
Denne måde at tænke på kan være fjern til at starte med – Vi er vant til (og finder tryghed i) at ting gøres, endeligt og statisk. “Bedst før”-datoen er et kendetegn fra den materielle verden. Det var engang også tilfældet med software. Vi tænkte på software lidt ligesom med en bil – Vi købte den, vi kørte i den for en stund, nogle gange reparerede vi den, og så fik vi en ny.
Nu til dags skal man i stedet tænke på det som træning - Det er en proces. Vi går i fitnesscenteret regelmæssigt; vi udfører en masse øvelser for generel sundhed; og derefter nogle øvelser fordi vi stræber efter at være mere end vi er nu. Vi fokuserer på forskellige at træne ud fra vores interesser. Nogle gange skal vi træne ben. Andre ganger springer vi bentræningen over fordi ryggen skal trænes mere. Hvis vi stopper med at gå i fitnesscenteret, så kommer vi ud af form. Vi er aldrig rigtigt “færdige” på samme måde som vi er med mange andre ting. Jeg træner sjældent selv da jeg foretrækker sofaen, men jeg har hørt at det er sådan træning fungerer.
Markedet vil altid transformeres. Dine konkurrenter vil altid eksistere og der dukker hele tiden nye op. Din platform vil heller aldrig blive færdig, og det er en god ting.
Okay, så tankegangen er ændret og vi er komfortable med et mere flydende syn på vores platform. Men hvordan forhindrer vi, at det løber ud af kontrol, for eksempel med en løsning der starter som en bogholder løsning og ender med at være en e-commerce platform for burgere? Altså, først og fremmest skal du spørge dig selv om det giver mening for din forretning at følge dine kunder (og konkurrenter) i den retning eller ej. Ideelt set, skal de kun anses som en guideline, informerende, men ikke kontrollerende, hvor dit navigerende værktøj i stedet er dine visioner og mål. Uden en klar vision ender du blot med at halse efter konkurrenterne. At være reaktiv er godt – At være proaktiv er endnu bedre.
Mål skal sættes både på et forretnings- og projektniveau. Det skal være et mix af langsigtede, kortsigtede, hårde og bløde mål. Et godt udgangspunkt er at diskutere spørgsmålene jeg har skrevet op nedenfor. Resultatet af den diskussion burde være en række mål der både er konkrete (fx vi vil release en ny mindre funktion hver måned) og abstrakte (fx vores produkt skal altid muliggøre kommunikation på spændende måder). Prøv at definere så mange mål som muligt. Tør at være både mondæn og visionær.
Hvilken værdi tilbyder vi vores brugere?
Hvilken værdi vil vi gerne tilbyde vores brugere?
Hvad skal vi bruge for at kunne opnå dette?
Hvad vil vi opnå med vores microservice arkitektur?
Inddel dine mål i langsigtede og kortsigtede. De langsigtede er jeres vision og de kortsigtede er jeres vej derhen. Husk på at mål ikke er regler: Sunde mål ændres over tid – men en god tommelfingerregel er at jo længere væk et mål er, des langsommere burde det opfyldes.
Det her ser lidt anderledes ud alt efter om du vil dele en monolit op eller starter et nyt projekt, men den centrale idé er den samme – Du bliver nødt til at vide hvilket arbejde der ligger forude. Mange har besøgt landet med microservices og er vendt tilbage med et indviklet rod (eller endnu værre: noget semi-monolitisk), udelukkende fordi de ikke planlagde. Du bliver nødt til at have en plan før du starter med at arbejde. Det virker måske indlysende, men det er en mere almindelig fejl end du tror.
Den nemmeste måde at gøre det på er ved at starte ud med at definere alle de funktionaliteter du skal bruge eller allerede har. Sortér det og kategorisér det. Hvad kan kombineres? Hvad skal ikke kombineres? Hvilke dele er essentielle og hvilke dele kan vente? Hvad er uklart og hvordan kan det blive klart? Tag disse læringer med dig og definer hvilke microservices du har brug for.
Når du ved hvad du har brug for, kan du begynde at kortlægge hvordan alle de services skal interagere med hinanden. På dette tidspunkt finder du måske ud af, at du skal ændre i de definerede services eller du skal tilføje nye. Det er helt i orden. Kontekst er vigtig og det ændrer kravene til din arkitektur. Du skal ikke haste denne proces.
Nu burde du have en forholdsvis god idé om det arbejde der ligger forude og måske kan du allerede nu formulere en form for handlingsplan på hvilken rækkefølge dine services skal sammensættes.
I løbet af denne proces er det også vigtigt at sikre at alt er forbundet med de tidligere definerede mål (for du lyttede til mit tidligere tip og satte et mål, ikke?). Sammenhængen mellem dine services og mål slutter dog ikke her. Den vigtigste ting at understrege er at alt stadig skal hænge sammen flere måneder ude i fremtiden, når nogen højere oppe præsenterer dig for det uundgåelige krav: “Hey, [stakeholder] skal bruge [tilfældig specifik og urelateret funktion] inden ugen er omme. Fix det.” Det her er øjeblikket du har ventet på: præsenter din planlægning og argumenter hvorfor det er en dårlig idé og hvordan den kan gøres til en god idé i stedet. Klap dig selv på ryggen. Du sørgede for at skibet sejler i den rigtige retning, og du gjorde det på en konstruktiv og faktabaseret måde. Du gjorde det godt.
En forholdsvis almindelig fejl in microservice landet er at gøre alle services enten for generelle eller for specifikke. Ikke alle services er oprettet ens og det er det smukke ved denne arkitektur. Du kan designe servicen i lige præcis den størrelse og ambition der passer til dens formål.
I nogle tilfælde finder du ud af at du har mange små specifikke services der let kunne kombineres til en stor generisk service, der så kunne åbne op for nye muligheder der før var skjult af fragmenteringen. Den generiske service kan nu blive brugt flere steder hvilket betyder mindre kode at vedligeholde.
I andre tilfælde kan du simpelthen bare ikke gå generisk. Måske ved du ikke nok om konteksten eller fremtiden? Måske handler det om budget og fokus? Måske eksperimenterer du med en ny løsning ved siden af og har brug for at teste nogle meget forskellige ruter. Måske vil du bare prøve nogle nye interne processer. Det kan også være dem alle sammen på en gang.
Brug din netop fundne frihed og fleksibilitet til at finde ud af hvad der fungerer for dig og dit system – Der er ikke nogen absolutte sandheder her. Blot vær sikker på at din valgte specificitet er et bevidst valg der ikke bare er relevant for din kode men også i forhold til hele din forretning.
Det her er formentlig den tungeste artikel i serien, men i det mindste har du nu nogle værktøjer der hjælper dig til at komme i gang med planlægningsprocessen. Hvis du giver den gas lige så snart denne artikel kommer ud, er du måske færdig inden den næste artikel, hvor jeg vil snakke lidt mere om produktionsorienterede daglige ting, men der er ingen grund til stresse. Lad det tage tid – Et godt hus er bygget på et solidt fundament, hurtigt er ikke altid effektivt osv. Når alt kommer til at er planlægningsfasen ikke ligeså hyppig som selve produktionen, så sæt pris på de øjeblikke I har sammen.
Som sædvanlig: Pas på dig selv, husk at drikke vand og stræk dine ben en gang i timen. Og held og lykke med hvad end du laver, der gjorde dig interesseret i det her blog post.
Vi ses i del 3!