Alternativele pentru dezvoltarea si exploatarea aplicatiilor client/server au devenit numeroase în ultimii ani. Progress este una dintre ele.

Client/server cu Progress

Răzvan Nedelcu

Organizatiile guvernamentale, economice si întreprinderile recunosc rolul central pe care aplicatiile software îl joacă în cadrul organizatiilor. Astăzi aplicatiile sunt folosite pentru reducerea costurilor, modernizarea operatiilor, îmbunătătirea serviciilor si asigurarea unui avantaj strategic fată de competitie. Departamentele informatice sunt tot timpul sub presiune pentru a dezvolta repede aceste aplicatii critice. Cum pot ei să satisfacă aceste cerinte în timp ce bugetele si echipele de dezvoltare sunt în diminuare?

Răspunsul constă în alegerea unui mediu de dezvoltare de aplicatii client/server care să permită crearea rapidă de aplicatii critice, robuste care să satisfacă necesitătile de gestiune a datelor de azi si de mâine. Cum se poate alege instrumentul optim pentru acest lucru?

Există un număr de factori ce trebuie luati în considerare la selectia unui instrument de dezvoltare de aplicatii client/ser-ver. Alegerea trebuie făcută prin analiza atentă a cerintelor unei aplicatii si selectarea unui instrument de dezvoltare suficient de robust care să trateze aceste cerinte si care să se încadreze în actuala structură hardware. Utilizatorii trebuie să decidă dacă o aplicatie la cheie, cumpărată satisface cerintele domeniului de activitate sau dacă aceste cerinte justifică construirea aplicatiei unei aplicatii proprii. În final, cum poate organizatia să maximizeze cunostintele si talentele personalului existent pentru a beneficia de noile tehnologii ce oferă adevărate beneficii în afaceri?

Trebuie ales un mediu de dezvoltare care exploatează noile tehnologii protejând totusi utilizatorii de complexitatea acestora.

Un model pentru alegere

Piata de produse client/server s-a dezvoltat deoarece organizatiile se grăbesc să beneficieze de flexibilitatea si puterea mediilor distribuite. Pentru acoperirea cererii, pe piată au apărut numeroase companii ce produc medii de dezvoltare de aplicatii client/server. Toate afirmă că instrumentele de dezvoltare satisfac cerintele aplicatiilor de la nivelul grupelor de lucru la nivel de întreprindere. Identificarea diferentelor specifice se dovedeste a fi o adevărată provocare.

Progress Software foloseste modelul icebergului pentru a explica diferenta dintre uneltele de nivel grupă de lucru si nivel întreprindere. Utilizatorii trebuie să analizeze atent cerintele aplicatiei lor - interfata cu utilizatorul, logica aplicatiei si gestiunea datelor - înaintea alegerii mediului de dezvoltare. Multe instrumente de dezvoltare arată similar la nivelul interfetei cu utilizatorul. Doar atunci când se analizează mai adânc cerintele aplicatiei - se coboară sub nivelul apei - alegerea între instrumentele de nivel scăzut si cele de nivel înalt poate fi făcută în cunostintă de cauză.

Spre deosebire de aplicatiile de nivel scăzut, care tind să fie aplicatii simple, orientate pe interfata grafică, cu număr mic de utilizatori, aplicatiile de nivel înalt suportă număr mare de utilizatori, procesare de tranzactii complexe si diferite tipuri de interfată cu utilizatorul (interfată grafică si mod caracter - o necesitate a majoritătii organizatiilor ce migrează spre configuratii client/server). Din punctul de vedere al datelor aceste aplicatii trebuie să efectueze tranzactii pe baze de date eterogene si distribuite. Complexitatea proceselor economice dintr-o companie implică proiectarea de aplicatii cu logică complexă.

Dezvoltatorii sunt în căutarea unui instrument de dezvoltare care să combine usurinta utilizării mediilor de nivel scăzut cu puterea si robustetea unui instrument de nivel înalt. Acest instrument trebuie să permită dezvoltarea rapidă de aplicatii de nivel înalt, cu logică si gestiune de date complexe si interfată prietenoasă.

Punerea în practică a noilor tehnologii

