Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Tradicionalna praksa Razvoja/Integracije/Staging-a (postavljanja)/Produkcije za razvoj software-a

Jester's Cap

Nedavno su me zamolili da ukratko opišem plan za strukturirani proces za razvoj software-a koji krajnje uvećava produktivnost, a umanjuje bug-ove koji stižu do korisnika. Ovo je originalno bio interni OhioLINK dokument, ali opisani proces je prilično tradicionalan i drugi bi takođe mogli da mu nađu upotrebnu vrednost. Vi ste dobrodošli da ovo koristite; molim vas,ukažite poštovanje Creative Commons uslovima licenciranja i kontaktirajte me unapred ako vam treba nešto drugačije.

Kreiranje aplikacija u četiri etape

Počnimo najpre sa opisom četiri etape razvoja software-a.

Razvoj (Development)
Opciono. Ovo je radno okruženje za individualne developere ili male timove. Radeći u izolaciji sa ostatkom etapa, developer(i) može da isproba radikalne promene na kodu bez negativnog uticaja na ostatak razvojnog tima.

Integracija
Uobičajeno okruženje gde se svi developeri predaju pormenama koda. Cilj ovog okruženja je kombinovanje i validacija rada čitavog projektnog tima, tako da se može testirati pre nego što se pređe dalje na Okruženje postavljanja (Staging Environment). Moguće je da Razvoj i Integracija budu isto okruženje (kao u slučaju gde developer ne koristi lokalnu kopiju source koda).

Postavljanje (Staging)
Etapa postavljanja je okruženje koje je što je moguće više identično okruženju produkcije. Svrha Staging okruženja je da simulira što je moguće više okruženja Produkcije (Production). Staging okruženje takođe može da se duplira kao Demonstration/Training okruženje.

Produkcija (Production)
Etapa produkcije bi mogla da uključi pojedinačnu mašinu ili ogorman cluster (svežanj) koji obuhvata mnogo mašina.

Ove etape govore o “okruženjima” pre nego o “mašinama” ili “serverima.” Svakako je moguće za višestruka Razvojna okruženja i Integraciona okruženja da budu fizički na istoj mašini, ili da Integraciona i Staging (postavljanje) okruženja budu na istoj mašini. Ako je uopšte moguće, okruženje Produkcije bi trebalo da je samostalno i nepodeljeno sa bilo kojim od drugih okruženja.

Resursi kod svake etape

STAGING

  • Identična software konfiguracija kao produkciona mašina i kompletna, nezavisna kopija baze podataka produkcije,tako da je to prava baza za QA testiranje. Ako koristite Storage Area Network (SAN) (Mreža oblasti skladištenja) ili Network Attached Storage (NAS) (Skladište priključeno mreži), možda ćete moći da koristite “snapshot” (snimak) mogućnosti uređaja za skladištenje za simuliranje kopije produkcione baze podataka bez zahteva za celim duplikatom, kopijom podataka (i odgovarajućim hardware-om).
  • Hardware konfiguracija uporediva sa produkcionim sistemom, radi tačne prognoze kapaciteta po testiranju performanse naspram njega, a zatim uvećavanjem njegove performanse brojem mašina koje će biti raspoređene u produkciji.

INTEGRATION (INTEGRACIJA)

  • Ograničeni podskup podataka koji je koristan za testiranje “graničnih uslova” u aplikaciji. Možda je pametno često osvežavati ovaj podskup podataka radi uklanjanja artifakta razvoja software-a i testiranja na Integracionom okruženju.

DEVELOPMENT (RAZVOJ)

  • Isti ograničeni podskup podataka kao Integraciono okruženje.

Kretanje među etapama

Ovaj crtež pokazuje prirodu rada izvedenog u svakom okruženju, odgovornosti aktera u svakom okruženju, i relativnu stopu izgradnje i razmeštanja software-a.

Process for Moving Through Development/Integration/Staging/Production Stages

U narativnoj formi, software developer piše kod u njegovom ili njenom razvojnom okruženju (1) i upisuje ga u Subversion source code repository-u (“magacin”) (2). Kako drugi developeri prijavljuju bug-ove (3) ,više se promena pravi (5) i upisuje (6). Upamtite da Razvojna i Integraciona okruženja mogu biti isto stvarno okruženje, tako da ova dva box-a mogu biti srušena; važno je napomenuti da se, ipak, u takvom slučaju, promene i dalje upisuju u Subversion.

