Sunday, November 1, 2009

Kako izabrati Web stranice za tvrtku?

Već neko vrijeme si razmišljam kako bi mogao započeti pisati nekakvu vrstu konzultantske miniserije, tj. upute što napraviti u određenim nabavkama i modernizacijama IT infrastrukture. Ideja ne nedostaje, primjerice VoIP, Web stranice, VPN, DMS, poslužiteljska infrastruktura, itd. Kod svih ovih nabavki karakteristika je da tvrtka dobavljač/izvođač u općem slučaju ima kao svoj cilj maksimizirati profit i minimizirati količinu utrošenih resursa, uz naravno, cilj da baš ona dobije posao. To se u praksi manifestira u nekoliko oblika:
  1. neće Vam spominjati alternative, ili ako ih spominju uglavnom će ih ocrnjivati,
  2. pokušat će vam prodati svoja vlastita rješenja umjesto nekih standardiziranih,
  3. pokušat će Vas vezati uz sebe u smislu da će pristajati na sve prije nego što donesete odluku, dok kad jednom pristanete uzeti njihovo rješenje više nemate mogućnosti promjene i sve odjednom postaje puno teže ili nemoguće.
Jasno, ove tri manifestacije variraju u ovisnosti o mnoštvu parametara. Otežavajuća činjenica je i da svaka tvrtka ima svoje posebnosti zbog čega je bilo kakvo uopćavanje u pravilu nezahvalno. Iz tog razloga ove tekstove treba shvatiti više kao smjernice nego kao algoritam koji treba provesti kako bi se došlo do konačnog rješenja.
U ovom prvom tekstu pozabavit ću se Web stranicama, tj. situacijom kada nekakva tvrtka odlučuje da treba Web stranice radi promidžbe, bilo da postojeće više nisu dovoljne ili uopće do sada nije bilo Web stranica. Poanta je da se radi kompletna promjena što je situacija u kojoj je najlakše pratiti različite opcije.
Web stranice su specifične zbog toga što su direktno izložena na cijelom Internetu te su najčešća meta napada. Primjerice, na stranici http://www.zone-h.org/ nalazi se arhiva uspješno napadnutih Web stranica zajedno sa kopijom napadnute stranice. Nije potrebno objašnjavati koji je to problem za javnu sliku (image) tvrtke ako se nešto loše desi. Pogotovo je to problem ako se putem Weba može doći do osjetljivih informacija koje nisu namjenjene svima (zaštićene su nekakvim lozinkama i slično). Zbog toga treba pažljivo birati rješenje kako bi se minimizirala mogućnost takvih problema. Ovom prilikom treba istaknuti i da Vam nitko ne može jamčiti 100% sigurnost, tj. ako netko tvrdi da sigurno nitko neće provaliti tada Vam laže. Mogućnost provale uvijek postoji!

Statične ili dinamične Web stranice
Dakle, prvo pitanje na koje treba dobiti odgovor je Kako često se namjerava mijenjati sadržaj stranice?. Naime, ako je to rijetko, primjerice nekoliko puta godišnje, ili još rjeđe, onda u načelu nije potrebno uzimati dinamične Web stranice (Web aplikacije) već se sve može riješiti statičnim Web stranicama. Prednosti tog pristupa su:
  1. drastično ste smanjili mogućnost napada na stranice,
  2. cijena izrade Web stranica, ali i njihovog smještaja, u takvim situacijama trebala bi biti značajno niža,
  3. jednostavno je promijeniti tvrtku izvođača.