Orientarea obiect (OO) este o tehnologie avansată care furnizează beneficii deosebite dezvoltatorilor. Dar timpul de învătare a limbajelor de programare orientate obiect traditionale ca SmallTalk sau C++ este lung, iar abordarea acestei paradigme de programare dă rezultate numai în mâinile programatorilor experti.

Majoritatea organizatiilor nu au resursele pentru rescolarizarea dezvoltatorilor în limbajele orientate obiect, deci au fost puse în situatia de a nu profita de beneficiile acestei tehnologii. Ele îsi doresc o abordare care să facă utilizarea orientării obiect simplă si accesibilă pentru toti dezvoltatorii putând profita astfel de beneficiile acesteia.

Un nou model de furnizare al aplicatiilor

Multe companii preferă construirea propriilor aplicatii care să satisfacă particularitătile proprii de gestiune ale datelor. Construirea unei aplicatii înseamnă mentinerea de echipe de programatori si asigurarea productivitătii lor. În acest caz compania îsi asumă anumite riscuri: proiectul aplicatiei poate esua; aplicatia nu este livrată la timp; aplicatia nu satisface în totalitate cerintele. Cerintele sunt în continuă modificare de unde apare necesitatea de noi aplicatii sau de modificare a celor existente. Ciclul de dezvoltare al aplicatiei poate fi de doi sau trei ani.

Pentru a implementa aplicatiile mai repede, multe companii aleg pachete de aplicatii „la cheie". Ele vor de asemenea să aibă posibilitatea de a adapta aceste aplicatii pentru a putea să aibă avantajele unui produs dezvoltat în companie. Aplicatiile dezvoltate în limbaje de nivel înalt se potrivesc cel mai bine la adaptări.

Într-o nouă paradigmă de programare bazată pe componente, expertii oficiilor de calcul vor selecta si integra cele mai bune componente de aplicatii dintre ofertele de pe piată, vor asambla si adapta aceste componente pentru a crea aplicatii specifice. Unele componente de aplicatii, cu cerinte specifice organizatiei, vor fi dezvoltate în continuare intern, de către echipele de dezvoltare proprii. Acest model de dezvoltare bazat pe componente oferă beneficiile oferite de aplicatiile „la cheie" (cost si timp de implementare scăzute, eliminarea riscurilor) si satisfacerea cerintelor specifice oferite de aplicatiile proprii.

Strategia Progress Software

Strategia Progress Software este de a folosi Orientarea obiect sub forma dezvoltării bazate pe componente. Familia de produse Progress Versiunea 8 se încadrează în viziunea tehnologică pe termen lung a companiei. Progress Versiunea 8 este un mediu de dezvoltare de aplicatii de nivel înalt, independent de tipul bazei de date, care permite dezvoltatorilor să construiască repede aplicatii complexe folosind Progress SmartObjects.

Progress V8 oferă o introducere rapidă în mediul dezvoltării bazat pe componente. Progress Software a creat PROGRES SmartObjects ca parte a Progress ACE (Application Component Environment) acestea permit reutilizarea modulelor în alte aplicatii (caracteristică a programării orientate obiect). Progress SmartObjects reprezintă o colectie de obiecte robuste (înglobează logică, acces la date si interfată) care lucrează împreună si pot fi asamblate pentru a crea o aplicatie cu functionalitate completă fără a scrie cod.

Folosind Progress SmartObjects, dezvoltatorii pot crea repede si usor cod reutilizabil într-un mediu de programare vizual si folosind puternicul limbaj de programare Progress 4GL, fără a fi necesară scrierea de cod în limbaje de nivel mai scăzut. Datorită faptului că Progress SmartObjects reprezintă extensii ale limbajului Progress 4GL care este usor de învătat si de stăpânit, programatorii pot deveni repede producători de SmartObjects. Atât Progress SmartObjects furnizate de Progress Software cât si cele proprii pot fi asamblate în aplicatii folosind mouse-ul prin pozitionare si actionare. Pe scurt, dezvoltatorii obtin productivitatea promisă de programarea orientată obiect într-un mediu de dezvoltare usor de învătat si folosit.

Progress ACE (Application Component Environment) este un cadru de lucru pentru asamblarea de Progress SmartObjects. ACE include "sfetnici" si "asistenti". Acestia conduc dezvoltatorul pe parcursul asamblării obiectelor în cadrul Progress UIB (User Inteface Builder) generând mesaje de legătură între obiecte si codul pentru gestiunea tranzactiilor si accesului la date.

