SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
Splitt og hersk: Fleksibel 
arkitektur med mikrotjenester! 
Henrik Schwarz – JavaZone 2014 
1
Om prosjektet 
• Prosjekt hos FLO/IKT: Modernisering av 
kjernetjenester 
– Informasjonsutveksling: SOA-infrastruktur 
– Registertjenester: Enterprisekatalog 
• Utviklet flere graderte løsninger basert på 
mikrotjeneste-arkitektur
Monolittisk arkitektur 
• Bygget og deployert som en enkelt 
enhet 
• Kjører i en enkelt prosess 
• Den minste endring krever bygg og 
deploy av hele applikasjonen 
• Enkelt å komme i gang, men kan bli 
krevende å vedlikeholde 
• Skalering krever duplisering av hele 
applikasjonen 
Applikasjon 
Database
Mikrotjeneste-arkitektur 
• Filosofi hentet fra UNIX: small & simple 
• Dele opp en løsning i små fokuserte tjenester 
• Deployeres som selvstendige prosesser 
• Kommuniserer over standard protokoll 
• Tjenester er løst koblet 
Tjeneste 
Tjeneste Tjeneste 
Tjeneste
Kommunikasjon mellom tjenester
Unngå kjede av synkrone kall 
oppdatere status 
Tjeneste A Tjeneste B 
hente status 
Tjeneste A Tjeneste B 
operasjon x 
operasjon x 
Push 
Pull 
6 
• ”Pull” er anbefalt over ”push” 
• Eventual consistency
Utviklingsmiljø 
• Separat GIT-repository for hver tjeneste 
• Maven Archetype plugin 
• Egenutviklet Maven-plugin lager kjørbar 
JAR-fil (embedder Jetty ved behov)
Kjøremiljø og deployment 
• Standalone Java-applikasjoner (JAR) 
• Kjøres som services i Windows 
• Virtualisert miljø - VMWare 
• Automatisert installasjon og deployment 
med Powershell-script
Hva skal man velge?
Fordeler 
• Kan velge mest egnet teknologi / persistens 
for den enkelte tjeneste 
• Små moduler gjør det lettere å få oversikt 
• Kan redeployere deler av systemet 
• Effektiv måte å skalere deler av systemet på 
• Lettere å skalere utviklingsteam
Utfordringer 
• Ingen Silver Bullet! 
• Høyere initiell kostnad 
• Ekstra kostnad for hver tjeneste 
• Distribuert system innfører kompleksitet 
• Vanskelig å finne riktig oppdeling i starten 
• Refaktorering på tvers av tjenester 
• Versjonering av tjenester 
• Følge tråden på tvers av tjenester 
• Kan koste mer å drifte
Erfaringer og tips 
• Gjør det lett å lage nye tjenester! 
• Ikke del opp for mye 
• Fokus på fornuftig oppdeling i tjenester og 
kvalitet på grensesnitt 
• Automatiser mest mulig (infrastruktur, 
deployment) 
• Sentralisert logging og overvåkning er viktig 
• Distribuerte transaksjoner skalerer ikke!
Konklusjon 
• Å dele opp et stort system kan være lurt! 
• Gir fleksibel arkitektur, men alt har sin pris 
• Tydelig buzz i markedet, vær skeptisk! 
• Krever prosjekter av en viss størrelse 
• Gode erfaringer så langt fra Forsvaret, men 
for tidlig med endelig konklusjon!
Fortsett dialogen! 
@bouvet 
Facebook.com/bouvet Utbrudd.bouvet.no

Mais conteúdo relacionado

Semelhante a Splitt og hersk: Fleksibel arkitektur med mikrotjenester!

Distribuert utvikling på net platformen
Distribuert utvikling på net platformenDistribuert utvikling på net platformen
Distribuert utvikling på net platformenRune Sundling
 
Flexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnPFlexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnPOle Kristian Mørch-Storstein
 
Oslo Software Architecture: Skatteetatens målarkitektur og PoC
Oslo Software Architecture: Skatteetatens målarkitektur og PoCOslo Software Architecture: Skatteetatens målarkitektur og PoC
Oslo Software Architecture: Skatteetatens målarkitektur og PoCTormod Varhaugvik
 
Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...
Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...
Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...ErgoGroup
 
Monolitter og byggeklosser jon erik solheim - stacc
Monolitter og byggeklosser   jon erik solheim - staccMonolitter og byggeklosser   jon erik solheim - stacc
Monolitter og byggeklosser jon erik solheim - staccJon Solheim
 