Nedostatak je da za svaku promjenu morate kontaktirati tvrtku koja Vam je napravila stranice što je u slučaju malog broja promjena zanemarivo, ali kako broj promjena raste tako to postaje sve veći problem (u smislu vremena potrebnog za izmjenu a slijedno tome i troška).
U svakom slučaju, ako ste se odlučili za statične Web stranice tada je na redu traženje izvođača što bi trebao biti rutinski posao te veći dio preostalog teksta ni ne morate čitati, tj. možete odmah preskočiti na poglavlje o održavanju.
Za kraj ovog poglavlja još ću pokušati ukratko objasniti što su statične Web stranice i koja je razlika u odnosu na dinamične Web stranice.  U suštini, svaka Web stranica koje gledate, uključivši i ovu, je u stvari tekst dokument koji opisuje kako će Vaš preglednik prikazati informacije na stranici. Možete vrlo jednostavno vidjeti sadržaj te datoteke tako pogledate njen izvorni kod (u Firefoxu to je Ctrl+U). U stvarnosti taj jedan tekst dokument referencira druge dokumente, i slike, ali to za nas u ovom trenutku nije bitno. Ono što je bitno je kako nastaje taj tekst dokument i to je ono po čemu se razlikuju statične i dinamične Web stranice. Ako je tekst dokument napravljen tijekom izrade cijelog Weba te potom pohranjen na disku i ne mijenja se bez intervencije čvojeka (koji će ga promijeniti i ponovo zapisati), tada govorimo o statičnim Web stranicama. Međutim, ako taj tekst dokument ne postoji na disku već se kreira u letu kada korisnik zatraži Web stranicu, tada govorimo o dinamičnim Web stranicama. To keiranje u letu obavlja program koji se naziva Web aplikacija, odnosno u ovom tekstu ćemo skraćeno govoriti i samo aplikacija.

Dinamične Web stranice
Dinamičke Web stranice, kao što je već rečeno, imaju veće mogućnosti ali zahtijevaju i više resursa za redovno održavanje. U prijevodu, više koštaju. Kao prvi korak u utvrđivanju odgovarajućeg rješenja trebali bi napraviti popis zahtijeva. Primjer nekih pitanja koja mogu pomoći u tom procesu su:
  1. kome su sve namjenjene informacije koje će biti dostupne na Webu,
  2. kakve sve informacije namjeravate objavljivati te da li ih namjeravate grupirati,
  3. tko sve i kakva prava pristupa ima,
  4. da li namjeravate obaviti povezivanje s internim bazama
U načelu, s popisom zahtijeva (uključivši i dizajn koji se ovdje ne spominje eksplicitno, ali se podrazumijeva) trebali bi sastaviti zahtijev za ponudama. Ponude koje pristignu grupirati ću u sljedeće kategorije:
  1. Rješenja temeljena na aplikaciji iz vlastitog razvoja.
  2. Rješenja temeljena na aplikaciji iz nečijeg tuđeg razvoja, ali bez dostupnog koda.
  3. Rješenja temeljena na aplikaciji otvorenog koda.
  4. Rješenja koja ne spominju koja aplikacija se koristi.
Iako bih u određenim situacijama podržao i 1. varijantu budući da sam pobornik razvoja a ne trgovine, ipak bih osobno preporučio varijantu 3 kao najbolju u gotovo svim slučajevima kada su Web aplikacije u pitanju. U nastavku ću pokušati obrazložiti zašto tu varijantu smatram najboljom:
  1. Kvalitetan kod
    Aplikacije otvorenog koda su sigurno kvalitetnije pisane nego zatvorene aplikacije čiji kod ne možete vidjeti. Razlog je što kod otvorenih aplikacija mnoštvo ljudi stalno pregledava iz različitih motiva. Neki kako bi pronašli pogreške koje bi potom iskoristili za napade, drugi kako poboljšali kod, itd. Za razliku od otvorenog koda, kod zatvorenog koda česta karakteristika je da se moraju zadovoljiti neki (nerealni) rokovi zbog čega se u kod ugrađuje funkcionalnost koja nije dovoljno ispitana.
  2. Kontinuirani razvoj
    Ako odaberete neku od aplikacija otvorenog koda (primjerice Mambo, Joomla, Plone, Drupal) možete biti sigurni da se te aplikacije stalno unaprijeđuju i dorađuju. Inače, Drupal se koristi i na whitehouse.gov stranicama.
  3. Proširivost i mnoštvo mogućnosti
    Većina Web aplikacija napravljena je na takav način da je omogućeno proširivanje putem dodataka (plugins). Velika je vjerojatnost da za većinu potreba (čak i sve) već postoji razvijeno rješenje.
  4. Niste ovisni o dobavljaču
    Ako niste zadovoljni s jednim dobavljačem jednostavno nađete novog dobavljača. Kod zatvorenih aplikacija to je puno teže budući da je potrebno prebacivati podatke iz jedne aplikacije u drugu, nekompatibilnu, aplikaciju pri čemu dobavljač od kojega odlazite ne mora biti nužno kooperativan.
  5. Razvoj nije od nule
    Razvoj je skup, a pogotovo kvalitetan razvoj. U ta rješenja uložene su velike količine resursa i bilo koja tvrtka koja bi odlučila raditi alternativno rješenje (dakle, od nule) jednostavno nema nikakve šanse konkurirati postojećim proizvodima u pitanju kvalitete i podržanih mogućnosti.
  6. Sigurnost
    Kod ovih aplikacija možete biti sigurni da ste dobro osigurani ako ste dobro riješili/dogovorili održavanje.
