În cazul în care platforma de configurare specifice să fie în pachetul de aplicație?

voturi
0

La locul meu de muncă câțiva oameni cred că este OK pentru a avea elemente de configurare specifice platformei (lucruri cum ar fi back-end nume de gazdă / addrs IP, DB detalii de conectare, etc) incastrate (ca fișier (e) .properties) în pachete de aplicații (un web App fișier .war). Cred că acest lucru este un lucru rău rău pentru următoarele motive:

  • trebuie să existe un pachet separat pentru fiecare platformă de țintă (ar putea fi un laborator dev, un laborator de model de producție etc.)
  • construi deasupra capului - construi script-uri de obicei construi un set de pachete de aplicații țintă (toate acestea sunt compilate în același timp, pe presupunerea că această versiune este versiunea finală)
  • un efort de management (de exemplu, sursa / versiune de control) de elemente de configurare are nevoie (în teorie, aceasta înseamnă chiar parole / ID-ului utilizatorului de sisteme client este păstrat)
  • nimeni nu poate fi sigur că versiunea pachetului este corect (suma de control inutil) - este partea executabil din pachetul pe care a fost testat în laborator aceeași cu care sa mutat în producție?

O consecință a acestei abordări este că (pentru Java Web App), într-un mediu de client, administratorii implementa pachetul, de închidere serverul de aplicații, copiați configurările specifice platformei peste partea de sus a celor care au fost înglobate în pachet, și reporniți serverul de aplicații . Dureros.

Poate că o mai bună abordare este de a externaliza platforma de elemente de configurare specifice - nu le-au întipărit în fișierul .war, și nu au aplicarea ei de referință în copac director de fișiere .war extins. În schimb, au elemente de configurare într-un „.. \ conf“ directorul în afara directorul aplicației. Acest lucru are avantajele:

  • unul și numai un singur pachet de aplicații pentru componenta executabil al aplicației
  • mai scurte construi deasupra (în comparație cu mai sus)
  • nu au cunoștințe de „client“ configurările specifice platformei (userids / parole)
  • auditării (capabil să facă o sumă de control pe un pachet de aplicație, face același lucru într-un laborator sau de pe platforma de client, și au un nivel ridicat de încredere că executabilele sunt aceleași) - „ceea ce am testat cu este ceea ce ai“
  • implementare este un proces mult mai scurt - în funcție de capacitatea de server de aplicație, dump fișierul app .war în directorul relevant și, în cazul în care nici o modificare de configurare (de multe ori), sări serverul de aplicații.

Această abordare are nevoie de aplicația să fie în măsură să indice un fișier în afara directorul aplicației. Există o mică atenție de securitate în acest sens. App variabile de mediu de server pentru a facilita aplicațiile fie în măsură de a localiza fișierele în afara directorul app lor (sau CLASSPATH).

Sunt în căutarea pentru comunitate să voteze în consecință. Eu pot merge apoi înapoi la colegii de muncă și să spună „nu doar ascultă-mă, vezi ce crede comunitatea StackOverflow.“

Întrebat 26/08/2009 la 22:40
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Am văzut trei modele:

  1. Config în aplicație. Noua construcție pentru fiecare mediu
  2. Configs (plural) în aplicație. construi adecvat de un anumit control optat Mediulu
  3. Configs separat de App. Config selectat de un anumit control asupra mediului.

Acest articol descrie un mod posibil de a pune în aplicare abordarea 3.

Opinia mea: Opțiunea 1 necesită o nouă construiește pentru fiecare mediu, acest lucru pur și simplu nu se potrivește cu gândirea mea despre promotaing aplicațiilor prin etapele de testare.

Opțiunile 1 și 2 ambele suferă de problema modului de a schimba un element de configurare după eliberare. O nouă versiune a aplicației pentru a schimba un nivel de diagnosticare? Sigur nu.

Opțiunea 3 este ceva mai complexă, un detalii feew de fier într-un mediu pus în cluster. Dar eu văd beneficii majore. Aș fi foarte interesat să vadă curcumstances sub care opțiunile 1 sau 2 sunt considerate mai bine.

Publicat 26/08/2009 la 22:55
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more