GoOpen 2010: Svein Erik Wilthil
GoOpen 2010: Svein Erik WilthilGoOpen 2010: Svein Erik Wilthil
GoOpen 2010: Svein Erik WilthilFriprogsenteret
 
Objektorientering og design av kode
Objektorientering og design av kodeObjektorientering og design av kode
Objektorientering og design av kodeRune Sundling
 
Kinderegget; enklere, billigere og mye raskere
Kinderegget; enklere, billigere og mye raskereKinderegget; enklere, billigere og mye raskere
Kinderegget; enklere, billigere og mye raskereTormod Varhaugvik
 
6 - Sverre Boland, Hjellnes Consult AS
6 - Sverre Boland, Hjellnes Consult AS6 - Sverre Boland, Hjellnes Consult AS
6 - Sverre Boland, Hjellnes Consult ASVVS-Foreningen
 
GoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug HanssenGoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug HanssenFriprogsenteret
 
Ledig stillinger som DevOps og Fullstack utviklere
Ledig stillinger som DevOps og Fullstack utviklereLedig stillinger som DevOps og Fullstack utviklere
Ledig stillinger som DevOps og Fullstack utviklereTor Saur
 
Plug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate Development
Plug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate DevelopmentPlug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate Development
Plug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate DevelopmentThe Research Council of Norway, IKTPLUSS
 
Kan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekterKan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekterThor Henning Hetland
 
Hva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, TrondheimHva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, TrondheimEspen Johanson
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryKnut Haugen
 
Mellom bedriftens nettverk og skyen
Mellom bedriftens nettverk og skyenMellom bedriftens nettverk og skyen
Mellom bedriftens nettverk og skyenMVP Dagen
 

Semelhante a Splitt og hersk: Fleksibel arkitektur med mikrotjenester! (20)

Nokios Tv2012 Hva Forventer En Fjortis
Nokios   Tv2012   Hva Forventer En FjortisNokios   Tv2012   Hva Forventer En Fjortis
Nokios Tv2012 Hva Forventer En Fjortis
 
Skalerbare systemer
Skalerbare systemerSkalerbare systemer
Skalerbare systemer
 
Distribuert utvikling på net platformen
Distribuert utvikling på net platformenDistribuert utvikling på net platformen
Distribuert utvikling på net platformen
 
Flexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnPFlexible, scalable self-service provisioning using Office PnP
Flexible, scalable self-service provisioning using Office PnP
 
Oslo Software Architecture: Skatteetatens målarkitektur og PoC
Oslo Software Architecture: Skatteetatens målarkitektur og PoCOslo Software Architecture: Skatteetatens målarkitektur og PoC
Oslo Software Architecture: Skatteetatens målarkitektur og PoC
 
Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...
Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...
Utvikling av webløsning ved hjelp av fri programvare og cloud computing, bjør...
 
Monolitter og byggeklosser jon erik solheim - stacc
Monolitter og byggeklosser   jon erik solheim - staccMonolitter og byggeklosser   jon erik solheim - stacc
Monolitter og byggeklosser jon erik solheim - stacc
 
GoOpen 2010: Svein Erik Wilthil
GoOpen 2010: Svein Erik WilthilGoOpen 2010: Svein Erik Wilthil
GoOpen 2010: Svein Erik Wilthil
 
Objektorientering og design av kode
Objektorientering og design av kodeObjektorientering og design av kode
Objektorientering og design av kode
 
Kinderegget; enklere, billigere og mye raskere
Kinderegget; enklere, billigere og mye raskereKinderegget; enklere, billigere og mye raskere
Kinderegget; enklere, billigere og mye raskere
 
6 - Sverre Boland, Hjellnes Consult AS
6 - Sverre Boland, Hjellnes Consult AS6 - Sverre Boland, Hjellnes Consult AS
6 - Sverre Boland, Hjellnes Consult AS
 
GoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug HanssenGoOpen 2010: Håvard Haug Hanssen
GoOpen 2010: Håvard Haug Hanssen
 
Ledig stillinger som DevOps og Fullstack utviklere
Ledig stillinger som DevOps og Fullstack utviklereLedig stillinger som DevOps og Fullstack utviklere
Ledig stillinger som DevOps og Fullstack utviklere
 
Plug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate Development
Plug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate DevelopmentPlug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate Development
Plug and play: Smarte apps for hjemmet, Erik Berg, Telenor Corporate Development
 
Kan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekterKan vi skape mye mere verdi i softwareporosjekter
Kan vi skape mye mere verdi i softwareporosjekter
 
Hva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, TrondheimHva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
 