Kada su developeri zadovoljni ponašanjem Integracionog okruženja (6), Release Master (“glavni za izdanja”) kreira kopiju ili “tag” koda u Subversion-u i update-uje Staging okruženje na ovaj tag (7). U ovom trenutku testeri osiguranja kvaliteta (quality assurance (QA) testers) počinju svoj pregled (8). QA testeri mogu biti i interno osoblje i spoljni ocenjivači; Oblast Staging-a se takođe udvostručava kao okruženje treninga (obuke) kada je izdanje Produkcije spremno. Izveštaji QA-a se vraćaju na developera (9) koji ih sređuje (10) i upisuje promene u Subversion (11). Nakon što su svi bug-ovi sređeni, release manager (“menadžer izdanja”) novu verziju unapređuje u staging (12).

Ovaj proces se nastavlja sve dok QA tim ne objavi da je staging verzija “okej za izdavanje” (13). Release manager pakuje verziju izdanja iz Subversion-a (14) i razmešta je na produkcione servere (15). Kako vreme prolazi, prave se izveštaji o bug-ovima i zahtevi za karakteristikama (16) za koje developer piše kod (17) i upisuje promene u source code repository (magacin) (18). (17) i (18) su funkcionalno ekvivalentni gore navedenim ”(1)” i ”(2)” . Ponavljati sve dok krajnji korisnik ne bude potpuno zadovoljan.

VAŽNE NAPOMENE

Developeri prave promene samo u Razvojnom i Integracionom okruženju. Ako je potrebno uraditi sređivanje bug-ova, developer to radi u fazi Subversion-a i Integracije. U cilju održanja integriteta source code repository-a ni u jednom trenutku developer ne pravi promene direktno u Staging ili Produkcionom okruženju.

Za svako razmeštanje na Produkciju, postoje višestruke verzije u Staging-u i za svako razmeštanje u Staging, postoje višestruke verzije u Razvoju/Integraciji. Po dizajnu, krajnji korisnici su izolovani od brzog i povremeno ludog procesa razvoja software-a. Pretpostavlja se da će većina bug-ova biti “uhvaćena” rano, a ponovljene verzije u ranim fazama će bug-ove naći brže.

Samo “release manager” može da razmesti verzije u sledeću fazu. Mogu postojati različiti release manager-i za razmeštanje iz Integracije-na-Staging i Staging-na-Produkciju; release manager može čak da se menja iz verzije u verziju. Naravno, na nekim projektima, developer, release manager, i QA tester mogu zapravo biti ista osoba. Važna pojedinost, ipak, jeste ta da uvek postoji samo jedna osoba odgovorna za razmeštanje nove verzije.

Iako vertikalni box-ovi na crtežu naznačuju da je Integraciono okruženje isključeno u koraku ”(7)”, u stvarnosti verzija software-a u Integracionom okruženju zapravo nikada ne odlazi. Umesto toga, verzija software-a koja je unapređena na Staging okruženje je “tag-ovana” kao isključena od “trunk-a”(stablo) u source code repository-u i to je tag-ovana verzija koja je kopirana u Staging. Rad od strane developera se zatim nastavlja na “trunk”. Isto važi za unapređenje Staging verzije u produkciju.

Standardi kodiranja

Radi olakšavanja prenosa aplikacija iz razvojnog servera kroz staging i u produkciju, kod bi trebalo da je oslobođen od bilo kakvih, od servera zavisnih varijabli.

  • Ako je neophodno, odredite hostname (ime host-a) programski, radije nego da ga specifikujete eksplicitno u kodu ili konfiguraciji. Može se koristiti bilo javax.servlet.ServletRequest.getServerName ili javax.servlet.ServletRequest.getLocalName za određivanje ovoga u servlet-u.
  • Da biste bili sigurni da je kod prenosiv preko sistema fajlova, koristite relativna pathnames (imena putanja) u kodu, i ako je neophodno, podesite direktorijum baze u konfiguraciji aplikacije. Ovo će omogućiti da aplikacije i skripti budu pomerani iz jednog direktorijuma na razvojnoj mašini u drugi direktorijum (moguće sa različitom putanjom (path)) na produkcionoj mašini.

Tag-ovi za "Tradicionalnu praksu Razvoja/Integracije/Staging-a/Produkcije za razvoj software-a"

Nađite sadržaj u vezi sa tim: within DLTJ Technorati del.icio.us Wikipedia
open source Find posts tagged 'open source' in DLTJ Find posts tagged 'open source' in Technorati Find posts tagged 'open source' in del.icio.us Find posts tagged 'open source' in Wikipedia (English)
programiranje Find posts tagged 'programming' in DLTJ Find posts tagged 'programming' in Technorati Find posts tagged 'programming' in del.icio.us Find posts tagged 'programming' in Wikipedia (English)




Published (Last edited): 17-06-2013 , source: http://dltj.org/article/software-development-practice/