« Hem

BizTalk Server – fem vanliga misstag

Jag har tidigare skrivit en del om BizTalk Server, som är Microsofts integrationsplattform och den vi på Integrationsbolaget använder mest, åtminstone i Örebro och Stockholm. När jag började jobba hade jag bara en vag aning om vad BizTalk var, ännu mindre om hur en faktiskt använder plattformen, och det var en hyfsat brant inlärningskurva under de första veckorna. Idag, nästan tio månader(!!!) senare, börjar jag känna mig bekväm med BizTalk. Jag kan snabbt sätta upp ett enkelt dataflöde och det har blivit betydligt lättare att förstå befintliga lösningar – så länge de är byggda på ett hyfsat vettigt sätt. Och detta leder mig in på ämnet för dagens blogginlägg:

Vanliga misstag inom BizTalk Server

1. Placera alla komponenter i samma VS-projekt

Det finns fem komponenter som du troligtvis kommer hantera i Visual Studio:

  • Orkestreringar
  • Pipelines
  • Mappningar
  • Scheman
  • Ev. hjälpklasser

I början har du kanske bara ett par instanser av varje komponent, och det är smidigt att lägga dessa i samma projekt. Men snart växer lösningen och plötsligt sitter du med ett projekt som innehåller massor av olika delar och när du behöver uppdatera en av dem får du genast problem, eftersom allt måste kompileras om även om du bara ändrar på en liten detalj i ett schema.

Tips: Ett projekt för varje typ komponent. Det kommer underlätta vid ändringar, plus att personen som bygger vidare på projektet lätt kan få en överblick över lösningen.

2. Placera alla integrationer i samma BizTalk applikation

I BizTalk Servers administrationsgränssnitt kan du dela upp integrationerna i olika applikationer. Det är ett misstag att inte göra detta! Visst är det enkelt att göra det till en början, men snart kommer applikationen att svämma över av logik som inte har något med varandra att göra, det blir svårt att separera flöden från varandra och plötsligt sitter du där med en spagetti-applikation som bara du förstår.

Tips: det kan vara svårt att göra avgränsningar, men ett generellt tips är en applikation per logisk enhet eller integrationsflöde. Är du ny? Fråga dina kollegor!

3. Dålig namnsättning

Det här är ett generellt problem för newbies inom programmering/systemutveckling, men jag tycker det är extra viktigt inom just systemintegration. Precis som i all programmering är det viktigt med rätt namn på metoder och klasser, men det blir ännu tydligare gällande portar, orkestreringar och mappningar. I en metod kan du oftast läsa dig till vad den gör, eller i värsta fall köra koden och debugga den för att förstå den. De olika delarna i en integration kan dock inte testas lika enkelt, och ordentlig namnsättning gör att flödet av data blir tydligare för den som ska underhålla applikationen efter dig.

Tips: namnkonventioner varierar mellan olika företag, så se till att kolla vad som gäller för just ditt projekt. Det finns en del generella guidelines, som du kan läsa om exempelvis här eller här.

4. Uppfinna hjulet på nytt

Såhär är det: det allra mesta har gjorts förut. Speciellt de förhållandevis “enkla” uppgifter som nybörjare ofta får på en arbetsplats, så det finns ingen anledning att försöka göra egna varianter – speciellt när det gäller BizTalk och de adaptrar som finns out of the box. Integrationen blir lättare att förstå, underhålla och konfigurera genom de verktyg som finns, snarare än att skriva egen kod. Ny, egenskriven kod är dessutom betydligt mindre robust gentemot de färdiga lösningar som redan finns och används.

Tips: Läs på om de adaptrar som BizTalk har out of the box, och börja alltid med att leta färdiga lösningar på ditt problem, innan du försöker lösa det på egen hand. Se också till att du har koll på standardiserade sätt att göra saker, exempelvis hur du exponerar en orkestrering som en webbtjänst, eller konsumerar en webbtjänst från en sendport. BizTalk har metoder för att göra detta – följ dem istället för att försöka lösa det på egen hand.

5. Bygga alltför komplexa flöden

