BAS – Brukerdatabase @ NTNU – Hva er BAS?



BAS – Brukerdatabase @ NTNU – Hva er BAS?

0 0


bas-slides

Presentation of BAS at Bouvet

On Github martinp / bas-slides

BAS

Brukerdatabase @ NTNU

Martin Polden, Bouvet ASA26. november 2013

Hva er BAS?

  • BrukerAdministrasjonsSystem
  • NTNUs sentrale brukerdatabase
  • Utviklet av UiO i samarbeid med flere norske universiteter
  • Åpen kildekode under GPLv2: Cerebrum
  • Utviklet i Python

Hva gjør BAS?

  • Administrasjon av samtlige brukere for hele NTNU
  • «Fasit» for pålogging til klienter, servere, wifi og øvrige systemer på NTNU
  • Leverer data til andre systemer på ulike format
  • Tilbyr administrasjon av brukere via web-grensesnitt: Cereweb

Hvordan fungerer BAS?

  • Importerer persondata fra autorative systemer
  • Provisjonerer data til ulike systemer ved hjelp Ceresync-klienter
  • En Ceresync-klient per målsystem (en for LDAP, en for AD osv.)
  • Eksterne tjenester kommuniserer med BAS via en web service

Min oppgave

  • Utvikle en ny web service med et RESTful API (..eksisterende WS var SOAP-basert *gulp*)
  • Utvikle API for import/eksport (..eksisterende var scp og shell-script *dobbel-gulp*)
  • Portere alle Ceresync-klienter til å bruke nytt API

Utfordringer

  • Stor og kompleks kodebase
  • Legacy-kode, mesteparten skrevet i 2002-2003
  • Tidligere krav om Python 2.2-kompatibel kode
  • Få enhets-/integrasjonstester
  • ..og dynamisk språk
  • ..derfor vanskelig å gjøre endringer uten å introdusere feil
  • Ingen typiske overordende patterns (f.eks MVC)
  • Utfordrene å innføre moderne rammeverk

Løsning

  • Ny implementasjon i Flask
  • Nytt utvekslingsformat: JSON
  • Bakoverkompatibelt: Deserialisert datastruktur er lik den gamle
  • Nytt API for import/eksport
  • Ceresync-klienter implementert med requests
  • flask-swagger: Automatisk generering av dokumentasjon (..ryktes at denne nå brukes på andre prosjekter hos NTNU :-)

Status

  • Nytt API implementert
  • Import/eksport benytter nå nytt API
  • Ceresync-klienter er skrevet om til nytt API(under testing i skrivende stund)
  • Jobber med dokumentasjon og avsluttende arbeid

Lenker