84
Webbens arkitektur Delade ytor, oberoende djup

Webbens Arkitektur

  • Upload
    niklal

  • View
    209

  • Download
    1

Embed Size (px)

DESCRIPTION

Slides in swedish from a presentation I held at Valtech Days 2009 on the architecture of the web. I discus HTTP, resource and service application design.

Citation preview

Page 1: Webbens Arkitektur

Webbens arkitektur

Delade ytor, oberoende djup

Page 2: Webbens Arkitektur

Tema

Webben som plattform.

● Nätverk av resurser● Öppna format● Uniformt API

Hållbarhet (skalbarhet).

Page 3: Webbens Arkitektur

Innehåll

● Identifikation● Representation● Form● Funktion

● Komposition● Feeds● Maskineri

Page 4: Webbens Arkitektur

Vem?

Niklas Lindström, Valtech<[email protected]>

Page 5: Webbens Arkitektur

Det kommer attbyggas om.

Bygg förombyggbarhet.

Page 6: Webbens Arkitektur

Syfte

Material — förstå vad som är:

● fasta delar● klister

Page 7: Webbens Arkitektur

Ändamål

Kunna:

● byta utseende● koppla ihop med andra webbapplikationer● byta ut indexering/sökmotor

— utan att redigera om alla artiklar!

Page 8: Webbens Arkitektur

Strategi

Hållbara ting med:

● tydliga former● entydiga relationer

Föränderliga funktioner.

Page 9: Webbens Arkitektur

101

Obs! Detta är fundamentet.

Rika klienter/-beteenden byggs med fördel ovanpå detta.

Page 10: Webbens Arkitektur

2 sekunder historia

Internet: nätverk av datorer

Webben: nätverk av dokument

Page 11: Webbens Arkitektur

En webbplats är

En samling pusselbitar.

Kombineras med andra pusselbitar "hur som helst":

● länkning!

Page 12: Webbens Arkitektur

"Startsidan"

En mötesplats. Skyltar.

Ingen webbplatsbehållare.

Page 13: Webbens Arkitektur

Beständiga delar

Primära resurser:

● har en eller flera representationer● kan visas i: vyer/tjänster (virtuellt)● samverkan: länkar

Page 14: Webbens Arkitektur

Exponera vad du har, inte hur du åstadkommer det.

Page 15: Webbens Arkitektur

Tänk i resurser

● de primära byggblocken● det som ska vara beständigt● dessa länkas samman

.. samlingar/kategorier är också resurser.

Page 16: Webbens Arkitektur

Ordnade behov

1) Användning, bestämmer form på..2) Data, som används av..3) Funktioner, vilka underlättar #1.

Page 17: Webbens Arkitektur

Identifikation

Page 18: Webbens Arkitektur

Namn

URI:er är namn på resurser.

Kan hämtas: HTTP

Page 19: Webbens Arkitektur

URI:n är

Nyckeln i strategin.

För beständighet: mynta hållbara namn.

Page 20: Webbens Arkitektur

Hållbara namn

En webbsidas publika namn — URI — ska hålla lika länge som sidan själv.

Åratal? Decennier?

Page 21: Webbens Arkitektur

Intern-ID eller "sammansatt nyckel"?

Ska vara intakta efter byte av:

● datalager● publiceringsplattform

Finns behov av förutsägbarhet?

Page 22: Webbens Arkitektur

Namnsammansättning

Domännamnet = grundläggande kontext.

● typ● ursprung (publiceringskälla)● datum● "primär etikett" (titel/namn..)

Page 23: Webbens Arkitektur

Mindre bra

http://example.com/publisher.jsp?article=x123

http://examplecom/CMSVendor/display_product.aspx?oid=23779&viewstate=list&format=html

● irrelevant information● hårdkopplad till underliggande lösning

Page 24: Webbens Arkitektur

Bra URI:er

http://example.com/book/23779 http://example.com/book/23779.html http://example.com/book/23779.json

http://example.com/books http://example.com/books.html http://example.com/books.atom

http://example.com/book/23779/related

Page 25: Webbens Arkitektur

Representation

Page 26: Webbens Arkitektur

Primära resurser

● Digitala verk (ren information, olika mediaformat)● Saker i världen● Koncept (kategori, grupp, modell, ...)

Page 27: Webbens Arkitektur

Virtuella resurser

Vyer, t.ex.:

● expanderad information (relaterade ting)● "dekorerat"● kompositioner● genererade format/responser

Page 28: Webbens Arkitektur

Tjänster? Resultat.

● sökningar, filtreringar● sammanställningar

Page 29: Webbens Arkitektur

Dokument

Inneboende egenskaper:

● ariklar, personer, produkter● {titel, datum}, {namn, roller}, ...● relationer: namngivna länkar!