Det här är en riktigt svår fråga att besvara som nybörjare: vilken logik hör faktiskt hemma i BizTalk och vad hör hemma hos de olika systemen? När en kommit över den första inlärningskurvan så inser en ganska snabbt: du kan göra i stort sett vad som helst med BizTalk. Vilket problem du än har så går det med största sannolikhet att göra med BizTalk och ett par egenskrivna hjälpklasser. Men, bara för att det går att göra betyder det inte att du ska göra det.

Tips: Generellt sett brukar en säga att processlogik och konverteringar hör hemma i BizTalk, men att affärslogik ska hållas i respektive system. Det här är inte alltid möjligt, så är du osäker på om en viss logik bör ligga i en orkestrering eller någon annanstans – fråga en senior kollega!

Det var allt för den här gången! Midsommarveckan har precis börjat och semestern närmar sig med stormsteg för många av oss. En annan har några veckors jobb kvar innan det blir dags för ledighet, så räkna med ett par inlägg till innan bloggen tar sommarlov! 

BizTalk Server – de 4 största nybörjarmisstagen

Inför inledningen till det här blogginlägget satt jag och googlade på “mistake quotes”, och jag hittade en hel del om relationer och livet i allmänhet, typ “Det är mänskligt att göra misstag” och “gör du inga misstag så har du inte försökt” . Ord som parafraserats alldeles för många gånger, “memefierats” och helt dränerats på betydelse. Ändå ligger det något korn av sanning i dessa klyschor. Som någon sa: “Your best teacher is your last mistake”, och visst är det så. Jag gjorde mitt senaste misstag för ungefär två timmar sedan nu, och oj vad jag lärde mig av det…

Det finns ju dock en viss mening i att inte göra alla misstag själv, utan lära sig av andras. Därför tänkte jag dela med mig av de, enligt mig, 4 största nybörjarmisstagen som nästan alla gör i början av BizTalk karriären. Eller ja, alla utom du, eftersom du nu lär dig av mina misstag och kan undvika dem. Förhoppningsvis.

Kolla vad som egentligen händer

Det största felet som nybörjare inom programmering gör generellt är nog att inte läsa felmeddelanden utan sitter och bara kliar sig i huvudet av förvirring när saker inte funkar. Samma gäller inom BizTalk – du måste ta reda på vad som händer när det verkar som att ingenting händer. Min process för att göra detta ser ut som följer:

1. Första steget är alltid att se om det finns några suspenderade meddelanden i BizTalk Group Hub. Meddelanden försvinner inte i tomma intet (även om det ibland känns så!) och vid de flesta felen så fastnar (suspenderas) det meddelande du försökte skicka och du kan kolla på innehållet samt det felmeddelande som.

capture2

2. Hittar du inget där, är nästa steg att ta en titt i eventloggen, där information, varningar och fel från bland annat BizTalk loggas.

capture

3. Om jag inte hittat något fel i eventloggen brukar jag använda tracking för att se om meddelandet tagit den vägen genom integrationen som jag har tänkt. Tracking visar helt enkelt hur meddelandet såg ut när det kom in till porten eller orkestrering och hur det ser ut när det bearbetats och skickats vidare till nästa instans. Ofta kan man på det här sättet spåra vad det är som händer i integrationen.

capture3

Den här processen sviker sällan – och om den gör det så beror det troligtvis på något av kommande vanliga misstag. En bonus för att felsöka orkestreringar är att använda debugviewer, ett verktyg som låter oss läsa meddelanden vi skriver i koden med hjälp av ex. System.Diagnostics.Trace.WriteLine(). Glöm inte heller bort att det går att attacha en debugprocess i Visual Studio till BizTalk, så du kan steppa igenom koden rad för rad, samtidigt som den körs.

Skit in, skit ut

När jag har bankat huvudet mot en vägg gällande ett problem i flera timmar och inte förstår vart i processen felet ligger, är det här ofta orsaken. Anledningen till att jag inte förstår felet är enkel – det finns inget fel. Det är meddelandet som jag försöker skicka igenom integrationen som inte är korrekt.

Bildresultat för shit in shit out

Glöm inte gaccen!