Dakle, sada možete postaviti pitanje zbog čega će uopće vanjska tvrtka kad već postoji gotovo rješenje. Vanjska tvrtka Vam je potrebna iz sljedećih razloga:
  1. Prilagodba izgleda (design customization).
    Vrlo vjerojatno ponuđeni izgled Web aplikacije, kao i postojeće varijacije, neće zadovoljavati potrebe Vaše tvrtke te je Web aplikaciju potrebno uklopiti u vlastiti izgled. Za ovo je potrebno imati dizajnerskih vještina, ali moguće i programerskih.
  2. Izrada novih dodataka.
    Određeni specifični zahtijevi možda nisu pokriveni postojećim dodacima (plugins) te u tom slučaju tražite tvrtku izvođača da vam razvije taj dodatak. Preporučio bih, ako je ikako moguće, da razvijeni kod opet bude otvorenog koda te da ga pošaljete za uključivanje u Web aplikaciju. S tim jamčite kvalitetu koda (neće biti uključen ako kvaliteta koda nije zadovoljavajuća), a kako se mijenja Web aplikacija drugi će se brinuti da Vaš dodatak i dalje radi! Ipak, ako to ne može biti javno objavljeno (jer je preosjetljivo ili neinteresantno drugima) tada barem osigurajte da ste vi vlasnik dodatka, a ne tvrtka koja ga je izradila!
  3. Održavanje.
    Ovom temom se detaljnije bavim u idućem poglavlju.
Jasno kako postoje tvrtke koje imaju vlastite resurse s kojima mogu pokriti sva tri zahtijeva, ali takve tvrtke su vjerojatno vrlo rijetke i slobodno mogu zaključiti kako Vam je ipak potrebna vanjska tvrtka. Dodatni argument za vanjsku tvrtku je njeno iskustvo zbog čega će posao biti daleko brže i kvalitetnije odrađen.

Održavanje
Za kraj pozabavit ćemo se i s vrlo bitnom stavkom održavanja! Održavanje uključuje sljedeće elemente:
  1. Smještaj stranica.
  2. Održavanje Web aplikacije te operacijskog sustava i njegovih komponenti na kojima se izvršava aplikacija.
  3. Sigurnosne kopije.
Smještaj stranica može biti na vlastitim poslužiteljima ili ih tvrtka koja Vam ih je napravila može negdje smjestiti. U principu, to je nebitno, iako, možda laganu prednost ima vlastito smještanje stranica budući da ste onda još nezavisniji od tvrtke dobavljača. Eventualno možete obratiti pozornost na sigurnost vanjskog poslužitelja na kojemu se smještaju stranice.
Održavanje uključuje sigurnosne nadogradnje te nadogradnje na novije verzije. To dvoje treba biti zasebno specificirano. Sigurnosne nadogradnje moraju se hitno izvoditi i uglavnom su minornog karaktera. Dakle, to bih svrstao u standardno održavanje. Promjena na novu verziju je posebna priča budući da se može desiti da su stara i nova verzija dovoljno različite da prijelaz nije trivijalan. U svakom slučaju, preporučio bih da se to svakako definira budući da svaka aplikacija ima ograničen vijek održavanja (bez obzira koliko dug) i nakon tog vremena više nema sigurnosnih nadogradnji što vas čini ranjivim!
Konačno, izrada sigurnosnih kopija (backups) je također bitna i to iz dva razloga. Prvi je u slučaju da se desi nekakva katastrofalna greška na poslužitelju možete ostati bez podataka. Drugi je da u slučaju promjene izvođača možete iz sigurnosnih kopija rekreirati sve Web stranice na novom poslužitelju.

Umjesto zaključka
Za kraj, preporučio bih da na vlastitim stranicama koristite Google Analytics, ili sličan alat. Naime, on Vam omogućava praćenje posjeta na Vaše stranice te na temelju njega možete otkriti što ljudi traže i što ih zanima kada su došli do Vas.

Wednesday, August 19, 2009

Malo filozofije...

