{"id":247,"date":"2023-03-14T19:40:00","date_gmt":"2023-03-14T18:40:00","guid":{"rendered":"https:\/\/djax.se\/blog\/?p=247"},"modified":"2025-01-23T18:42:52","modified_gmt":"2025-01-23T17:42:52","slug":"arkitektur","status":"publish","type":"post","link":"https:\/\/djax.se\/?p=247","title":{"rendered":"Arkitektur"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Jag \u00e4r mycket intresserad av arkitektur. Hur koden struktureras, vart den placeras, vad som anropar vad, vilka dom\u00e4nobjekten \u00e4r, hur datan fl\u00f6dar genom systemet. Arkitektur representerar f\u00f6r mig de val som g\u00f6rs i utvecklingen av systemet som \u00e4r sv\u00e5rast att \u00e4ndra kostnadseffektivt senare. Dessa val kan vara tekniska. Som val av databas och spr\u00e5k etc. Men det \u00e4r inte de jag fr\u00e4mst t\u00e4nker p\u00e5. Tekniska val spelar roll, men anv\u00e4nds de vanligaste spr\u00e5ken finns f\u00f6rmodligen f\u00f6ruts\u00e4ttningarna att utveckla det som \u00f6nskas oavsett.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Big design up front is dumb. Doing no design up front is even dumber.<\/p>\n<cite>Dave Thomas<\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Jag t\u00e4nker snarare p\u00e5 de val som g\u00f6rs i designen av systemets komponenter. Det \u00e4r inte l\u00e4ngre sp\u00e4nnande att se om man lyckas koda det d\u00e4r mejlet som skall g\u00e5 iv\u00e4g till den d\u00e4r personen n\u00e4r n\u00e5gon viss sak h\u00e4nder. Det behovet kommer l\u00f6sa sig. N\u00e5got kommer bli levererat som utf\u00f6r detta. Det som \u00e4r intressant att fr\u00e5ga sig \u00e4r: skrapar denna efterfr\u00e5gan p\u00e5 ett st\u00f6rre organisatoriskt behov som snart kommer uppdaga sig m\u00e5ne? Kan d\u00e5 systemet byggas p\u00e5 ett s\u00e5dant s\u00e4tt att det blir enkelt att koppla p\u00e5 mera personer till samma l\u00f6sning?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finns det n\u00e5gon grupp av funktioner som beh\u00f6ver utvecklas eller \u00e4ndras st\u00e4ndigt? Optimera d\u00e5 med extra tajta ramar f\u00f6r leverans av denna <strong>k\u00e4rnfunktionalitet <\/strong>i systemet.  Snabbt exempel: en grym basklass andra komponenter kan \u00e4rva fr\u00e5n.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Complexity has to live somewhere. If you are lucky, it lives in well-defined places. In code where you decided a bit of complexity should go, in documentation that supports the code, in training sessions for your engineers. You give it a place without trying to hide all of it. You create ways to manage it. You know where to go to meet it when you need it. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/ferd.ca\/complexity-has-to-live-somewhere.html\">Complexity Has to Live Somewhere<\/a><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00f6rs\u00f6k ocks\u00e5 skapa en plats i periferin av systemet d\u00e4r slit och sl\u00e4ng funktionalitet kan skapas och tas bort. Kanske blir moduler i denna arm av systemet inte lika snyggt integrerad f\u00f6r anv\u00e4ndaren men visar det sig att n\u00e5gon funktion \u00e4r extra omtyckt kan den f\u00e5 en b\u00e4ttre plats vid bordet i framtiden.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">En god arkitektur skapar en trivsam <a href=\"https:\/\/future.com\/the-case-for-developer-experience\/\" data-type=\"URL\" data-id=\"https:\/\/future.com\/the-case-for-developer-experience\/\">DX <\/a>som leder till att behov kan f\u00f6rst\u00e5s, utvecklas och levereras smidigt och utan regressioner.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Arkitekturen bjuder in till ett gemensamt spr\u00e5k d\u00e4r kodare inte l\u00e4ngre pratar om enskilda klasser, utan st\u00f6rre koncept och hur de kopplas samman med andra delar av systemet.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">What matters is the amount of confusion developers feel when going through the code<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/minds.md\/zakirullin\/cognitive\">Cognitive load is what matters<\/a><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Arkitekturen kan skapa m\u00f6jligheten f\u00f6r flera att g\u00f6ra mer utan omprogrammering. Systemet skall vara tillr\u00e4ckligt datadrivet och gr\u00e4nssnitt f\u00f6r konfigurering exponeras till anv\u00e4ndaren. Skapa framtida f\u00f6ruts\u00e4ttningar som motverkar &#8221;lusten&#8221; att h\u00e5rdkoda v\u00e4rden som b\u00f6r vara dynamiska.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Strive to leave the world less complex than you found it! You&#8217;re not done when you&#8217;ve &#8221;solved the problem&#8221;. You&#8217;re only done when you&#8217;ve cleaned up the inevitable mess.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Brian Goetz<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Arkitektur etablerar ocks\u00e5 en gemensam samsyn kring teknikvalen i systemet och hur olika typer av funktioner brukar designas. Vissa delar kanske k\u00f6rs som \u00e5terkommande bakgrundsjobb. Andra funktioner kickas ig\u00e5ng av n\u00e5gon h\u00e4ndelse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Arkitekturen p\u00e5verkar hur systemet k\u00f6rs i produktion. Vilka f\u00f6ruts\u00e4ttningar som finns att fels\u00f6ka OLIKA typer av problem och hur systemet kan observeras under last.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Personen eller personerna som driver arbetet med arkitekturen kanske kallar sig arkitekter men de \u00e4r ocks\u00e5 alltid mycket kompetenta <strong>programmerare<\/strong>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">AaaS &#8211; Architecture as a service<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Software Architecture for Developers \u2022 Simon Brown \u2022 YOW! 2017\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/dtVI7PvgVsQ?start=652&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n<cite><a href=\"https:\/\/youtu.be\/dtVI7PvgVsQ?t=652\" data-type=\"URL\" data-id=\"https:\/\/youtu.be\/dtVI7PvgVsQ?t=652\">Software Architecture for Developers \u2022 Simon Brown<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Arkitekterna \u00e4r de som slutligen fr\u00e5gar sig &#8221;Beh\u00f6ver vi verkligen detta?&#8221;. Beh\u00f6vs ett externt loggningssystem? Inte nu men senare? Beh\u00f6vs AI s\u00e4ttas in h\u00e4r? B\u00f6r systemet g\u00f6ras om till microservices? Varf\u00f6r?<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Designing how a modification is best incorporated into an established program depends on the perception of the similarity of the new demand with the operational facilities already built into the program. The kind of similarity that has to be perceived is one between aspects of the world. It only makes sense to the agent who has knowledge of the world, that is to the <strong>programmer<\/strong>.<\/p>\n<cite><a href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/Naur.pdf\">Peter Naur \u2013 Programming as Theory Building<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Arkitekterna f\u00f6rs\u00f6ker se hur behoven kan komma att \u00e4ndra sig i framtiden. Beh\u00f6ver systemet orka med mer anv\u00e4ndare inom 5 \u00e5r s\u00e5 p\u00e5verkar det valen som g\u00f6rs idag. Skall systemet s\u00e4ljas i andra l\u00e4nder i framtiden s\u00e5 p\u00e5verkar det valen som g\u00f6rs idag. Hur smidigt det \u00e4r att f\u00e5 ig\u00e5ng nya utvecklare att skapa nya funktioner i framtiden p\u00e5verkas av valen som g\u00f6rs idag. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vikten i m\u00e5nga av dessa fr\u00e5gor kommer fr\u00e5n aff\u00e4rsm\u00e5len och anv\u00e4ndaren. En arkitekt beh\u00f6ver d\u00e4rf\u00f6r f\u00f6rst\u00e5 aff\u00e4rsprocessen och varf\u00f6r kunderna vill ge sina pengar i utbyte mot systemet. De \u00e4r en form av tekniskt ledarskap.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">En mjukvaruarkitekt arbetar med att strukturera och designa mjukvaror s\u00e5 att de<br>uppfyller b\u00e5de funktionella krav och de olika arkitekturella kvalitetsegenskaperna<br>som st\u00e4lls p\u00e5 systemen. Mjukvaruarkitekten deltar ofta aktivt i <strong>programutvecklingen<\/strong>.<br>Mjukvaruarkitekten arbetar vanligen p\u00e5 en mer detaljerad niv\u00e5 \u00e4n l\u00f6snings-<br>arkitekten, varvid rollen kan ses som en specialisering av l\u00f6sningsarkitektens.<\/p>\n<cite><a href=\"https:\/\/www.iasa.se\/wp-content\/uploads\/2020\/02\/IASA-Arkitektroller-2020.pdf\">https:\/\/www.iasa.se\/wp-content\/uploads\/2020\/02\/IASA-Arkitektroller-2020.pdf<\/a><\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e5 &#8221;arkitekt&#8221; tenderar att bli en n\u00e5got diffus titel gillar jag starkt definitionen ovan Iasa Sweden skapat f\u00f6r den specifika roll jag t\u00e4nker p\u00e5. Notera ocks\u00e5 att de anser att mjukvaruarkitekten \u00e4r en form av l\u00f6sningsarkitekt och allts\u00e5 kan verksamheten. Kompletta listan f\u00f6r typer av arkitekter enligt Iasa Sweden \u00e4r:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enterprisearkitekt\n<ul class=\"wp-block-list\">\n<li>Sammanh\u00e5llande och<br>\u00f6vergripande roll f\u00f6r<br>arkitekturarbetet inom<br>organisationen med fokus p\u00e5<br>helhetssyn<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Verksamhetsarkitekt\n<ul class=\"wp-block-list\">\n<li>I organisationens huvudsakliga<br>verksamhet n\u00e4ra utveckling av<br>produkter, processer och<br>informationshantering<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>L\u00f6sningsarkitekt<\/strong>\n<ul class=\"wp-block-list\">\n<li>Mellan verksamheten och det<br>teknikst\u00f6d som st\u00f6ttar<br>verksamheten<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Mjukvaruarkitekt<\/strong>\n<ul class=\"wp-block-list\">\n<li>N\u00e4ra det teknikst\u00f6d som<br>anv\u00e4nds av verksamheten<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Infrastrukturarkitekt\n<ul class=\"wp-block-list\">\n<li>S\u00e4kerst\u00e4ller att organisationen<br>har r\u00e4tt infrastruktur f\u00f6r<br>verksamhetens behov av<br>applikationsst\u00f6d, n\u00e4tverks-<br>kommunikation, datalagring<br>och s\u00e4kerhet<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Gamers brukar prata om &#8221;End game&#8221;. Den sista delen av dataspelet n\u00e4r inte s\u00e5 mycket nytt finns att uppt\u00e4cka utan spelet blir mer av en loop av \u00e5terkommande saker som skall utf\u00f6ras. Hur ser ditt systems &#8221;End game&#8221; ut? Sett till systemets hela livsl\u00e4ngd, vart kommer den st\u00f6rsta delen av tiden spenderas? Vad kan g\u00f6ras s\u00e5 den st\u00f6rsta delen blir s\u00e5 kul som m\u00f6jligt?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e4r ett system f\u00f6ds vid klicket p\u00e5 &#8221;File&#8221;-&gt;&#8221;New project&#8221; s\u00e5 finns ingen arkitektur, bara en tom textfil utan kod. H\u00e4r \u00e4r allt m\u00f6jligt men valen \u00e4r ocks\u00e5 f\u00f6rlamande. Arkitekturen s\u00e4tter upp ramarna vi h\u00e5ller oss inom s\u00e5 antal <em>m\u00f6jliga <\/em>val g\u00f6rs mindre men arbetet g\u00f6rs <em>effektivare <\/em>p\u00e5 sikt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c4ven i system som byggts utan n\u00e5gon uttryckt arkitektur tror jag \u00e4nd\u00e5 att det alltid finns en d\u00e4r. N\u00e5gon kultur kring vad som ligger vart eller hur olika behov implementeras. T\u00e4nk till inf\u00f6r varje \u00e4ndring och l\u00e4mna koden i lite b\u00e4ttre skick varje g\u00e5ng kommer ge avkastning.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Mera l\u00e4sning<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Spring Modulith \u2013 Spring for the Architecturally Curious Developer by Oliver Drotbohm\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/SjSjBZ7mo1g?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Introduktion till ett mycket intressant nytt ramverk till Spring som kan s\u00e4kerst\u00e4lla att systemets moduler beror p\u00e5 varandra p\u00e5 r\u00e4tt s\u00e4tt. Kan bland annat skapa diagram \u00f6ver arkitekturen i PlantUML format automatiskt \u2764\ufe0f<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jag \u00e4r mycket intresserad av arkitektur. Hur koden struktureras, vart den placeras, vad som anropar vad, vilka dom\u00e4nobjekten \u00e4r, hur datan fl\u00f6dar genom systemet. Arkitektur representerar f\u00f6r mig de val som g\u00f6rs i utvecklingen av systemet som \u00e4r sv\u00e5rast att \u00e4ndra kostnadseffektivt senare. Dessa val kan vara tekniska. Som val av databas och spr\u00e5k etc. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":255,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-247","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-okategoriserad"],"_links":{"self":[{"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=247"}],"version-history":[{"count":5,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts\/247\/revisions"}],"predecessor-version":[{"id":738,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/posts\/247\/revisions\/738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=\/wp\/v2\/media\/255"}],"wp:attachment":[{"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/djax.se\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}