Jag har varit inne på ämnet GAC och att “gacca” assemblys tidigare, troligtvis var det i samband med *saker som jag önskar att jag lärt mig i skolan*. “Gaccen” är (mycket förenklat för min egen skull, klockan närmar sig 17 och det är fredag) en folder där alla assemblys måste ligga, för att BizTalk ska kunna komma åt dem. Alla scheman, orkestreringar, pipelines, hjälpklasser – allt måste ligga här för att integrationen ska rulla. Har du gjort en förändring i koden som inte verkar funka? Kolla så den nya versionen av assemblyn är gaccad ordentligt.

Har du startat om host instansen?

Det här är det överlägset största misstaget man gör som nybörjare, och jag kan nog inte ens räkna hur många gånger det hänt mig. En host är en logisk container för BizTalk objekt, och en host instans är dess fysiska representant, återigen väldigt förenklat.

capture4

Bildkälla

Vid varje ny deploy så måste berörda host instanser startas om för att förändringarna ska registreras av BizTalk. Host instanserna kan också vara förklaringen till att en receive location inte plockar upp meddelanden som den ska – är hosten stoppad, så kan inte BizTalk ta in meddeladet. Jag har blivit bättre på att komma ihåg det här numera, men det har tagit tid att få in rutinen att alltid kolla status och starta om dem vid behov.

Med detta önskar jag er alla en trevlig helg!

Ett år av systemintegration senare

Idag är det den femte oktober 2016. Det innebär att det är nästan exakt ett år sedan jag skrev mitt första inlägg på den här bloggen. Det låter nästan overkligt när jag skriver det – hur kan ett år gå så fort? Mycket har dock hunnit hända under den här tiden, och när jag tänker att jag ska försöka summera året i ett inlägg inser jag att det inte är möjligt. Jag får plocka ett par russin ur kakan helt enkelt.

Ett tråkigt besked

Jag har funderat en stund på frågan “vad har varit bra och vad har varit mindre bra under året?” och kommit fram till att det bara är en enda sak som hamnar i den negativa kategorin. Oslokontoret  har avvecklats och min största idol och mentor har försvunnit från bolaget, nämligen Lena Padukova. Det var hon som lyckades övertyga mig om att integration var kul och tack vare henne jag började jobba på Integrationsbolaget, och det känns väldigt tråkigt att hon inte är kvar.

lena

Foto från tidigare bloggpresentation, av: lephoto.se

Men jag är ändå glad att jag hann vara kollega med henne i några månader, och jag kommer alltid vara tacksam för hennes råd och att hon styrde in mig på rätt väg när jag började se slutet på masteruppsatsen och början på arbetslivet. En cool kvinna helt enkelt!

Ett grymt roligt jobb

Även om Norgefilialen är borta så har vi växt både i Örebro och i Stockholm. Vi är fler än någonsin här på Örebrokontoret, och jag är glad över att kunna säga att det är ett riktigt bra gäng! De är extremt kunniga inom systemintegration och delar gärna med sig av sin kunskap, vilket är en av de största anledningarna till min utveckling det senaste året. De är dessutom trevliga att umgås med, och det är med ett litet leende på läpparna jag ser tillbaks på vår sommarfest med Fångarna på fortet och såklart kickoffen i Oslo förra året. När vi åkte dit i början på september hade jag jobbat på IB i bara några dagar och jag kommer ihåg att jag sa något i stil med att “om jobbet är ett förhållande så skulle jag säga att jag är i nyförälskelsefasen just nu”.

Bildresultat för love job

Precis som i andra relationer lägger sig den fasen efter ett tag, och det utvecklas till något annat. Mindre hjärtklappning och mer vardag, och det är ju här många förhållanden dör (både till jobb och till människor). Det rosaskimrande täcket har bleknat och man ser mer objektivt på tillvaron. Jag har i det här fallet haft tur: även med en mer saklig blick tycker jag verkligen om mitt jobb. Problemlösning, programmering och de här speciella utmaningarna* som man ställs inför som systemintegratör, tillsammans med bra kollegor – det är mitt recept på ett drömjobb. Jag hade som mål att hitta ett jobb som inte gav söndagsångest, och det här första året har visat att ja, jag lyckades med det. Ärligt talat: jag älskar mitt jobb. Good for me.