Page 30: Webbens Arkitektur

Listor

● titel, typ, ...● Länkar till dokument.● Paginering: länkar till andra listor.

Page 31: Webbens Arkitektur

Tjänster

Parameteriserade resurser.D.v.s genererade dokument.

Page 32: Webbens Arkitektur

Allt detta kan ha URI:er

Kan hämtas.

En del av dem kan också:

● uppdateras● raderas● "ta emot data"

Page 33: Webbens Arkitektur

Form

Page 34: Webbens Arkitektur

Hypertext

Syntax:

● HTML● XML● JSON

Page 35: Webbens Arkitektur

Modeller

● HTML: XHTML 1, HTML5● Atom: feed-format (med plats för nya

egenskaper och relationer)● JSON: sparsam semantik● RDF: DC, FOAF, SIOC, CC, SKOS, OWL, ...

Page 36: Webbens Arkitektur

API för virtuella resurs-URI:er

HTML-formulär!

● parametervärden för parameteriserade resurser● posta "paket" som kan bli nya resurser

.. WADL..

Page 37: Webbens Arkitektur

Ekonomisk

Var "upplyst lat".

Återuppfinn ingenting i onödan.

Page 38: Webbens Arkitektur

Överlevnad

Permanent Objects, Disposable Systems

[The California Digital Library, Maj 2009]

System kommer och går..

Page 39: Webbens Arkitektur

"Now here is the curious thing. There is so much data available on Web pages, that there is a market for tools that 'reverse engineer' that process."

"These are tools that read pages, and with a bit of human advice, recreate the database object."

[Tim Berners-Lee, 1998]

Page 40: Webbens Arkitektur

Google

Varför klarar sig google så bra?

● De har koll på sin data.● De har koll på DIN data..

Page 41: Webbens Arkitektur

Funktion

Page 42: Webbens Arkitektur

REST

Det uniforma API:t.

● GET● POST● PUT● DELETE

Page 43: Webbens Arkitektur

Hypertext as the engine of application state.

Page 44: Webbens Arkitektur

HTTP

Åtkomst/transport.

Protokollet är:

● enkelt● tillräckligt

Page 45: Webbens Arkitektur

Content negotiation

curl -L -H Accept:application/xhtml+xml \ http://example.org/about

...

HTTP/1.1 200 OKContent-Location: http://example.org/about.xhtml

Page 46: Webbens Arkitektur

Komposition

Page 47: Webbens Arkitektur

Din resursarkitektur

● Vad är primärt?● Vad är beräknat (vilka parametrar)?● Vilka externa resurser ("tjänster") vill du

använda?

Page 48: Webbens Arkitektur

Hur bygga ut?

Vad beror dina resurser på:hur många lådor på rad / i hög?

Vad beror dina funktioner på:hur mycket sladdar i lådorna?

Page 49: Webbens Arkitektur

Databasmotorer är optimeringar!

Gör inte ditt material beroende av dem.

Dina värdeskapande tjänster däremot..?

● kan förändras på alla möjliga vis!

Page 50: Webbens Arkitektur

Case: indexering

"Sökmotorer"En tjänst på din information, inte på ditt maskineri.

● bland dina egna virtuella resurser● google, yahoo, siteseeker...

Page 51: Webbens Arkitektur

Hur är indexeringen integrerad?

● Hur tar den emot dina resurser?● Hur serverar den dem?

Länkar!

● Format: uniformt nog att vara utbytbar?

Page 52: Webbens Arkitektur

Våga pröva nytt

Bygg inte allt i samma låda.

Använd andras lådor:

● statistik● kommentarer, feedback● bilderböcker, länksamlingar

Page 53: Webbens Arkitektur

RO över ån efter vatten?

Indexera dig själv!

Fristående webbapplikationer för olika delar av samma webbplats.

.. Men tänk på komplexiteten.

Page 54: Webbens Arkitektur

Separation

Enkelt är bättre än komplext.

Komplext är bättre än komplicerat.

"Hur mkt sladdar i lådorna?"

Page 55: Webbens Arkitektur

Feeds

Page 56: Webbens Arkitektur

Feeds

Det är fantastiskt hur mycket man kan göra med feeds!

● en resurs som listar resurser.

Page 57: Webbens Arkitektur

För alla behov

PrimäraRepresenterar en "behållare".

VirtuellaSökresultat (kategorifilter, "sökord" ..)

Page 58: Webbens Arkitektur

Paginerade resurslistor

Länkar till andra listor (andra tillstånd).

● nästa● föregående

Page 59: Webbens Arkitektur

Representationer

En resurs, flera format:

● kategorisida (html)● feed (atom)

<head> ... <link rel="alternate" type="application/atom+xml" href="/categories/article,tech/feed.atom" />

