Deklarace záměru - modernizace projektu hydronet.cz

Hydronet je projekt volného šíření aktuálních meteorologických informací široké veřejnosti. Je třeba navrhnout a zrealizovat komplexní řešení přenosu, zapracování, archivace a prezentace naměřených dat. Účelem je od základu přepracovat stávající projekt, který je řešen naprosto nesystémově a přestože již poskytuje cenná data ze tří automatizovaných meteorologických stanic, trpí mnoha zásadními nedostatky jako např. z dlouhodobého hlediska neudržitelný způsob ukládání dat, neošetřené výpadky spojení mezi centrálním serverem a jednotlivými stanicemi, zobrazování dat pouze ve formě fixně generovaných grafů atd.

Odborný článek

Úvod

Cílem projektu je tedy vytvořit takový systém, který bude efektivním způsobem shromažďovat a dlouhodobě uchovávat informace získané z měřících stanic. Hlavním účelem celého systému je monitorování stavu vodních toků a snížit tak škody napáchané případnými povodněmi. Další podstatnou vlastností projektovaného systému musí být schopnost archivovaná data přehledným způsobem prezentovat uživatelům - textovou i grafickou formou.

Databázový server - software

Tento stroj bude jednou z nejdůležitějších částí systému - kromě databáze na něm poběží i programy slouží ke generování výstupů, zálohovací utility atd. Proto od něj očekáváme stabilitu, výkonnost a spolehlivost. Z těchto důvodu bude použitým operačním systémem Linux. Výběr databázového software nebude tak jednoznačný. Z praktických důvodu by to měl být databázový systém podporující jazyk SQL - vzhledem k již vybranému operačnímu systému připadá v úvahu např. MySQL, Oracle, PostgreSQL atd.

Databázový server - hardware

Do budoucna lze očekávat, že systém bude sbírat data z několika desítek měřících stanic a bude jej využívat velké množství uživatelů. Proto není od věci uvažovat o víceprocesorovém systému. Ze stejného předpokladu vycházím i při volbě formy uložení dat. S přibývajícím počtem měřících stanic bude samozřejmě přibývat i nárok na kapacitu datového úložiště. Dále požadujeme určitou bezpečnost, proto si určitě nevystačíme s jedním diskem, ale bude použito diskové pole minimálně RAID1 (mirroring) nebo raději RAID5 o minimálně třech až čtyřech discích, které nám kromě menší kapacitní ztráty poskytne i vyšší čtecí rychlost. Operační paměť nám vzhledem k její snadné upgradovatelnosti pro začátek postačí 1GB.

Ukládání do databáze

Měřící software generuje každou sekundu 10 hodnot (int). Například tlak, teplota, výška hladiny, srážky, osvit a vlhkost Ty je potřeba dostávat v co nejkratším čase do centrální databáze a současně je potřeba ošetřit možnou ztrátu informací v důsledku výpadku připojení do databáze. Proto se musí data ukládat nejprve na lokální disk měřící stanice, potom generovat SQL skript, a teprve v momentě, kdy uložení do centrální databáze korektně proběhne, je z disku smazat (popř. přesunout do lokální zálohy). Ke spojení databázového klienta se serverem lze využít ssh tunel - kvůli zvýšení bezpečnosti a komprimaci toku dat.

Výstup z databáze