*Dagens utmaning: hur garanterar vi FIFO när vi plockar meddelanden från en MQ och sedan anropar en webtjänst? o.O

Det går framåt!

Hela året har präglats av en känsla av att hela tiden utvecklas, framförallt min övergripande kunskap om systemintegration, min säkerhet i konsultrollen och tekniska kunnande. Jag lär mig saker varje dag och jag har kommit en bra bit under det här året, även om det alltid finns oändligt mycket mer att lära. Kul!

Bildresultat för progress icon

Det går inte bara framåt för mig, den allmänna känslan i företaget är att vi växer; vi får fler uppdrag och vi blir fler anställda. Nya projekt dras igång där vi har nyckelroller och det ramlar in arbetsuppgifter för alla. Jag förutspår en rolig och utmanande höst/vinter!

Är detta slutet för bloggen då?

Ja – för den här bloggen. Tanken med A Year of Integration var att den skulle ha studenter som främsta målgrupp och handla om första tiden som nyexad systemintegratör, med fokus på att komma ut i arbetslivet och lämna studierna bakom sig. Det första året är nu över. Studierna hamnar längre bak i mitt minne och jag kan inte riktigt se mig själv som nyexad längre, även om jag fortfarande är i början på karriären. Den här bloggen har nu gjort sitt.

Men.

Bildresultat för blog meme

Jag gillar ju att blogga. Och tanken på att sluta helt känns ganska främmande – den här bloggen må ha gjort sitt, men jag är inte klar med bloggandet. En ny blogg kommer ta A Year of Integrations plats, det här är bara en paus. På återseende!

Så fixar du konsultrollen

Jag vet inte om jag varit inne på detta förut, men något jag inte var beredd på när jag slutade skolan var att jobba som konsult. Eller, jag hade koll på att väldigt många systemutvecklare jobbar som konsulter snarare än anställda på en IT-avdelning, men vad det egentligen innebar hade jag inte tänkt på.

Det finns två huvudtyper av konsulter: antingen sitter du på plats hos kunden, eller så sitter du “in-house”, dvs. tillsammans med dina konsultkollegor och jobbar på distans mot kunden. Hos oss på Integrationsbolaget har vi en blandning av dessa: vi är ett gäng som alltid sitter in-house här i Örebro och jobbar på distans mot kunderna, och sedan har vi ytterligare ett gäng som sitter ute hos kunder i längre uppdrag. Just nu har vi också några uppdrag där man varvar och sitter in-house ett par dagar i veckan och hos kund resten av tiden.

Som nyexad är det perfekt att sitta inhouse, eftersom du då har nära till dina kollegor och kan enkelt be om hjälp när du funderar på något. Du får långsamt vänja dig vid kundkontakten och hinner bli varm i kläderna innan du åker ut och sitter på plats hos en kund. Det är en ganska speciell känsla att lämna det trygga kontoret och åka på det första kundmötet, och jag kan absolut erkänna att jag var nervös första gången jag gjorde det. Därför tänkte jag dela med mig av mina bästa tips på hur du hanterar konsultrollen som ny på marknaden.

Klä upp dig, klä inte ut dig

En no-brainer för de flesta – i valet mellan luvtröja och kavaj, så välj kavajen, åtminstone till första mötet. Dock så tycker jag det är viktigt att ändå vara sig själv och inte försöka klä dig som någon annan. Har du aldrig kostym tycker inte jag att det finns någon anledning att slänga på sig en sådan “bara för att”. Inventera garderoben och hitta en kombo som du både känner dig hyfsat bekväm i och som är aningen vardagsuppklädd. Jag kör typ alltid på t-shirt med crazy tryck + bekväm tröja när jag är på vårt eget kontor, och byter till diskret t-shirt och kavaj när jag ska på kundbesök (eller kunden kommer hit).

Var en kameleont, inte en kappvändare

