Det är få gubbar som är så pass underhållande att lyssna till som Ted Neward. I .NET Rocks! diskuterar han objekt-RDB-mappning där samtalet ibland hettar till ordentligt med en kille som jobbar med nHibernate.
Lyssna här!
måndag, maj 28, 2007
onsdag, maj 23, 2007
Separation of Concerns
Deltog i en diskussion om vad man med skiktade arkitekturer kan åstadkomma för att skapa föränderlighet i systemen vi bygger.
Förändringar i systemen sker alltid på sikt, men frågan är vilka förändringar. Antag två typer av förändringar, funktionella och tekniska:
Funktionella förändringar
Den skiktade arkitekturen kan inte alls svara upp mot funktionella förändringar, utan passar bättre för de tekniska kraven. Att kunna skapa nya lager eller att ersätta lager ger fördelar då man vill byta ut och lägga till teknik. Dimensionering kan hanteras genom att man skalar ut/upp runtime-miljön för ett lager. Hårdvaruvirtualisering bygger på skiktning i arkitekturen.
Framför allt tror jag att skiktade arkitekturer är populära för att man kan skapa 'Separation of Skills', dvs att vissa roller i exempelvis ett webutvecklingsprojekt kan jobba inom olika areas of interest, som man säger.
Visst kommer de tekniska förändringarna att kvarstå, men det är inget man tappar bara för att man inte bygger en traditionell skiktad arkitektur. Tvärtom så kommer SoC-design passa bättre även för de tekniska kraven.
Ser man till hur en skiktad design med lager på lager skulle hantera funktionella förändring så kan komplexiteten i relation till förändringstakten kunna se ut så här:
Tryggast är väl att det mest komplexa att ändra dvs processer kanske inte ändrar sig så ofta. Men det kan ju bero på att IT sitter och bromsar affärsutvecklingen med system som är byggda med skiktade arkitekturer.
Skapar man däremot en design där man skiljer de funktionella förändringarna åt logiskt så skulle det se annorlunda ut:
Förändringar i systemen sker alltid på sikt, men frågan är vilka förändringar. Antag två typer av förändringar, funktionella och tekniska:
Funktionella förändringar
- Regler - att kunna göra tillägg och förändringar av villkor i systemet som representerar affärsregler
- Processer - att ändra sekvensen av aktiviteter i en affärsprocess
- Information - att göra tillägg av nya informationsfält i den existerande datastrukturen
- Resurser - att i systemet ändra från att använda en viss resurs/tjänst till att använda en helt annan
- Händelser - att i systemet kunna hantera händelser som inte var påtänkta från början
- Applikationsserver - ex. ändra från IIS till Apache/Tomcat
- Databasserver - ex. ändra databasserver från SQL Server till MySQL
- Protokoll - ex. ändra kommunikationsprotokoll mellan logiska enheter i systemet
- Plattform - ex. flytta applikationen från Windows till Linux
- Hårdvara - ex. göra en tech-refresh av hårdvaran
- Säkerhet - ex. man vill göra applikationen åtkomlig över internet
- Dimensionering - ex. lyfta applikationen från 100 användare till 10000 användare
- Integration - ex. att man vill exponera funktioner och dataåtkomst via API:er
- Utökning - ex. bygga in nytt klientstöd för PDA:er och mobiltelefoner
Den skiktade arkitekturen kan inte alls svara upp mot funktionella förändringar, utan passar bättre för de tekniska kraven. Att kunna skapa nya lager eller att ersätta lager ger fördelar då man vill byta ut och lägga till teknik. Dimensionering kan hanteras genom att man skalar ut/upp runtime-miljön för ett lager. Hårdvaruvirtualisering bygger på skiktning i arkitekturen.
Framför allt tror jag att skiktade arkitekturer är populära för att man kan skapa 'Separation of Skills', dvs att vissa roller i exempelvis ett webutvecklingsprojekt kan jobba inom olika areas of interest, som man säger.
Visst kommer de tekniska förändringarna att kvarstå, men det är inget man tappar bara för att man inte bygger en traditionell skiktad arkitektur. Tvärtom så kommer SoC-design passa bättre även för de tekniska kraven.
Ser man till hur en skiktad design med lager på lager skulle hantera funktionella förändring så kan komplexiteten i relation till förändringstakten kunna se ut så här:
Tryggast är väl att det mest komplexa att ändra dvs processer kanske inte ändrar sig så ofta. Men det kan ju bero på att IT sitter och bromsar affärsutvecklingen med system som är byggda med skiktade arkitekturer.
Skapar man däremot en design där man skiljer de funktionella förändringarna åt logiskt så skulle det se annorlunda ut:
onsdag, maj 16, 2007
Väntar du också på bussen?
fredag, maj 04, 2007
Kategorisering av tjänster
En gång i månaden kommer The Architectural Journal med en ny utgåva. I nummer 11 finns det en artikel som hetter Ontology and Taxonomy of Services in a Service-Oriented Architecture där Shy Cohen beskriver vilka typer av tjänster som en Service Oriented Architecture byggs upp av:
Bus Services
Tror det återigen är viktigt att peka på att syftet med SOA inte är att kategorisera och generalisera över vilka tjänster man ska bygga, utan att se det som den infrastruktur som de s.k. Bus Service ska implementera. Dessutom är det lite väl sent att komma dragande med den här typen av artiklar nu när tekniken finns, kunderna är redo och det är dags att konkretisera istället för att flumma kring metaforer och ontologier.
Bus Services
- Communication Services - intermediära (mellan tjänster) tjänster som message routing, pub/sub, m m
- Utility Services - tjänster för Service Discovery, Identity Federation, m m
- Entity Services - tjänster som exponerar data entities
- Activity Services - tjänster som exponerar affärsspecifika funktioner
- Capability Services - tjänster som exponerar generella funktioner
- Process Services - tjänster som exponerar affärsprocesser
Tror det återigen är viktigt att peka på att syftet med SOA inte är att kategorisera och generalisera över vilka tjänster man ska bygga, utan att se det som den infrastruktur som de s.k. Bus Service ska implementera. Dessutom är det lite väl sent att komma dragande med den här typen av artiklar nu när tekniken finns, kunderna är redo och det är dags att konkretisera istället för att flumma kring metaforer och ontologier.
Prenumerera på:
Inlägg (Atom)