Uživatelé budou přistupovat k naměřeným údajům pomocí webového rozhraní. Webserver může být provozován podle dodatečných potřeb buď přímo na stroji databázového serveru nebo muže být hardwarově oddělen a k datům přistupovat vzdáleně. K implementaci webového serveru pude použit Apache řady 2, k tvorbě dynamických výstupu (textových i grafických) a spojení s databází jazyk PHP. Pro generování grafů lze použít PHP modul VHGraph(http://www.vhconsultants.com) nebo JpGraph(http://www.aditus.nu/jpgraph), eventuelně lze použít standardní kreslící utility PHP. Dále bude systém zasílat souhrnné informace na e-mail registrovaným uživatelům (těm co budou mít zájem).

Zálohování

Primární ochranu dat proti havárii pevného disku nám poskytne RAID automaticky. Po doplnění diskového pole alespoň jedním sparediskem (záložní disk) mohou postupně havarovat 2 disky bez ztráty dat. Dále bude DB server vést update-log (průběžný dump) a ten se bude pravidelně ukládat na zatím blíže nespecifikované zálohovací médium (nejjednodušeji pálit na CD) nebo na zálohovací server. V případě oddělení webserveru od databáze může mít webserver i funkci zálohy.

Komunikace

Pro uživatele systému bude výhodné, budou-li mít možnost si mezi sebou vyměňovat vlastní postřehy a názory o stavu řek, počasí apod. K tomuto účelu bude sloužit webové diskuzní fórum.

Diagram kontextu

Schéma (JPG)

Model jednání

Schéma (JPG)

Datový slovník

Notace

= skládá se z
+ a (sloučení)
(...) nepovinný výskyt
{...} opakování
[...] množina, každý údaj se může vyskytovat maximálně jednou
| alternativa (jeden z možných)
*...* komentář

Obecná deklarace

male_pis = a|b|..|z
velke_pis = A|B|..|Z
znak = male_pis|velke_pis
retezec = {znak}
cislice = 0|1|..|9
cislo = {cislice}
den = cislo *rozsah 1-31*
mesic_c = cislo *rozsah 1-12*
mesic_n = Leden|Únor|..|Prosinec
rok = cislo *rozsah 2000-9999*
datum = den + mesic_c + rok
hodina = cislo *0-23*
minuta = cislo *0-59*
sekunda = cislo *0-59*
ncas = hodina + minuta + sekunda
str_cas = cislo *strojovy cas - pocet sekund od 1.1.1970?*
bool = ano|ne

Osoba

ID_osoby = retezec
jmeno = retezec
prijmeni = retezec
password = retezec
email = retezec *řetězec musí obsahovat znaky "@" a "."*
sluzby = cislo *ciselne oznaceni sluzby*
telefon = retezec *napr. kvuli znaku "+" u čísel v mezinárodním formátu*
ICQ = retezec
homepage = retezec
poznamka = retezec *údaj týkající se osoby*

Stanice

ID_stanice = cislo
jmeno = retezec *jmeno stanice*
lokalita = retezec
web = retezec
poznamka = retezec *týkající se měřicí stanice*

Cidlo

ID_cidla = cislo
typ = retezec *typ cidla (vyrobce, model, ...)*
funcnost = bool *zda je čidlo funkční*
presnost = retezec *z důvodů lepší flexibilnosti popisu*
poznamka = retezec
velicina = retezec *jakou veličinu dané čidlo měří*

Snímky

ID_kamery = cislo
cas = str_cas
snimek = retezec *odkaz na uložený soubor*
komentar = retezec

Data

ID_veliciny = cislo
cas = str_cas
hodnota = cislo
flag = bool *označení pro budoucí použítí dat*

Objednavka

zajimavosti = cislo *oznaceni, o jake zajimavosti ma zajem*
souhrny = cislo *o jake informace typu souhrny má zájem*
interval = cislo *v jakém intervalu se má mail posílat*
mail = retezec *umozni posilat na jinou adresu, nez je registrační*

WWW výstup

*-graficky vystup*
typ_graf = denni|tydenni|mesicni
nazev = retezec *nazev stanice*
pocatek = datum + (cas) *cas se využije jen u nekterých grafů*
konec = datum + (cas)
zobrazit = [mer_vel] *ktere veliciny se maji zobrazovat*
*-textovy vystup*
typ_soub = CSV|TXT_tabulatory|TXT_mezery
nazev_soub = retezec
prodleva = 1s|10s|30s|1m|10m|30m|1h|1d
pocatek = datum + (cas)
konec = datum + (cas)
zobrazit = [mer_vel] *ktere veliciny se maji vypisovat*

Architektura systému

Schéma (GIF)

Serverová část bude sloužit ke shromažďování naměřených dat, jejich archivaci a vytváření výstupu pro uživatele. Lze ji logicky rozdělit na webserver a databázi, ale realizována bude fyzicky na jednom PC. Kvůli bezpečnosti bude síťový provoz serverů kontrolovat firewall(iptables), který povolí jen připojení na databázi a webserver. Opět se nejedná o samostatný stroj - všechny tři servery budou implementovány na jednom HW. Fyzicky bude server umístěn na páteřní síti jednoho z českých ISP tak, aby bylo dosaženo co nejlepšího poměru cena/konektivita. Ochranu proti výpadku elektrického proudu zajistí provider připojení na vlastní UPS. Záloha dat bude řešena kopírováním dat na druhý (zálohovací) server, který bude umístěn na jiném místě a lince než hlavní server. I tento stroj bude opatřen UPS a firewallem. Administrace obou serverů bude zajištěna placeným administrátorem nebo firmou.

Měřící stanice budou číst data přímo z měřidel a ukládat je do databáze. K filtrování internetového provozu budou opět použity iptables a každá stanice bude vybavena vlastní UPS. V současné době se 3 tyto stanice nacházejí v lokalitách Pernštejn, Železný Brod a na Jizerce. V budoucnosti budou další stanice umísťovány na takových lokalitách, které dávají možnost nějakého smysluplného měření pro sledování povodňových situací - zejména u vodních toku, vodních přehrad, na soutocích řek apod. Administraci všech stanic bude obstarávat stejná osoba jako server (v případě velkého počtu stanic bude adminů víc).

Návrh SW a HW

Návrh je řešen pro připojení tří měřících stanic a jednoho serveru. Při návrhu se počítá s postupným rozšiřováním jednotlivých měřících středisek. Do ceny nejsou zahrnuty měřící sondy a pracovní stanice, neboť jsou řešeny individuelně podle měřící stanice a jejich konfigurace je mimo rozsah tohoto projektu.

Společnost realizující tento projekt není plátcem DPH, proto veškeré uvedené ceny jsou kalkulovány včetně DPH. Ceny jsou platné ke dni 24.3.2004.

Hardware

Konfigurace serveru

Je použit server firmy Alzasoft NetServer 2800i.

Intel Pentium 2,8 GHz
2 x 256 MB RAM
GeForce MX440
2 x 120 GB HDD
Řadič RAID 0 / 1
DVD+-RW

detailní popis

Celkové náklady: 34.110,- Kč

Konfigurace zálohovacího serveru

Je použit počítač firmy Libra LEO Persica.

AMD XP 2000+ MHz
128 MB RAM
120 GB HDD
DVD+- RW

detailní popis

Celkové náklady: 15.690,- Kč

Doporučená konfigurace pracovní stanice

Pracovní stanice není zahrnuta v rozpočtu, neboť je součástí měřící stanice.
Jako pracovní stanice je použita sestava Acer 91.TE82Z.W30.

Čipset: VIA KM400+ VT8235
Procesor: AMD Athlon™ XP 2000+
Paměť RAM: 128 MB DDR
Grafická karta: Integrovaná AGP, možno využít volný AGP8x slot pro rozšíření
Pevný disk: 40 GB, 5400 otáček, Ultra ATA 100
Audio: Integrovaná
Síťová karta: Integrovaná 10/100
Porty: 1x sériový, 1x paralelní, 2x PS/2, 1x VGA, 6x USB2.0 (2 přední a 4 zadní),
   1x FireWire, 1x RJ-45, 2x Audio porty - Line-in/ Line-out (přední i zadní panel)

Cena sestavy 10.350,- Kč
Monitor BELINEA 103026 17" TCO03 3.622,- Kč
UPS APC Back-UPS 350 EI, software + kabel, dat. Ochrana 2.402,- Kč
Tiskárna CANON i250 4800x1200 dpi USB 1.792,- Kč
Příslušenství (klávesnice, myš, kabely) 495,- Kč
Celkové náklady na jednu stanici 18.661,- Kč

Připojení k síti internet

Na fyzickém umístnění serveru nezáleží, bude tedy umístěn v lokalitě s nejnižšími náklady na připojení do sítě internet.

Připojení serveru

Server hosting s agregačním poměrem 1:500 u www.pes.cz : 948,- / měsíc

  • umístění serveru na sdílených linkách 100 Mbps NIX a 10 Mbps zahraničí
  • neomezené množství přenesených dat
  • 100 Mbps síťová karta
  • napojení na UPS a generátor
  • zřízení a instalace služby zcela zdarma
  • plně klimatizované prostory
  • prostory s nepřetržitou ostrahou
  • restarty serveru
  • vedení DNS ZDARMA pro neomezený počet domén
  • zálohovaná konektivita do NIXu i do zahraničí
  • kvalitni konektivita
  • garance dostupností linek je 99,9% (2 x 100 Mbps NIX, 100 Mbps SIX, 2 x zahraničí)
  • možnost volby umístění serveru v serverovnách v Praze, Ktiši, Brně nebo Bratislavě
  • jednotné ceny ve všech lokalitách
  • snadná dopravní dostupnost všech našich serveroven
  • nonstop neomezený přístup k serveru (bez příplatku)
  • nonstop zákaznická podpora
  • 1 veřejná IP adresa
  • neustálý monitoring serverů
    (pzn: možnost připojení dalšího stroje za příplatek 700,-Kč/měsíc)

Připojení stanice

Připojení slouží pro přenos naměřených dat včetně snímků z webové kamery. Pro návrh výchozího řešení je použita služba ADSL vzhledem ke své dostupnosti. Bude-li v lokalitě měřící stanice dostupné výhodnější připojení, bude toto připojení využito.

IOL Broadband 512/128, 6 GB objemu přenesených dat v ceně služby.
broadband.iol.cz: 1516,50 / měsíc

V případě výpadku připojení, se budou data ukládat na disk a po obnovení spojení se vše zpětně přenese. Není tedy záložní připojení potřeba.

Správa domény

Roční registrační poplatek u www.pipni.cz: 781,- Kč

Software

Operační systém Slackware Linux zdarma
MySQL server zdarma
framework Torbine zdarma
prez. vrstva Velocity zdarma
web server Apache zdarma

Cena vývoje našeho SW

Jedná se o heterogenní software psaný jednak zčásti v jazyce C, zčásti v jazyce PHP a malá čast JavaScriptu. Celkový rozsah je odhadnut asi na 12000 řádků zdrojového kódu.

Rozpočet dle Boehmova cenového modelu COCOMO (Constructive Cost Model)

Rozsah = 12
k = 3,0
n = 1,12
m = 0,35

Náročnost projektu je pak

N = k . Rn = 49 člověko-měsíců

Čas

C = 2,5 . Nm = 10 měsíců

Počet lidí

P = N / C = 5 lidí

Přesnější výpočet metodou COCOMO pomocí nástroje na stránce: http://sunset.usc.edu/research/COCOMOII/cocomo81_pgm/cocomo81.html

Výsledky

Effort = 54.19 Person Months
Schedule = 11.40 Months

You submitted the following name / value pairs:

  • size = 12000
  • mode = 1.05
  • rely = 1.15
  • data = 0.94
  • cplx = 1.00
  • time = 1.00
  • stor = 1.00
  • virt = 1.00
  • turn = 1.00
  • acap = 1.19
  • aexp = 1.00
  • pcap = 1.17
  • vexp = 1.00
  • lexp = 1.00
  • modp = 0.91
  • tool = 0.91
  • sced = 1.00

Počet pracovníků vychází stejně, tedy P = Effort / Schedule = 5 peoples

Závěr

Výpočet oběma způsoby vychází přibližně stejný. Budeme tedy vycházet z přesnější metody spočítané pomocí výše uvedeného nástroje. Zaměstnáme 5 lidí na plný úvazek po dobu 12 měsíců. Počítáme-li výplatu programátora 25.000,- Kč za měsíc, pak cena za software je 1 500 000,- Kč.

Cena vývoje podle MS Projektu

viz harmonogram

Náklady na provoz systému

Hardware

1 ks Server 34.110,- Kč
1 ks Záložní server 15.690,- Kč
2 ks Monitor BELINEA 103026 17" TCO03 7.244,- Kč
3 ks Pracovní stanice - nejsou zahrnuty v rozpočtu ------
Celkem hardware 57.044,- Kč

Software

Licence OS 0,- Kč
Vyvinutý software 1.500.000,- Kč
Celkem software 1.500.000,- Kč

Náklady na 1 rok provozu

12 x 2x Server hosting 100 Mbps 22.752,- Kč
12 x 3x IOL Broadband 512/128, 6 GB 54.594,- Kč
1 x Správa domény 781,- Kč
Celkové náklady na 1 rok provozu 78.127,- Kč

CELKOVÉ NÁKLADY 1.635.171,- Kč

Seznam úloh

Tabulka

Harmonogram

MS Project verze
PDF verze

Začátek projektu 1.3.2004
Ukončení projektu 10.1.2005
Počet dní 226
Počet pracovních hodin 4 184,8
Celková cena 681 140 Kč

Celková cena vyjadřuje pouze plat zaměstnanců, není zde zohledněn nákup SW, HW ani údržba systému.

Jméno zdroje Značka Standardní cena za hodinu Zvýšená cena za hodinu
Zadavatel Z 0,00 Kč/hr 0,00 Kč/hr
Vedoucí V 200,00 Kč/hr 250,00 Kč/hr
Tester T 150,00 Kč/hr 170,00 Kč/hr
Analytik A 170,00 Kč/hr 200,00 Kč/hr
Návrhář N 170,00 Kč/hr 200,00 Kč/hr
Grafik G 170,00 Kč/hr 200,00 Kč/hr
Programátor P 170,00 Kč/hr 200,00 Kč/hr
Manager M 220,00 Kč/hr 270,00 Kč/hr

Prezentace

Soubor (PPS)