Som konsult behöver du kunna smälta in överallt, likt en hemlig agent läsa av arbetsplatsen, kulturen och människorna, och på nästan ingen tid alls anpassa dig till kunden du arbetar hos för tillfället. Du måste direkt komma in i jargongen och lägga ditt språk och ditt beteende på samma nivå som kunden. Det handlar om att vara flexibel till det yttersta, eftersom du som konsult kommer jobba hos massor av olika kunder, ibland i kortare och ibland i längre uppdrag. Inse detta från början och lär dig att vara lyhörd för klimatet som råder.

Men! Givetvis ska du inte känna att du bryter mot dina grundläggande värderingar. Om jag hamnade hos en kund där det förekom mobbning, diskriminering, sexuella trakasserier eller bara en jävligt taskig attityd så skulle jag inte acceptera detta. Nu har det här inte hänt mig, och jag hoppas det är ovanligt, men om det ändå skulle ske så vill jag vara stark nog att sätta ner foten och säga: det här är inte okej! Inte vara den som blundar för att det är bekvämt, tänker att “äsch, jag är bara här X veckor, jag behöver inte bry mig”.

Var dig själv, representera ditt företag

“Var dig själv!” Ja, vem skulle jag annars vara? Ett slitet uttryck, men det ligger ändå något i det. I skrivande stund sitter jag med trasiga mjukisbyxor framför datorn, hopsjunken som en säck potatis och kliar mig på magen, och visst är jag precis lika mycket mig själv som när jag tar på mig kavajen, det är bara en annan sida av mig. Skillnaden är att när jag är hemma behöver jag inte tänka på något annat än mig själv: på jobbet, ute hos en kund, så representerar jag inte längre bara mig, utan mitt företag. Om jag missköter mig hos en kund, så är det som att hela Integrationsbolaget missköter sig, i kundens ögon. För att ta exemplet ovan, med att sätta ner foten, så skulle jag i en diskussion utanför jobbet antagligen säga något i stil med “du är ju helt jäkla dum i huvudet”. Jag skulle inte säga samma sak vid morgonfikat hos kunden, utan välja en strategi för att få fram min åsikt på ett mer proffsigt sätt.

Skapa goda relationer och nya arbetstillfällen

De mänskliga relationerna är alltid de viktigaste, även om jobbet handlar om teknik: att skapa goda relationer till kunden är det som ger mer jobb till företaget, det är den grund vi använder för att leverera tekniska lösningar. Utan goda relationer får vi inga uppdrag. Även om du som konsult inte jobbar med sälj direkt, är det viktigt att ha med sig – hur du pratar med dina (om än tillfälliga) kollegor skapar relationen till kunden, och är den god, ja då kommer resten att flyta på. En delikat balans är förstås när det finns konsulter från andra bolag ute hos samma kund, men enligt min åsikt ska man se dessa i första hand som kollegor, och i andra hand som konkurrenter. Ingen vinner på att du ser andra konsulter som rivaler, det skapar bara dålig stämning. Även om du såklart, med goda intentioner, ska försöka göra den vassaste leveransen.

För att summera det hela: det är som att gå på lina, där du hela tiden måste avväga din person för att bete dig på ett passande sätt. Varje gång du kommer till en ny kund är det en ny lina att balansera på, och du vet inte på förhand om linan kommer vara slak eller spänd som en stålfjäder. Att känna in situationen och rätta sig efter den är en otroligt viktig egenskap som konsult, och har du koll på det innan du börjar har du halva inne.

En helt vanlig vecka som integrationskonsult

Vafalls, inget blogginlägg förra veckan? Skäms på mig! Till mitt försvar kan jag säga att jag har haft fullt upp, och jag tänkte ägna dagens inlägg till att summera veckan, så ni läsare får en inblick i hur vardagen kan se ut för en integrationskonsult.

Måndag

Vi började veckan med ett förvaltningsmöte, något vi har varje måndag. Då sitter vi i förvaltningsteamet och berättar för varandra hur veckan ser ut för oss, vilka projekt vi sitter med just nu och hur stor arbetsbelastning vi har. Det finns då möjlighet att flagga för om vi har mycket eller lite att göra, och omfördela veckans jobb om det behövs. Vi började med dessa möten i våras och de har verkligen hjälpt till att strukturera upp arbetet och gjort oss mer effektiva.