Prin folosirea acestei tehnologii de către sutele de parteneri de aplicatii ai Progress Software este de întrevăzut aparitia unei piete mondiale de SmartObjects de diferite complexităti pentru diferite domenii de activitate. Aceasta va permite organizatiilor să-si înlocuiască aplicatiile monolitice cu aplicatii proprii dezvoltate folosind cele mai bune componente de pe piată.

În ultimii 12 ani activitatea Progress Software a fost îndreptată pentru a satisface cerintele dezvoltării de aplicatii de nivel înalt. Astăzi, prin aplicarea în practică a experientei si cunostintelor în domeniul instrumentelor de dezvoltare client/server de nivel înalt, Progress Software continuă să furnizeze software de calitate si servicii care să maximizeze productivitatea dezvoltatorilor de aplicatii profesionisti si să le permită livrarea de aplicatii care să satisfacă cerintele organizatiilor lor aducându-le un avantaj competitiv în afaceri.

SGBDR Progress

Atât în cadrul mediului de dezvoltare de aplicatii (Progress ADE) cât si pentru exploatarea aplicatiilor, Progress Software oferă ca o componentă propriul sistem de gestiune baze de date relationale: Progress RDBMS. Sistemul de gestiune de baze de date relationale (SGBD) Progress este baza de date aleasă de multi utilizatori de aplicatii dezvoltate în Progress. SGBD Progress oferă înaltă performantă la un pret avantajos fiind o alternativă la alte SGBD-uri bine cunoscute.

SGBD Progress:

Functionalitate relatională completă

Baza de date Progress include toată functionalitatea unui SGBD modern, inclusiv blocare la nivel de înregistrare, recuperare "roll-back" si "roll-forward", gestiunea tranzactiilor pe baze de date distribuite prin "two phase commit", backup on-line (salvarea bazei de date fără a fi necesară oprirea aplicatiilor ce o utilizează), suport pentru standardul ANSI SQL. (SGBD Progress V7 respectă standardul ANSI SQL89 Level 2)

Câteva caracteristici

Sisteme de operare. SGBD Progress este disponibil pe mai mult de 100 de platforme hardware si sisteme de operare diferite, de la PC-uri la sisteme mari multi-procesor. Sunt suportate toate variantele majore de UNIX: HP-UX, SCO, AIX, Digital UNIX, UNIX SUNOS, Irix, DG-UX, Solaris ca si principalele sisteme de operare proprietare ca OpenVMS sau CTOS. SGBD Progress este disponibil pe sistemele de operare pentru PC-uri inclusiv Windows NT, NetWare, MS-Windows, OS/2, MS-DOS.

Baze de date distribuite. Progress asigură accesul la date stocate în mai multe baze de date distribuite într-o retea. Locul fizic în care se află o bază de date individuală este transparent pentru utilizatori si aplicatie. Mediul de dezvoltare de aplicatii Progress si aplicatiile Progress pot accesa peste 200 de baze de date distribuite într-o retea eterogenă. Protocolul „Two Phase Commit“ poate fi automat folosit când mai multe baze de date sunt modificate într-o singură tranzactie.

Scalabilitate si flexibilitate. Deoarece de obicei este dificil de determinat din faza de proiectare platforma pe care va fi implementată o aplicatie anume, sistemul de gestiune a bazei de date pe care se bazează aplicatia trebuie să fie disponibil si să ofere performantă ridicată pe o mare varietate de platforme hard si soft.

Baza de date Progress este proiectată pentru a profita de avantajele diferitelor platforme hard si sistemelor de operare specifice. Din acest motiv aplicatiile de baze de date Progress au o performantă excelentă pe toate platformele suportate: de la sisteme mici cu un singur utilizator la sisteme mari, multiprocesor, cu sute de utilizatori ce procesează mai mult de 1000 de tranzactii pe secundă.

Portabilitate. Portabilitatea deosebită si suportul pentru protocoale multiple asigură ca o bază de date Progress dezvoltată pe un tip de calculator să poată fi usor mutată pe orice sistem si în orice configuratie.

