Driftbarhet - Steg mot smidig drift, JavaZone 2010
-
Upload
ilmyggo -
Category
Technology
-
view
877 -
download
5
description
Transcript of Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet
Steg mot smidig drift
JavaZone 2010 – Trond Arve Wasskog
Driftbarhet?
Overskyggende fokus på sluttbrukerfunksjonalitet
Ikke-funksjonelle krav...
Når det feiler i et av de involverte systemene, så skal det ved asynkrone oppgaver
automatisk gjøres nye forsøk, og etter x antall forsøk skal
det legges en melding på den generiske varslingstjenesten.
Utføring av sentrale funksjoner skal logges. Dette vil være en
form for logging av utført forretningslogikk. Naturlige tidspunkt for slik logging vil
være ved oppretting/innsending av ”noe”, verifisering,
tjenestekall, oppslag, etc.
Formelle krav i henhold til regelverk og lover skal oppfylles.
Eksempler på aktuelle lover og regelverk er
personopplysningsloven, arkivloven og offentlighetsloven.
Driftbarhet
Tilrettelegging for effektiv drift
Driftsoperatørene
Ansvar for at applikasjonen fungerer
i produksjonsmiljøet
Som administrator
skal jeg kunne søke opp en prosessinnstans
slik at jeg raskt kan finne den spesifikkeprosessen eller utvalget av prosesser
jeg skal håndtere
Gitt at jeg har kundenummer for en feilende prosess
når jeg oppgir kundenummeret i søkefeltet
så skal alle prosesser for det spesifikke kundenummeret listes sortert på
oppstartstid
Som administrator
skal jeg se en oversikt over alle aktuelle prosesser
slik at jeg vet om systemet kjører som normalt
Gitt prosessoversikten vises
Når ingen prosesser har feilet
Så skal alle prosesser ha status OKog være sortert på ferdigdato
Gitt at prosessoversikten vises
Når en prosess feiler
Skal den feilende prosessen ha status FEILog vises øverst i prosesslista
og de andre prosessene ha status OK
Driftsoperatørene er også brukere av systemet
Plattform
Driftsoppgaver
Utrulling
Bunntekst -- Endres i toppmenyen: ”Insert” -> ”Header & Footer” (Velg ”Apply to all”) Side 28
Utvikling Test QA Produksjon
Utvikling Test QA Produksjon
OS
App
Hypervisor
OS
App
Hypervisor
OS
App
Hypervisor
OS
App
Hypervisor
Version 2.1
Version 2.2
SQL Version 2.3
SQL
Database migrations
http://martinfowler.com/bliki/BlueGreenDeployment.html
Automatisering
Overvåkning
Som en driftsoperatør
ønsker jeg å avdekke feil i konfigurasjon og miljø
slik at applikasjonen starter
Diagnosetester
Gitt at applikasjonen starter
når applikasjonsbrukeren ikke har tilgang til importkatalogen
så skal oppstarten feile med en tydelig feilmelding
Diagnosetest Beskrivelse
Java VM versjon Systemet benytter riktig Java
VM versjon
Java VM parametre Systemet har nødvendige Java
VM parametre satt
Tid og dato Verifiserer at klokke og tid er
satt korrekt
Språk/tegnsett OS Språk og tegnsett er korrekt på
operativsystemnivå
Språk/tegnsett database Språk og tegnsett er korrekt på
databasenivå
Systembruker tilgang Sjekker at systembrukeren har
tilgang til nødvendige filområder
Kan kjøre ved oppstart eller som egen testkjøring
Som en driftsoperatør
ønsker jeg å verifisere at den nylig installerte
applikasjonen fungerer
Som en driftsoperatør
ønsker jeg å ha oversikt over applikasjonens helsetilstand
slik at jeg tidlig kan oppdage problemer og iverksette tiltak
Som en driftsoperatør
ønsker jeg at alle applikasjonene overvåkes i et
felles driftskonsoll
Diagnosetester
Røyktester
Helsesjekker
Felles driftskonsoll
Feilhåndtering og logging
Drift vil vite hva de skal gjøre når en feil oppstår
Som en driftsoperatør
skal jeg kunne skille mellom applikasjonsfeil, systemfeil
og programmeringsfeil
slik at jeg vet om jeg skal gjøre tiltak
Funksjonell
håndtering
Feilretting og
utrulling
Prøv igjen?
Application
Exception
Ja Nei Nei
System
Exception
Mulig Nei Mulig
Programming
Exception
Nei Ja Nei
Som en driftsoperatør
Ønsker jeg at feil kan kategoriseres
Slik at jeg kan identifisere gjentaktende feiltyper
Som en driftsoperatør
skal jeg kunne identifisere hver enkelt feilhendelse
slik at jeg kan finne feil som rapporteres med ID
Legg til kontekst der feilen oppstår
AbstractException-Enum category
-Long uid-Map context
addContext(key, value)
ApplicationException SystemException
java.langRuntimeException
Alvorlighetsgrad
Fatal Kritisk applikasjonsfeil
Error Kritisk sesjonsfeil
Warning Mindre kritiske feil
Info Interessante hendelser
Logg til lokal disk
Enkel tilgang til produksjonsloggene
Loggovervåkning
Enkel og konsistent feilhåndtering
og logging
Finn en sårbarhet - I
try {
conn = pool.getConnection();
stmt = conn.createStatement();
// execute sql
} finally {
stmt.close();
conn.close();
}
try {
conn = pool.getConnection();
stmt = conn.createStatement();
// execute sql
} finally {
try {
stmt.close();
} catch (Exception e) { //SystemEx }
try {
conn.close();
} catch (Exception e) { //SystemEx }
}
Finn en sårbarhet - II
URLConnection conn =
openConnection("http://www.bekk.no");
conn.connect();
InputStream is = conn.getInputStream();
while(is.available() > 0) {
// process
}
URLConnection conn =
openConnection("http://www.bekk.no");
conn.setConnectTimeout(CONNECT_TIMEOUT);
conn.setReadTimeout(READ_TIMEOUT);
conn.connect();
InputStream is = conn.getInputStream();
while(is.available() > 0) {
// process
}
Finn en sårbarhet - III
public synchronized Object get(String id)
{
Object obj = items.get(id);
if(null == obj) {
obj = createFromBackingStore(id);
items.put(id, obj);
}
return obj;
}
public synchronized Object get(String id)
{
Object obj = items.get(id);
if(null == obj) {
obj = createFromBackingStore(id);
items.put(id, obj);
}
return obj;
}
Finn en sårbarhet - IV
Last-balanserer
Appserver 1 Appserver 2
80% 75%
50/50
Last-balanserer
Appserver 1 Appserver 2
155% ?? 0%
100/0
Finn en sårbarhet - V
Last-balanserer
Appserver 1 Appserver 2
Last-balanserer
Appserver 1 Appserver 2
Finn en sårbarhet - VI
MinApplikasjon
SAP CMS
Mainframe
LDAPFolke
registeret
MinApplikasjon
SAP CMS
Mainframe
LDAPFolke
registeret
Print60s
5s10s
10 ms
20 ms5s
MinApplikasjon
SAP CMS
Mainframe
LDAPFolke
registeret
Oppsummert
devops
Det koster så lite og betyr så mye
BEKK CONSULTING ASSKUR 39, VIPPETANGEN. P.O. BOX 134 SENTRUM, 0102 OSLO, NORWAY. WWW.BEKK.NO
Takk for at du hørte på!
Spørmål?