</head>

Page 60: Webbens Arkitektur

Atom

<feed xmlns="http://www.w3.org/2005/Atom">

<id>http://spreadsheets.google.com/feeds/.../full</id> <title type="text">Available Spreadsheets - somebody@...</title> <updated>2009-10-21T16:12:37Z</updated>

<link rel="self" type="application/atom+xml" href="/feeds/spreadsheets/private/full"/> <link rel="alternate" type="text/html" href="http://docs.google.com"/>

<entry>...</entry> <entry>...</entry> ...

</feed>

Page 61: Webbens Arkitektur

GData<entry> <id>http://spreadsheets.google.com/feeds/.../o1234.1</id> <category scheme="..." term="...#spreadsheet"/> <author> <name>somebody</name> <email>[email protected]</email> </author>

<title type="text">Mötesplanering 1</title> <updated>2009-10-21T16:12:37Z</updated> <content type="text">Mötesplanering 1</content>

<link rel="alternate" type="text/html" href="/ccc?key=o1234.1"/> <link rel="self" type="application/atom+xml" href="/feeds/spreadsheets/private/full/o1234.1"/> <link rel="...#worksheetsfeed" type="application/atom+xml" href="/feeds/worksheets/o1234.1/private/full"/></entry>

Page 62: Webbens Arkitektur

Länkad data på webben öppnar upp enorma möjligheter.

Page 63: Webbens Arkitektur

Initiativ med momentum idag:

● Atom (OpenSearch, GData, AtomPub, CMIS..)● Yahoo och Google indexerar microformat,

RDFa..● Dataliberation.org (Google)● TBL: "Open Data Now!"

Page 64: Webbens Arkitektur

Open Government Data Now!

● US: data.gov● UK: data.gov.uk● Australien: data.australia.gov.au

På gång:

● Sweden: opengov.se, e-delegationen..● med mera!

Page 65: Webbens Arkitektur

Maskineri

Page 66: Webbens Arkitektur

Klister

Instrumentellt.

Page 67: Webbens Arkitektur

Kolosser"Men den är julättanvänd."

Page 68: Webbens Arkitektur

Lättviktigaramverk

Page 69: Webbens Arkitektur

Django, Rails, Grails, ...

● Tämligen tunna lager.● Principiellt enkla att anpassa, utöka, kombinera

med annat, bytas ut.● Specar inte mer än nödvändigt för att servera

resurser.

Page 70: Webbens Arkitektur

Tunna lager

Nära mellan databas och http — för det primära.

Page 71: Webbens Arkitektur

Tydligt

Lätt att se vad som knåpas ihop till en resurs:

● primär data● associationer● funktioner

Page 72: Webbens Arkitektur

Håll det enkelt

Bygg inte "på djupet": koppla resurser så direkt som möjligt.

Page 73: Webbens Arkitektur

En komplex, avancerad inre arkiktektur..

● Är mindre relevant än resursarkitekturen.● Hög risk om ytorna är direkt beroende av

(plattformstekniska) detaljer.

Page 74: Webbens Arkitektur

Spaghetti är spaghetti

● Högnivåkod kan också bli hopplös att underhålla!● Om det växer oregerligt — frångår webbens

principer..

Page 75: Webbens Arkitektur

Tillämpning

Se till att din URI-rymd:

● kopplar till resurser● är lätt att åstadkomma● är lätt att använda

Låt inte plattformen styra!

Page 76: Webbens Arkitektur

Enkelhet, tunnhet

● objekt   — [relation] →   objekt● dokument   — [länk] →   dokument

Page 77: Webbens Arkitektur

Hur ska det kännas?

Som om lösningen består av små, tydliga recept (för resurser).Där webbsidor bakas ihop av:

● primär resursdata● funktioner på data● listor ur index

Och sedan kläs i presentation (mallar).

Page 78: Webbens Arkitektur

Speca

(Webbtestramverk: Selenium, Windmill, Twill, Cucumber, http-bibliotek...)

Körbara specar som dokumentation på API:t!

Tydliggör vad som är:

● form● beteende

Page 79: Webbens Arkitektur

Ortogonalt

I protokollet (HTTP):

● överföring (inkl. checksummor)● autentisering (identitet)● kryptering (SSL)

I data: rättigheterPå data (format-beroende): signering

Page 80: Webbens Arkitektur

Summering

Page 81: Webbens Arkitektur

Webbens arkitektur

● Identifikation: URI:er● Representation: öppna format, länkad hypertext● Åtkomst: HTTP● Funktion: REST● Komposition: länka alla slags resurser

Recept för hållbarhet.

Page 82: Webbens Arkitektur
Page 83: Webbens Arkitektur

Tack!