Arhitectura flexibilă a bazei de date Progress are avantajul că profită de performantele specifice fiecărei platforme. Acesta permite ca SGBD Progress să fie scalabil si portabil pe diferite arhitecturi hard si topologii de retea. În plus, aplicatiile si baza de date Progress au o îmbunătătire de performanta predictibilă pe măsură ce noi resurse (memorie, procesoare) sunt adăugate în sistem.

Performantă

SGBD Progress este un motor de baze de date performant pentru aplicatii de gestiune utilizate în cele mai diverse domenii (comercial, guvernamental, industrial, servicii ...). Performanta cerută de astfel de aplicatii implică nu numai rată de procesare mare pentru tranzactii simple ci si procesarea rapidă si timp mic de răspuns pentru tranzactii mari, complexe, care caracterizează majoritatea aplicatiilor comerciale interactive.

Pentru a asigura o rată mare de procesare a tranzactiilor si integritatea datelor SGBD Progress include un număr de facilităti proiectate pentru minimizarea utilizării de resurse si maximizarea ratei de procesare:

Blocare la nivel de înregistrare - La tranzactiile de lungime si complexitate moderate punctul critic din punctul de vedere al performantei devine lupta pentru accesul la resursele comune partajate de utilizatori. Bazele de date cu blocare la nivel de pagină sau bloc au probleme în momentul în care o tranzactie atinge mai multe înregistrări: deoarece trebuie blocat pe durata tranzactiei un întreg bloc pentru fiecare înregistrare aceasta înseamnă că este posibil să se blocheze si alte zeci sau sute de înregistrări ce nu sunt afectate de tranzactie. Când se execută mai multe tranzactii simultan, posibilitatea interblocării creste exponential; ca rezultat apar tranzactii care asteaptă eliberarea înregistrărilor necesare cu consecinte asupra timpului de răspuns si a performantei.

Posibilitate de acces doar pentru citiri (Read-Only) - RDBMS Progress permite ca aplicatiile ce accesează datele doar pentru citiri (rapoarte) să citească înregistrările fără blocare. Aceste aplicatii nu sunt niciodată blocate de alti utilizatori.

Gestiunea inteligentă a bufferelor - motorul Progress utilizează în mod eficient si flexibil bufferele de memorie pentru a minimiza numărul de accese la disc. Într-o configuratie client/server, serverul Progress foloseste tehnici de împachetare a înregistrărilor într-un singur pachet, care este transmis pe retea către client. Aceasta împreună cu posibilitatea transmiterii numai a câmpurilor necesare dintr-o înregistrare cât si prin posibilitatea efectuării de către server a selectiei înregistrărilor, reduce foarte mult traficul pe retea generat de o aplicatie ce necesită afisarea unei liste de înregistrări.

Actualizare asincronă - pentru a se profita de existenta de procesoare aditionale si pentru a mări rata de procesare a tranzactiilor atât pe sistemele uni-procesor cât si pe cele multi-procesor Progress dispune de procese asincrone de scriere a bufferelor bazei de date pe disc (Asynchronous Page Writers - APW). Acestea sunt procese independente ce scriu periodic bufferele modificate ale bazei de date si fisierului jurnal. În momentul in care procesul server necesită refolosirea unui buffer de memorie există o mare probabilitate ca acesta să fie deja scris pe disc, deci nu mai este necesară o operatie de scriere. Procesele APW se pot configura ca număr, ca frecventă de parcurgere a bufferelor modificate si scriere a lor pe disc. Utilizarea proceselor APW poate produce o îmbunătătire semnificativă a performantelor.

Puncte de control (checkpoints) asincrone - una din activitătile sistemului de gestiune a bazei de date, care este mare consumatoare de timp, este chekpoint-ul. Acesta apare în momentul în care un cluster din fisierul jurnal (before-image) este plin. Pentru a se refolosi clusterul sistemul de gestiune trebuie să scrie toate tranzactiile efectuate în baza de date, întrucât Progress amână scrierea lor în timpul prelucrării normale. Dacă dimensiunea clusterului este mare, volumul de scrieri a modificărilor pe disc poate fi considerabil producând întârzieri de la 20 secunde până la un minut, timp în care alte procesări asupra bazei de date sunt suspendate. Pentru a minimiza acest efect provocat de checkpoint-uri, Progress foloseste puncte de control asincrone. Aceasta înseamnă că în momentul în care clusterul fisierului "before-image" este plin, Progress deschide un nou cluster si continuă procesarea timp în care procesele APW scriu bufferele modificate în bază. Odată ce modificările sunt scrise informatia din cluster nu mai este necesară si deci clusterul poate fi refolosit. Se obtine ca rezultat o performantă constantă si predictibilă.

