Spesifisering og estimering av Carbeid på Cerebrum nødvendig for NIKE

Oversikt over endringer som må gjøres i Cerebrum og Cerebrums konfigurasjoner for å etablere en integrasjonsløsning mellom Cerebrum og Exchange.

1   Rammer og tekniske forutsetninger

For å kunne etablere en vellyket integrasjonsløsning er det viktig å avklare rammer og forutsetninger for ønsket virkemåte. Her adresser vi rammer og forutsetninger som er direkte knyttet til designvalg i integrasjonsløsningen Cerebrum <-> Exchange. Merk at listene under ikke er uttømende og at de kun inneholder referanser til globale/generelle rammer og forutsetniner. De forskjellige delløsninger har egne forutsetninger og begrensninger forankret i dagens løsning, generelle designvalg og ressurstilgang (tid & folk).

1.1   Rammene for integrasjonsløsningen

Følgende rammer er avledet på bakgrunn av møter med Cerebrum-utviklere, NIKE-deltagere og prosjektledelsen:

  • Exchange er, på UiO, plassert i eget domene (et s.k. ressursdomene).

  • Exchange og Imap-løsning må kunne sameksistere i uoverskuelig fremtid

  • Integrasjonsløsningen skal legge til rette for migrering og vedlikehold av e-postdata i Exchange for alle brukere av IT-tjenester ved UiO. NB! Vedtak om dette kommer.

  • Migrering av brukere til Exchange skal helst være godt synkronisert slik at "alle" innenfor en gruppe (f.eks. en organisatorisk enhet eller en valgt tilhørighet) tar i bruk Exchange løsningen samtidig. Migreringsopplegget må skalere nok til å kunne håndtere mange hendelser av gangen.

  • For å reduseres samhandlingsutfordringene knyttet til migreringen (at noen brukere har tilgang til Exchange, mens andre fortsatt er på IMAP) går UiO til innleie av programvare som kan synkronisere møteaktiviteter og rombooking (dermed ikke nødvendig å ta særhensyn til tilhørighet ved migrering).

  • Det er foreløpig ikke fastslått sluttidspunkt for migreringen.

  • Brukere som migreres til Exchange skal potensielt ha ulike tilganger til kalenderfunksjoner:

    • Ansatte skal ha tilgang til å reservere alle rom og innkalle personer og grupper med personer til møter. TODO: vi trenger en klar definisjon av "Ansatt".
    • TODO: avklar tilganger for studenter og andre grupper.
  • Det skal være mulig å innkalle personer uten tilgang til UiOs IT-tjenester ("eksterne") til møter, men det skal i første omgang ikke legges spesielt til rette for dette.

  • Det skal ikke være mulig å melde personer uten tilgang til UiOs IT-tjenester inn i distribusjonsgrupper. Dette forringer verdien av distribusjonsgrupper for brukere noe, men er vedtatt policy på UiO.

  • Konfigurasjon av domener, standarder, valg av e-postformat o.l. skal gjøres i Cerebrum og relaterte konfigurasjonmuligehter i Exchange skal ikke benyttes.

  • 1.2   Tekniske forutsetninger for integrasjonsløsningen

    • Integrasjonsløsningen mellom Cerebrum og Exchange skal være synkron; Exchange skal kvittere for opprettelse av mailbokser og relevante endringer som Cerebrum så må lagre og/eller logge.
    • En bruker kan ikke få postboks på Exchange før den er registrert i UiOs AD. Dette medfører, pga. synkronitet i integrasjonsløsningen, at alle kall til Exchange relatert til en brukerobjekt skal starte med å sjekke om objektet finnes i AD.
    • Når en bruker eller gruppe er opprettet i Exchange skal Cerebrum lagre identifikatoren (bruker- eller gruppenavnet) fra Exchange-domenet lagres i Cerebrum. Dette skal brukes ved f.eks. eksport av distribusjonsgrupper (for å effektivesere Exchange-synkroniseringen).
    • Distribusjonsgrupper skal kun opprettes i Exchange. Dette medfører at en gruppe i Cerebrum kan opptre som sikkerhetsgruppe i UiO-AD og som distribusjonsgruppe i Exchange.
    • Exchange skal oppdateres fortløpende basert på (relevante) endringer i Cerebrum. Det er ønskelig å redusere oppdateringstiden så mye som mulig. Dete er likevel slik at man, for opprettelse av postboks i Exchange ikke kan levere bedre tider enn det som kan garanteres av AD-synkroniseringe så noe særlig bedre enn ca. 1 time er vanskelig å få til. For distribusjonsgrupper vil oppretteslestiden kunne være betraktelig kortere da det ikke er noe avhengighet til oppdatering av UiO-AD.
    • Exchange skal deloppdateres, dvs. at det ikke skal etableres noen rutiner for fullstendig synkronisering. TODO: det må defineres krav til kvalitetsikring av Exchange-data (hvilke rutiner må man ha for å oppnå dataintegritet på tvers av Cerebrum, UiO-AD og Exchange-domenet.
    • Utvalgte e-postlister registrert i Sympa skal kunne synliggjøres i adressebok i Exchange. For å kunne gjøre dette må listene kunne merkes for eksport i Cerebrum. I tillegg må Cerebrum støtte etablering av kontaktobjekteri Exchange. Denne funksjonaliteten har lav prioritet.

    3   Uavklart

    Foreløpig har vi registrert følgende spørsmål:

    4   Estimater

    NB! Alle estimater her må regnes som foreløpige og det må tas høyde for at de kan endres, mest sannsynlig i retning økt antall timer.

    Estimater er angitt i antall timer per nødvendig ressurs. Det vil, til noen oppgaver, være behov for andre ressurser enn Cerebrum utviklere. Der slikt er kjent er det eksplisitt angitt og tidsbruken forsøkt estimert.

    Estimater er foreløpig registrert for hver aktivitet.

    4.1   Hva estimatene er basert på

    Samtlige estimater er basert på erfaring med utvikling av lignende tjenester (derav den nevnte usikkerheten). For noen av aktivitetene finnes det ikke sammenligningsgrunnlag, disse er estimert basert på antall linjer kode som må endres eller antas å måtte skrives.

    5   Spesifikasjoner

    Det er et omfattende arbeid å integrere Cerebrum og Exchange på UiO. Dagens e-postløsning i Cerebrum er primært utarbeidet for UiOs eksisterende e-postsystem. Mange av forutsetningene for design- og implementeringsvalg foretatt ifm. etablering av eksisterende løsning vil, etter full overgang til Exchange, ikke lenger være til stede. For å gjøre arbeidet med integrasjonsløsningen overkommelig og forståelig har vi, i stedet for en samlet spesifikasjon, etablert en delt spesifikasjonsstruktur. Inndelingen er basert på Cerebrums-oppbygging og tiltenkt arbeidsfordeling mellom de involverte i integrasjonsarbeidet.

    NB! Merk at disse spesifikasjonene må sees på som et grunnlag for estimering og ikke fullstendige funksjonelle eller tekniske spesifikasjoner.

    TODO: Verifiser at spesifikasjonene under dekker alle relevante
    prosesser og endringer.

    5.1   Arbeidsflyt og overordnet beskrivelse av integrasjonsløsningen

    TODO: må lages

    Estimat: 16 timer til design, tekniske og funksjonelle valg, 10 timer til å utarbeide og validere spesifikasjon ,40 timer til implementering og testing (5 timer hos cerebrum-drift). 66 timer.

    Beskrivelse:

    • Denne spesifikasjonen skal ta for seg design Exchange-synkroniseringe, samt tekniske og funksjonelle valg for synkroniseringsjobben(e). Målet er å belyse hvordan synkroniseringen skal innlemmes i Cerebrums rammeverk, forretningslogikk knyttet til synkroniseringen (hvordan skal synkroniseringene utløses og av hva, er det en synkronisering eller flere).
    • <her har jeg tenkt at vi kanskje kan lage en jobb som sjekker en hendelseslog med jevne mellomrom og starter en eller flere synkroniseringer basert på registrerte hendelser. synkronisering kan være enten en jobb som ivaretar alle funksjoner eller kan deles etter funksjon (f.eks. egen kjøring som setter primæradresse, egen jobb som fjerner adresser). vi kan muligens oppnå en slags fattigmans-hendelsesbasertoppdatering>

    5.2   Rammeverk for kommunikasjon mellom Cerebrum og Exchange

    ..include:: ./Connecting_to_Exchange.rst

    Estimat: noe av arbeidet med etablering av kommunikasjon er unnagjort og delvis dokumentert. Det gjenstår anslagsvis 30 arbeidstimer for å fullføre arbeidet, totalt 30 timer.

    5.3   Endringer i Cerebrums API og databaseskjema

    For å legge til rette for integrasjon mellom Cerebrum og Exchange må man gjøre noen endringer i dagens Cerebrum-løsning.

    5.3.1   Email (API og mulig skjema)

    Avhengig av designvalg må vi regne med å omskrive Email-modulen. Det er i all hovedsak tre mulige veier til en løsning:

    • Estimat: 50 timer til spesifikasjonutforming, 110 timer til implementasjon, 30 timer til testing og produksjonssetting (10 av disse er timer hos cerebrum-drift), totalt 190 timer. Skrive om eksisterende funksjoner og skjema (innebærer videreføring av eksisterende teknisk gjeld, økt risiko for feil i brukergruppen som forblir på IMAP-løsningen og økt risiko for introduksjon av feil på de øvrige Cerebruminstitusjonene som per i dag benytter Email-modulen). Denne løsningen betegnes som et "hack" og går ut på å endre eller duplisere:

      • update_email_adresses og tilhørende funksjoner
      • omskriving av "primary"-funksjonalitet for å åpne for bruk av Exchange-spesifikk funksjonalitet og for å justere oppdateringsmetoder
      • endre på skjema for å lagre server
      • muligens endre på skjema for primary
      • begynne å logge e-postrelaterte hendelser for bruk ved oppdatering av Exchange
      • endre/duplisere konfigurasjoner slik at kontoinstillinger kan tilpasses Exchange
  • Estimat: 60 timer til spesifisering, 120 timer til implementasjon, 45 timer til testing og produksjonssetting (15 av disse er hos cerebrum-drift), totalt 225 timer. Skrive en UiO-spesifikkløsning for Exchange-integrasjon som gjenbruker deler av funksjonaliteten og skjema i eksisterende email-modul, men legger til Exchange-spesifikk funksjonalitet i nye klasser og tabeller (deler av teknisk gjeld videreføres, litt mer vedlikeholdsarbeid på Cerebrum fremover, litt lenger utviklingstid):

    • lage ny targettype eller nytt entitet for Exchange-mailkonto med tilhørende API og skjema
    • begynne å logge e-postrelaterte hendelser for bruk ved oppdatering av Exchange
    • lage nye oppdateringsmekanismer for Exchange-konti som eliminerer bruken av update_email_adresses med venner
    • introdusere nødvendige funksjoner for vedlikehold av Exchange-data (mulig, ikke sikkert vi trenger)
    • justere eksisterende funksjonalitet/trekke det ut i egen mixin til bruk på exchange-konti
    • Valgt løsning
  • Estimat: totalt mellom 400 og 800 timer. Lage en ny, generisk, email-modul (mer utviklingstid, mer driftsarbeid for Cerebrum initielt)

    • spesifisere ny e-postmodul med nødvendige endringer og utvidelser
    • implementere ny modul
    • skrive om relevant kode (antagelig rundt 60% av koden i Cerebrum)
    • skrive om konfigurasjonsfielr for releante institusjoner
    • lage migreringsrutiner for alle institusjoner
    • teste løsningene
    • gjennomføre migrering og prodsetting
  • 5.3.2   Person (primært API)

    PersonUiOMixin må justeres slik at beregnig og uthenting av data tilpasses de behovene som er registrert for Exchange (mer spesifikt må vi se på funksjoner som sier noe om hva slags rolle personen har på UiO). I tillegg må man regne med å gjøre justeringer på uthenting av navn. Logging av hendelser knyttet til person må gjennomgåes og evt nye relevante hendelser må håndteres.

    NB! Etter møtet 29. august tror vi at oppgavene knyttet til
    Person-API'et er forholdsvis små og lette. Estimatet under er mest satt av for å sikre at ikke noen oppgaver forblir uløst og det kan hende at oppgavene knyttet til dette forsvinner helt.

    Estimat: 10 timer til spesifisering, 20 timer til implementasjon, 10 timer til testing og produksjonssetting (5 av disse hos cerebrum-drift), totalt 40 timer.

    5.3.3   Account (primært API)

    Per i dag er det ikke helt klart hvilke endringer må gjøres på Account. Account og relevante subklasser (bla AccountUiOMixin) inneholder oppdateringsfunksjonalitet some er knyttet til e-post (automatisk oppdatering av e-postadresser ved ymse endringer på account, slik som ny account_type o.l.). Det er trolig at disse mekanismene må justeres ettersom Exchange-brukere og IMAP-brukere skal behandles litt forskjellig.

    Estimat: 20 timer til spesifisering, 40 timer til implementasjon, 10 timer til testing og produksjonssetting (5 av disse hos cerebrum-drift), totalt 70 timer.

    5.3.4   Group (API og mulig skjema)

    UiO skal kun benytte sikkerhetesgrupper i UiO-AD og distribusjonsgrupper i Exchange. Det åpnes ikke for bruk av såkalte "mail enabled" sikkerhetsgrupper på UiO. Distribusjonsgrupper skal synkroniseres kun til Exchange og det er foreløpig avklart at disse kan ha ekstra attributter sammenlignet med ordinære grupper:

    • E-postadresse (Alias)
    • Eiere (Owners)
    • Navn (DisplayName, felles)
    • Enhet (OrgUnit)
    • Synlig i adressebok
    • Open/Closed (kan man bli med eller forlate gruppen på egen hånd, vi vil antagelig kun implementere støtt for lukkede grupper til å starte med)

    Det er to mulige implementasjonsvalg for endringer på grupper knyttet til Exchange:

    • Estimat: 10 timer til spesifisering, 25 timer til implementasjon, 15 timer til testing og produksjonssetting, (av disse 10 timer hos cerebrum-drift), totalt 50 timer. Fortsette å bruke generisk gruppebegrep og finne alternative måter (typisk traits e.l.) til å lagre Exchange-spesifikke opplysninger (bør være forholdsvis uproblematisk, men gir mindre oversiktlige funksjoner i Cerebrum):

      • utvidelse av traits med nødvendige verdier for Exchange
      • implementasjon av funksjonalitet relatert til de relevante traits (validering, kontroll, vedlikehold)
      • Valgt løsning
  • Estimat: 30 timer til spesifisering, 60 timer til implementasjon, 15 timer til testing og produksjonssetting (5 av disse hos cerebrum-drift), totalt 105 timer. Etablere en undertype av gruppe med nødvendig skjemautvidelse (er mer ryddig, men krever mer utvikling på Cerebrum):

    • spesifisere undertypen og nødvendige utvidelser, evt. endringer på eksisterende API
    • implementere nytt API for definert undertype
    • implementere endringer i eksisterende kode
    • implementere relevant funksjonalitet i bofh, brukerinfo
    • teste og prodsette løsningen
  • 5.3.5   LDAP (API)

    Det må gjøres mindre endringer på LdapOrg, LdapMail og UiO-mixin for disse. Endringene går primært ut på å justere hvor og hvilke data skal presenteres for Exchange-brukere i LDAP.

    Estimat: 5 timer til spesifisering, 20 timer til implementasjon,
    10 timer til testing og produksjonssetting, (av disse 2 timer hos cerebrum-drift), totalt 35 timer.
    NB! Disse aktivitetene er veldig avhengige av valg som gjøres på
    e-postmodulen. De vil derfor kunne forsvinne helt eller vokse betraktelig etter at spesifikasjon av endringene relatert til e-postmodulen er ferdig.

    5.3.6   Changelog (API og skjemaendring)

    Cerebrum har per i dag en endringslogg (ChangeLog) som benyttes til å oppdatere tjenester som, av ulike årsaker, ikke takler full oppdatering. Imidlertid er det en del utfordringer knyttet til denne endringsloggen. Det er f.eks. slik at ChangeLog benyttes til lagring av historikk så vel som endringshåndtering. Dette gjør at ChangeLog vokser seg større for hvert år, som medfører at den er mindre og mindre effektiv ved gjennomføring av relevante søk og annen bruk. I tillegg mangle ChangeLog en klar måte å "kvittere ut" endringer (man baserer seg på bruk av en separat tabell som styrer hvor langt i prosessering av CL den enkelte tjenesten har kommet). ChangeLog er i bruk hos alle institusjoner som benytter Cerebrum.

    For å håndterebehovene som oppstår med Exchange kan man:

    • Estimat: spesifisering 10 timer, implementasjon 30 timer, testing og produksjonssetting, inkludert migrering for alle institusjoner 80 timer (20 av disse hos cerebrum-drift), totalt: 120 timer. Utvide eksisterende skjema og funksjonalitet med "kvitteringsfunksjon" og felt nødvendige for Exchange. Dette kan være risikabelt da endringen berører alle institutsjoner, fordi det kan føre til at vi bruker lenger tid på oppdateringer pga tung traversering av ChangeLog og fordi man mangler fortsetter å blande logging- og endringsfunksjon i Cerebrum

    • Estimat: spesifisering 20 timer (bør ha med Mathias på diskusjon, 4 timer hos han?), implementasjon 60 timer, testing og produksjonssetting 20 timer (5 hos cerebrum-drift), totalt 100 timer. Etablere en typet hendelseslogg (med tilhørende skjema og funksjoner). Fordelene er at det ikke berører institusjoner som ikke tar funksjonaliteten i bruk eksplisitt og at man begynner prosessen med å skille logging og hendelseshåndtering i Cerebrum. Ulempen er at det koster mer i utviklingstid. Men:

      • Må spesifiseres bedre, men innebærer utflytting av oppdateringsfunksjona for e-post fra CL til ny(e) tabeller og et API dedikert til hendelseshåndtering
      • TODO: spesifisere hva som skal registreres av hendelser og når og hva som skal logges og hvor lenge.
      • Valgt løsning

    5.4   Andre endringer i Cerebrum

    5.4.1   BOFH

    Følgende endringer kan forventes i BOFH:

    • Vedlikeholdskommandoer justeres slik at de tar hensyn til Exchange bruerek(ny adresse, ny primær adresse, fjern adresse osv.)
    • Kommandoer for opprettelse og vedlikehold av distgrupper
    • Justere oppslagskommandoer som email info, quota info, history. NB! quota info er potensielt nokså komplisert siden vi må hente data om bruk fra Exchange on-the-fly. Bør vurderes nøye.
    • Introdusere evt. Exchange-spesifikke kommandoer
    Estimat 30 timer for spesifisering (må regne med ca. 10 timer hos
    postmaster), 60 timer for implementering og 15 timer for testing og produksjonssetting (5 hos cerebrum-drift), totalt 105 timer.
    NB! merk at estimatet er meget grovt og ikke tar hensyn til at
    noen av designvalgene i f.eks. e-postmodulen kan medføre omskriving av kommandoer som i dag er felles for flere institutsjoner og dermed betydelig merarbeid for både utvikling og drift.

    5.4.2   Brukerinfo

    Det må, med stor sannsynlighet gjøres noen justeringer på brukerinfo:

    • Skru av tripnote og forward for Exchange-brukere.
    • Evt. Exchange-spesifikk funksjonalitet

    Estimat: 2 timer til implementasjon, totalt 2 timer.

    NB! graylisting, spam o.l. forblri som før og kontrolleres fra Cerebrum.

    5.4.3   Bakgrunnsjobber og eksporter

    Det vil, med stor sannsynlighet, måtte gjøres endringer på org_ldif og mail_ldif jobbene. Avhengig av hvilken strategi man velger for email-modulen kan det tenkes at flere av eksportene fra Cerebrum (typisk de som har med e-postadresser) må justeres. I tillegg må man forvente introduksjon av nye jobber:

    • Rydding i endringslogg for e-postdata. Estimat: 10 timer til spesifisering, 20 timer til implementasjon, 5 timer til produksjonssetting (maks 1 time hos cerebrum-drift), totalt 35 timer. Estimatet er basert på at man benytter dedikert hendelseslogg og ikke en endret versjon av eksisterende ChangeLog.
    • Verifisering av tilstand, dvs. sjekk av status mellom Cerebrum, AD og Exchange. Estimat: 30 - 60 timer, vanskelig å anslå da det mangler data.
    • Omskriving av, eller implementering av erstatningsjobber for proc_bofhd_request, bofhd_request-tabellene, process_changes o.l. Estimat: 10 - 40, vanskelig å anslå foreløpig.

    5.5   Migrering

    Det er (for nå) besluttet at migreringen skal gjennomføres utenom Cerebrum. Derfor vil Cerebrums eneste leveranse ifm. migrering være skalerbar funksjonalitet til å merke brukere som ferdig migrert til Exchange. Estimat: totalt 1 time.

    5.6   Tidsbruk og innbyrdes prioritering mellom aktiviteter

    Som det fremgår av beskrivelsene over er integrasjonsløsningen mellom Cerebrum og Exchange sammensatt og relevante aktiviteter er mange og til dels svært forskjellig i både omfang og kompleksitet. Men, ikke alle aktiviteter har like høy prioritet og det er avhengigheter mellom de ulike aktivitene som tvinger frem visse prioriteringer.

    De ulike aktivitetene ("spesifikasjoner") bør løses i følgende rekkefølge:

    • Kommunikasjon mellom Cerebrum og Exchange, arbeidsflyt og virkemåte synkroniseringstjeneste (pri 1)
    • E-postmodul og hendelseslog/ChangeLog (pri 2)
    • Grupper (støtte for distgrupper), Person- og Account-endringer (pri 3)
    • LDAP og LDAP-eksporter, proc_bofhd_rec, proc_changes, bofh-kommandoer (pri 4)
    • Validering av tilstand og brukerinfo (pri 5)

    Totalt estimert tidsbruk for etablering av integrasjonsløsning er 733 timer (estimerte tider brukt er enten valgte løsninger eller minimu antall tider der usikkerheten er stor). Timene er fordelt som følger:

    • Cerebrum-utvikling: 683 timer
    • Cerebrum-drift: 60 timer
    • Postmaster: 10 timer
    Av jazz
    Publisert 31. aug. 2013 20:34