Hva er enterpriseutvikling

Thu 08 July 2010

I denne artikkelen vil jeg prøve å komme med en forklaring på hva en enterpriseapplikasjon er. Dette skal jeg prøve å gjøre ved å fortelle hva det er, hva det ikke er samt noen aspekter som gjør at disse programmene skiller seg fra

Ikke et helt vanlig program

Som nevnt innledningsvis handler ikke denne artikkelen om vanlige skrivebordsprogram eller spill.

Noen typiske kjennetegn på enterprisesystemer er at de involverer mye data, og da gjerne av typen som må være tilgjengelig over lenger tid, være mulig å nå fra flere systemer og av mange forskjellige involverte brukere.

Et annet kjennetegn går på selve systemet, som i likhet med dataene må være tilgjengelig over lenger tid, kunne kobles med eksisterende og fremtidige krav, tåle endringer i hardware og software, takle nye brukertyper, gjøre plass for datastrukturer som ikke var tiltenkt i starten, med mer.

I tillegg må systemet kunne presentere all informasjonen til et ukjent antall brukere, på et ukjent antall forskjellige måter. En må også kunne gi inn data til systemet på samme måten. F.eks via en nettleser, mobil enhet, fra et fagsystem, andre applikasjoner og så videre.

Ofte er enterprisesystemet forretningskritisk for de som bruker det, uten at det impliserer at kun enterprisesystemer er forretningskritiske.

Eksempler på enterpriseapplikasjoner

  • Lønnsutbetalingssystemer.
  • Pasienthåndteringssystemer.
  • Forsikringssystemer.
  • Bank og finans.
  • Kundebehandlingssystemer.

Eksempler på hva som ikke er enterpriseapplikasjoner

  • Spill
  • Operativsystemer
  • Kontorprogrammer ala word o.l.

Forskjellige utfordringer

For å ytterlige illustrere kompleksiteten i en enterpriseapplikasjon vil jeg komme med to eksempler.

Eksempel 1: Vi har en netthandelsløsning som består av mulighet for å se igjennom vareutvalg / browse, putte i en handlekurv og tilslutt kjøpe. En enkel B2C (business to customer) applikasjon hvor forretningslogikken er enkel og oversiktlig. Ta imot ordren, beregne pris og eventuellt frakt kostnader og justering av varebeholdning etter at kjøpet er bekreftet og betaling effektuert. For å nå ut til flest mulig potensielle kunder vil vi trenge en enkel genereisk presentasjon, typisk via et webgrensesnitt som validerer mot de fleste nye nettlesere. En enkel netthandelsapplikasjon vil enkelt ta unna 10, 100 og 1000 vis av kunder, men hva skjer om vi blir populære? Utfordringen vil da være å ha en effektiv applikasjon, samt kunne skalere opp ved behov. Helst uten å måtte utvikle hele netthandesløsningen på nytt.

Eksempel 2: Vi ønsker et løsning for håndtering av leasing av biler. Systemet skal beregne månedlige kostnader på inngått avtale, ta høyde for skader, at bilen blir levert inn utenom avtalt avtaletid, forsinkede betalinger o.s.v. Dette er komplekse oppgaver når det gjelder leasing da det gjerne er inngåtte individuelle avtaler med hver enkelt kunde. Denne applikasjonen vil fort få en kompleks forretningslogikk, og vi må regne med at denne vil endres ofte. For å kunne betjene forreteningslogikken vil vi også måtte ha et mer utfyllende brukergrensesnitt og vi kan forvente at en bruker vil tilbringe lang tid i applikasjonen før han endelig trykker på "Lagre". I motsetning til netthandelen vil vi derimot kunne forvente betydelig færre samtidige brukere, og kravene til å være effektiv og skalerbar er gjerne mindre.

Utviklingsmiljøer

En enterpriseapplikasjon kjører ofte på det som kalles en applikasjonsserver. Dette muligjør at applikasjonen kan nåes av mange samtidig, fra mange forskjellige steder. En vanlig applikasjon derimot kjører kun på en brukers egen datamaskin (spill, operativsystem, kontorprogram, o.s.v.).

applikasjonsserver – IT, underliggende programvare eller «mellomvare» for å formidle serverbaserte applikasjoner (dataprogrammer) til en bruker. Kilde: http://www.snl.no/applikasjonsserver/IT

Valget av applikasjonsserver styres blant annet av hvilke språk du utvikler i. På wikipedia ser vi at det er listet flest Java applikasjonsservere, noe som kan være med å underbygge en løs påstand om at Java som språk for enterpriseapplikasjoner er utbredt.

Noen eksempler på Java applikasjonsservere:

  • Glassfish Application Server (Oracle Corporation)
  • Websphere Application Server (IBM)
  • JBoss (Red Hat)
  • Jetty (Eclipse Foundation)
  • JRun (Adobe Systems)
  • Weblogic (Oracle Corporation)
  • med flere.

Noen eksempler på andre applikasjonservere:

  • Zend Server (Php)
  • Zope (Python)
  • Core Server (Common Lisp)

Du kan se hele utlistingen på den engelske wikipediasiden: http://en.wikipedia.org/wiki/Application_server

Jeg skal ikke gå inn på fordeler / ulemper ved hverken den ene eller den applikasjonsserveren her, rett og slett fordi jeg ikke har noen annen erfaring med annet en Glassfish.

Konklusjon

Dette var en kort forklaring på hva som skiller en enterpriseapplikasjon fra vanlig skrivebordsprogrammer. Kompleksiteten, lasten, krav til ytelse over tid og fleksibilitet med tanke på endringer er noen av stikkordene.

Er du interessert i å komme igang med utvikling av applikasjoner av denne typen kan følgende bøker anbefales:

Tagged as : diverse

Comments

Tagged as : diverse