Indecsi comprimati - indecsii bazei de date Progress sunt stocati într-un format compresat astfel încât la o singură operatie de citire să poată fi cititi cât mai multi indecsi.

Operare non-stop - majoritatea aplicatiilor sunt exploatate o mare parte din zi sau toată ziua lăsând putin timp pentru administrarea sistemului pentru operatii precum salvările. Progress asigură facilităti de salvare fără întreruperea operatiilor bazei de date. Administratorul bazei de date poate lansa salvări totale sau partiale ale bazei de date în timp ce aplicatiile sunt în exploatare.

Aceste facilităti asigură aplicatiilor pe baza de date Progress maximum de performantă în conditiile unui acces intens la datele comune.

Multiprocesare

SGBD Progress include un număr de facilităti destinate pentru exploatarea masinilor cu mai multe procesoare (SMP).

„Spin Lock" - Sistemele multiprocesor folosesc pentru accesul exclusiv al proceselor la resursele comune un mecanism numit „Spin Lock“. Fiecare proces efectuează propriul test pentru verificarea disponibilitătii resursei necesare. Dacă resursa este folosită, procesul intră într-o buclă de instructiuni NOP după care testează din nou disponibilitatea resursei. După un număr de testări succesive procesul intră în asteptare înainte de a încerca din nou. Dacă resursa este ocupată în continuare timpul de asteptare este mărit. Este posibil, în cazul unei configurări defectuoase, ca sistemul să piardă timp procesând aceste ciclări. Progress, printr-un parametru de pornire, permite stabilirea numărului de teste succesive înaintea intrării procesului în asteptare putându-se regla acest mecanism.

Număr mare de buffere de memorie - Se pot aduce în memorie până la 500000 de blocuri din baza de date. Pentru a asigura accesul rapid la orice buffer de memorie Progress utilizează o tabelă Hash ce poate avea numărul de intrări egal cu numărul de blocuri. Aceasta permite tinerea in memorie a cât mai multă informatie si accesul la ea cât mai rapid.

Semafoare multiple pentru gestiunea memoriei partajate - Fiecare structură de date din memoria partajată este gestionată de propriile semafoare. Procese care accesează structuri diferite (tabela de tranzactii si tabela de blocări, de exemplu) pot lucra în paralel.

Arhitectura „multi-server" „multi-threaded".

Procese de actualizare asincronă (APW).

Aceste facilităti permit ca Progress să aibă o deosebită performantă si scalabilitate pe masini multiprocesor.

Arhitectură scalabilă si flexibilă

Utilizarea optimă a resurselor sistemului si a hardware-ului SGBD Progress permite două configuratii de bază:

Client local (aplicatii host/terminal). În această configuratie clientul si serverul sunt părti ale aceluiasi proces eliminându-se încărcarea sistemului produsă de comunicarea între procese si schimbările de context. Aceste procese îsi coordonează singure accesul la baza de date prin memoria partajată si mecanisme de semafoare.

Client/Server. În această configuratie aplicatia client si serverul de date sunt procese separate (pe masini diferite). Fiecare server poate avea un singur flux de control (server single-threaded), comunicând cu un singur client, sau mai multe fluxuri de control (server multi-threaded), ocupându-se de mai multi clienti. Serverele „single-threaded" folosesc optim procesorul central al masinilor uniprocesor, pe când serverele „multi-threaded" sunt eficiente pe sisteme multiprocesor.

Administratorul aplicatiei poate mixa aceste configuratii pe acelasi sistem.

La lucru

Progress Software are peste 2300 de parteneri de aplicatii ("Progress Application Partners") în întreaga lume. Astfel numeroase aplicatii exploatează SGBD Progress în cele mai diverse configuratii hardware si software, cu sute de utilizatori ce accesează simultan baze de date de ordinul gigaoctetilor. 

Dl. Răzvan Nedelcu este inginer în cadrul echipei de suport tehnic a firmei Crescendo. E-mail:  crescendo@mail.rtns.ro .

(C) Copyright Computer Press Agora