Soa Runtime
Soa RuntimeSoa Runtime
Soa Runtime
 
Semantisk integrasjon
Semantisk integrasjonSemantisk integrasjon
Semantisk integrasjon
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Mellom bedriftens nettverk og skyen
Mellom bedriftens nettverk og skyenMellom bedriftens nettverk og skyen
Mellom bedriftens nettverk og skyen
 

Splitt og hersk: Fleksibel arkitektur med mikrotjenester!

  • 1. Splitt og hersk: Fleksibel arkitektur med mikrotjenester! Henrik Schwarz – JavaZone 2014 1
  • 2. Om prosjektet • Prosjekt hos FLO/IKT: Modernisering av kjernetjenester – Informasjonsutveksling: SOA-infrastruktur – Registertjenester: Enterprisekatalog • Utviklet flere graderte løsninger basert på mikrotjeneste-arkitektur
  • 3. Monolittisk arkitektur • Bygget og deployert som en enkelt enhet • Kjører i en enkelt prosess • Den minste endring krever bygg og deploy av hele applikasjonen • Enkelt å komme i gang, men kan bli krevende å vedlikeholde • Skalering krever duplisering av hele applikasjonen Applikasjon Database
  • 4. Mikrotjeneste-arkitektur • Filosofi hentet fra UNIX: small & simple • Dele opp en løsning i små fokuserte tjenester • Deployeres som selvstendige prosesser • Kommuniserer over standard protokoll • Tjenester er løst koblet Tjeneste Tjeneste Tjeneste Tjeneste
  • 6. Unngå kjede av synkrone kall oppdatere status Tjeneste A Tjeneste B hente status Tjeneste A Tjeneste B operasjon x operasjon x Push Pull 6 • ”Pull” er anbefalt over ”push” • Eventual consistency
  • 7. Utviklingsmiljø • Separat GIT-repository for hver tjeneste • Maven Archetype plugin • Egenutviklet Maven-plugin lager kjørbar JAR-fil (embedder Jetty ved behov)
  • 8. Kjøremiljø og deployment • Standalone Java-applikasjoner (JAR) • Kjøres som services i Windows • Virtualisert miljø - VMWare • Automatisert installasjon og deployment med Powershell-script
  • 9. Hva skal man velge?
  • 10. Fordeler • Kan velge mest egnet teknologi / persistens for den enkelte tjeneste • Små moduler gjør det lettere å få oversikt • Kan redeployere deler av systemet • Effektiv måte å skalere deler av systemet på • Lettere å skalere utviklingsteam
  • 11. Utfordringer • Ingen Silver Bullet! • Høyere initiell kostnad • Ekstra kostnad for hver tjeneste • Distribuert system innfører kompleksitet • Vanskelig å finne riktig oppdeling i starten • Refaktorering på tvers av tjenester • Versjonering av tjenester • Følge tråden på tvers av tjenester • Kan koste mer å drifte
  • 12. Erfaringer og tips • Gjør det lett å lage nye tjenester! • Ikke del opp for mye • Fokus på fornuftig oppdeling i tjenester og kvalitet på grensesnitt • Automatiser mest mulig (infrastruktur, deployment) • Sentralisert logging og overvåkning er viktig • Distribuerte transaksjoner skalerer ikke!
  • 13. Konklusjon • Å dele opp et stort system kan være lurt! • Gir fleksibel arkitektur, men alt har sin pris • Tydelig buzz i markedet, vær skeptisk! • Krever prosjekter av en viss størrelse • Gode erfaringer så langt fra Forsvaret, men for tidlig med endelig konklusjon!
  • 14. Fortsett dialogen! @bouvet Facebook.com/bouvet Utbrudd.bouvet.no

Notas do Editor

  1. Konsulent i Bouvet og jobber som Java-utvikler og arkitekt. <number>
  2. <number>
  3. Det tradisjonelle er en monolottisk arkitektur, kan være en spring-basert webapplikasjon. Kan bli krevende å vedlikeholde: vanskelig for nye utviklere å få oversikt over koden krever valg av teknologistack ved starttidspunktet <number>
  4. Løst koblet: tjenester er kun avhengig av publisert kontrakt til andre tjenester. Tjenesten er informasjonseier. Ikke lov å gå rett i basen! <number>
  5. <number>
  6. <number>
  7. <number>
  8. <number>
  9. <number>
  10. <number>
  11. <number>
  12. <number>
  13. HVIS DET ER SPØRSMÅL STÅR JEG PÅ BOUVET STANDEN ETTERPÅ!! <number>