Behind the Site


I det efterfølgende vil vi forsøge (kort) at beskrive hvorledes MineFilm teknisk er opbygget. Dette er på ingen måde en fyldestgørende beskrivelse eller dokumentation over siten, men er tiltænkt nysgerrige sjæle eller andre, der søger inspiration til, hvorledes et web site kunne opbygges.

Folkene bag MineFilm har gennem tiden været med til at udvikle en række kommercielle sites, og har derigennem opbygget en del erfaringer og halvfabrikata (i form af komponenter ol.) der har kunnet genbruges i forbindelse med udviklingen af Minefilm. I kraft af dette "forarbejde" har udviklingen af MineFilm kun taget ca. 14 dage.

MineFilm er lavet 100% ved hjælp af egenudviklede komponenter. Vi har ikke benyttet tredieparts løsninger - vi har kodet det selv. Vi kunne sikkert have fundet et hav af komponenter, der kunne have været brugt til siten, men vi er jo en flok udviklere og nyder at skrive kode :-)

Vores arbejdsgivere har sponsoreret software, hardware og hosting, hvilket har betydet, at vi har kunne lave løsningen efter alle kunstens regler, uden at skulle have penge op af lommen. En stor tak til dem for dette !

N-Tier Model

MineFilm er udviklet i en række lag. At vi har valgt så mange lag, er primært begrundet i lysten til at "udvikle korrekt" - og ikke så meget fordi en site som MineFilm egentlig har behov for det. Hvis MineFilm en dag skulle gå hen og få 100.000 hits i timen, vil de mange lag dog komme til sin ret :-)

Den følgende tegning viser de enkelte lag og nogle få af de komponenter, der findes på hvert enkelt lag. Tegningen skal kun opfattes som et summarisk overblik, og viser således ikke alle (>500) komponenter, der rent faktisk findes.



Hardware setup

Da siten er lavet i en række lag har det været muligt at placere disse lag på forskellige fysiske maskiner. Dette betyder, at de enkelte maskiner kan optimeres efter deres arbejdsopgave, og siten kan scaleres efter belastningen.

Der er benyttet WLBS (Windows Load Balancing Services) til at fordele arbejdet mellem servere i samme lag. Dette betyder også, at hvis én server går ned, vil sitet ikke ophøre med at køre, men de andre servere i samme lag vil blot få lidt mere arbejde.

På de lag, hvor der ikke kan laves load balancing, er der benyttet "Fail-over clusters". Dette betyder, at arbejdet ikke fordeles mellem serverne. Hvis én af dem går ned, vil den anden overtage arbejdet.

Hvis belastningen på serverne bliver for stor, kan der (hurtigt) opsættes en ekstra server i det lag, der har for høj belastning. Der benyttes således ikke "scale-up" men "scale-out".

Den følgende tegning viser en skitse over hardware setup'et for MineFilm. Det skal bemærkes, at der også kører andre sites på disse servere. Vores arbejdsgivere har sponsoreret plads på maskinerne, men vi har altså ikke fået dem for os selv :-)



Sikkerhed

Det kan ikke lade sig gøre at lave et web site, der ikke kan hackes. Det kan dog lade sig gøre at lave det rimeligt sikkert, hvis man blot tænker sig om.

Vi har (selvfølgelig) valgt at placere vores servere bag en firewall. Dette beskytter selve serverne for basale angreb, men nytter ikke hvis der er huller i det software (standard og egetudviklet) der kører på serverne.

Fejl/huller i den standard software der kører på serverne er svære at gardere sig imod - her gælder det om at holde øje med diverse hackersites, der nok skal sørge for at prale med deres viden om huller i standardsoftware.

Fejl/huller i egetudviklet software står normalt for ca 99% af hullerne i et typisk website, og det er her man selv skal lave et stykke arbejde for at sikre sig mod angreb. At lave en web site uden huller, er mest af alt et spørgsmål om "sund udvikler fornuft", og er meget svært at beskrive. Vi mener dog at have lavet vores site med sikkerhed i højsædet, og skulle det lykkes dig at hacke MineFilm må du endelig ringe så vil vi gerne tilbyde et job eller en kasse bajere :-)

Vi har valgt at placere vores database servere bag yderligere en firewall. Vores data er det "eneste af værdi" på sitet, og derfor passer vi ekstra godt på det. At en hacker bryder igennem til én af web serverne, giver ham således ikke automatisk adgang til vores data. Han skal bryde gennem én firewall mere, før han finder hvad han kom efter.

Udviklingssprog

Der findes (heldigvis/desværre) ikke et programmeringssprog der er godt til det hele. MineFilm er derfor udviklet i en lang række forskellige programmeringssprog. Vi kan ikke nævne dem alle, men de vigtigste er:

- ObjectConnect Smalltalk MT
- Cincom Visual Smalltalk Enterprice
- Microsoft Visual C++
- Microsoft Visual Basic
- Microsoft C#
- Microsoft vbScript
- Microsoft JScript

Backend System

Vi har fået sponsoreret et CRM system (CDM version 5). Det er via dette system at bla. alle vores "batch operationer" foregår (import af filmdata fra IMDb, generering af grafer ol.). Dette system giver også komplet afgang til alle data i databasen, og kan alt hvad et CRM system skal kunne (og mere til). Hvis vi en fx. dag skulle ønske at koble et callcenter på MineFilm har dette backend system allerede disse faciliteter. Skulle du ønske at vide mere om CDM systemet, er du sikkert velkommen til at henvende dig til vores sponsor CDM A/S - der forhandler dette produkt.



Backendsystemet er integreret 100% til websiten og kører på samme database. Metadata deles også mellem websiten og backendsystemet, hvilket betyder at bla. valideringsregler, udseende af lister og meget andet er 100% ens.

Metadata vedligeholdes vha. værktøjer i backendsystemet. Skulle vi fx. ønske os et ekstra felt på en film, vil det tage ca 10 minutter og dette felt vil derefter automatisk "dukke op" både på sitet og i backendsystemet.