Tu i tamo uhvati me minuta razmišljanja o "smislu života" i ponekad mi na pamet padne pitanje koje mi se čini toliko očitim, a s tim i vrlo vjerojatnim
da se pitam kako se toga nisam ranije sjetio. No ipak, ne mogu tvrditi kako sam se sam dosjetio tih pitanja, lako je moguće da sam ih negdje vidio u nekom obliku i potom potisnuo u podsvjest. No, sigurno je da bez obzira vidio ih ili ne, nisam prvi koji ih se sjetio. Ali, kako dugo nisam ništa stavio na blog, eto prilike za malo teksta.

Dakle, prvo od tih pitanja koje ću spomenuti je o smislu onoga što radimo u životu. Inače je pravilo u bilo kakvim postupcima postaviti jasan cilj (strategija), a onda se na temelju ciljeva određuju akcije koje će dovesti do cilja (taktika). Kakve to veze ima s našim postupcima? Pa vrlo zanimljive: kako možemo tvrditi da je nešto što smo napravili dobro ili ne, ako neznamo koji je naš cilj, tj. što nam je smisao života!? Prema tome, oportunistički gledajući, sve ima smisla i sve je smisao života. :) S druge strane, to je i mogući razlog zašto _ne znamo_ koji je smisao života, pod uvijetom da takvo što postoji. Naime, to bi možda učinilo živote većine besmislenim jer većina možda radi stvari koje ne vode nikuda, a ponajmanje ostvarenju smisla života. (Ovo s većinom je prizvoljno, moža je i manjina u pitanju?)

S tim u vezi je i drugo pitanje. Nije li vjerojatno da se ne treba tražiti smisao života pojedinca već smisao postojanja populacije? Naime, ako postoji nekakav cilj koji treba ostvariti tada je za očekivati da će u masi dio populacije ipak postići taj cilj, bez obzira što većina (ili manjina, svejedno) uopće ne pridonosi tome? Posljedica ovoga je da pojedinačno svatko od nas nema nikakav smisao, odnosno, nikakav cilj, tj. može se ponašati proizvoljno? Problem je što nedostaje nešto što bi ipak pazilo da se postiže smisao postojanja populacije, tj. nešto što bi odvajalo dio populacije koji se ponaša "dobro" i poticalo napredovanje tog dijela populacije, ili bar njenog ponašanja.

Ovo već pomalo podsjeća na genetiku. I s time dolazim do najbitnijeg pitanja kojeg sam svjestan (preskočit ću sada pitanje o životu izvan Zemlje). Već sam u dosta navrata vidio pitanja i rasprave u stilu: zašto prirodne konstantne imaju vrijednosti koje imaju, a ne neke druge. Recimo, jedan primjer koji Google daje visoko na popisu rezultata je ovaj. Pri tome se u tim raspravama spominje kako drugačije vrijednosti tih konstanti ne bi omogućile razvoj života. Dodatno, postoje teorije u više paralelnih svemira (multiverses). Kad se to dvoje spoji, pitanje je, što ako se i to temelji na istom principu, principu selekcije? U tom slučaju, možda ni naša populacija kao cjelina nema određeni smisao, odnosno cilj, već je samo jedna od potencijalno velikog broja populacija u različitim svemirima koje se ponašaju svaka na svoj način ali kao cjelina ipak teže nekakvom cilju...

Teška, ali neizbježna, pitanja na koja neću dobiti odgovor. Međutim, niz događaja, manjih ili većih, sretnih ili nesretnih, što nas snalazi u životu pokrene razmišljanje koje završi na tim pitanjima bez odgovora... u očajničkoj potrazi za stragetijom i taktikom.

Tuesday, June 2, 2009

ESXi 4

VMware released free version of it's supervisor ESXi 4 somewhere around the previous weekend. I managed to install it into VMware Workstation and to give it a quick try. Until I have more to say, here are a few differences that I noted during and immediatelly after installation process finished:

  • Minimum of 2GB RAM in order to be installed and used. I tried to lower memory size after installation finished but it hasn't worked.
  • Root password has complexity requirements and it requires you to use some better password.
  • busybox upgraded to version 1.9.1, but still only a subset of tools are compiled, installed.
  • python preinstalled
  • IPv6 support
  • ipkg package manager
I'll eventually update my page about ESXi as well as pages about hacks I discovered to reflect new version.

About Me

scientist, consultant, security specialist, networking guy, system administrator, philosopher ;)