Efter mötet satte jag mig direkt framför datorn och undersökte hur en integration som vi deployade i fredags mådde, då jag var lite orolig över att något hade gått fel under helgen. För att undersöka statusen på integrationen kollade jag BizTalk och något som kallas “tracked messages”, vilket helt enkelt är BizTalks sätt att spara all information som skickas genom plattformen. Med hjälp av detta kontrollerade jag vad som skickats från ena systemet, hur det såg ut efter BizTalks bearbetning, vad som skickades till det andra systemet, och sedan vad som skickats tillbaks, för att verifiera att allt såg ut som det skulle.Bildresultat för deploy

Jag kunde tillslut konstatera att integrationen fungerade som tänkt, förutom en liten detalj som inte upptäckts i testmiljön. Jag rapporterade detta till min kollega och han kontaktade i sin tur IT-chefen hos kunden för att få ok på att fixa detta.

Tisdag

Dagen började med att vi fick ok på att göra fixen som upptäcktes på måndagen, men innan jag hann börja med detta fick jag mail om en ticket från en annan kund. En ticket innebär helt enkelt att en kund har ett behov som vi behöver åtgärda, och det kan vara allt från allvarliga incidenter, där produktionsmiljön på något sätt störts, och vi måste agera snabbt för att återställa normalläget, till små förändringar och önskemål. Den här gången var det något mitt emellan: en av våra tjänster som genererar filer hade slutat fungerat i testmiljön, och vi behövde manuellt skapa om dessa filer.

Bildresultat för ticket

Efter att jag åtgärdat detta, var jag tvungen att förbereda mig för nästa dag, eftersom den skulle bli lite annorlunda.

Onsdag

Dagen började med att jag satte mig på tåget klockan 07:00 och begav mig till en närliggande stad för att besöka en kund. De hade gjort en lite annorlunda beställning: de ville ha hjälp med att skapa en integration, men samtidigt använda den som ett case för att deras nya BizTalkansvarige skulle lära sig mer om plattformen. Så, istället för att bara leverera en färdig integration, gjorde jag en testversion av integrationen, sedan kodade vi den tillsammans under dagen.

Bildresultat för workshop icon

Dagen gick faktiskt över förväntan, och vi kom längre än jag trodde med integrationsarbetet. Vi hade en koppling mot en databas, som var lite småbesvärlig att få till, och sedan skulle integrationen skicka information från databasen via mail och sms, och fick till hela flödet under vår workshopsession, även om det inte blev helt klart.

Torsdag

På torsdagen var jag återigen tillbaks på kontoret och det blev en dag där jag gjorde lite av varje:

  • Fixade en incident där ett system saknade filer som skulle ha kommit in under natten
  • Undersökte vad som kan hända med en SQL Server om man byter tidszon på servern
  • Skapade en ny version av ett schema som används i flera av våra integrationer
  • Grejade med ett databasskript då vi behövde byta ut primärnyckeln i en databas

På eftermiddagen hade jag ett möte med HR-Therése, där hon informerade mig om hur det är att vara skyddsombud, ett ansvar jag precis axlat. Vi gjorde också en skyddsrond, vilket gick bra – inga större risker identifierade! Skapade även en ny mailsignatur för rollen som skyddsombud, och den blev jäkligt snygg om jag får säga det själv!

superman

Fredag

När jag vaknade på morgonen undrade jag vart veckan tagit vägen – redan fredag! På förmiddagen utnyttjade jag en av våra bästa jobbförmåner, nämligen att få massage. Otroligt gött, och SÅ lyxigt! Resten av dagen ägnade jag åt att göra den där fixen som upptäcktes på måndagen, vilket var aningen trixigt – men det löste sig till slut och jag kände mig nöjd med arbetsveckan när kollegan Douglas drog igång fredagslåten på eftermiddagen.

Bildresultat för weekend meme

I skrivande stund är det snart fredag igen, och jag ställer mig samma fråga som förra veckan – vart tog måndag till torsdag vägen? Tiden går fort när man har ett roligt jobb!

 

Language: