Diskuze: Webový projekt update

PHP PHP Webový projekt update American English version English version

Avatar
Hadi.k
Člen
Avatar
Hadi.k:

Nějákou dobu přenýšlím nad tím, jak by se postupovalo při updatu webové aplikace. Příklad, máme imaginární sociální síť, na webserveru je nahraná web aplikace (databáze, phpfiles, html files atd.), a tedka jak za běhu nahradit původní soubory novou přepracovanou verzí, která je úplně odlišná od původní. Normálně bych oznamil že bude odstavka na hodinu vše smazal a nahral znova. Ale je tu podmínka že se aplikace nesmí vypnout, takže jak mohu nahradit původní soubory za běhu, když to tam dám prostě kopírovat a přepsat, tak to může dělat problémy, některý objekt nebude mít metodu nebo bude úplně chybět a už to "vyhodí" chybu. Napadlo mě nahrát do to samostatné složky a pakt o přes .htacces přesměrovat přímo do této složky, ale nevím jestli je to nejlepší řešení.

Odpovědět 26.3.2014 11:13
"Ajťák" nikdy nebere telefon po prvním zazvonění!! Vždy je totiž velice vytížen - buď musí nejprve dopít ká...
Avatar
Odpovídá na Hadi.k
Luboš Běhounek (Satik):

Pokud se děje nějaká takováhle větší změna, tak bych klidně tu několikaminutovou odstávku udělal - třeba někde ve 4 ráno, pokud je to takový problém.

To řešení s htaccess nezní špatně, ale pozor na problémy, pokud tam mají uživatelé třeba nějaké soubory apod. - pokud jsou cesty relativně, tak najednou ta nová aplikace bude hledat soubory nahrané ještě ve staré verzi v nějaké své složce, kde je ale nenajde apod.

Nahoru Odpovědět  +1 26.3.2014 11:18
:)
Avatar
Hadi.k
Člen
Avatar
Hadi.k:

Zase při tom řešení s úplnou odstávkou, defakto smažeme funkční verzi. Může se stát že z nějákého důvodu to nemusí fungovat, a tedka se bude muset hledat chyba online. Takže to s tím htacess by tohle ošetřovalo, ale zase by se udělala zaloha původních souborů.

Nahoru Odpovědět 26.3.2014 11:42
"Ajťák" nikdy nebere telefon po prvním zazvonění!! Vždy je totiž velice vytížen - buď musí nejprve dopít ká...
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Já bych to řešil tím způsobem, že bych si vytvořil složku například 'beta'. Tam nahraješ novou verzi aplikace, potom dáš oznámení, že bude výpadek z toho a toho důvodu. Potom jednoduše složky přejmenuješ a je to.

Bude-li nějaký problém, složky opět přejmenuješ na původní názvy..

Nahoru Odpovědět  +1 26.3.2014 11:46
Chybami se člověk učí, běžte se učit jinam!
Avatar
coells
Redaktor
Avatar
Odpovídá na Hadi.k
coells:

V rozsahu, v jakém uvažuješ, se jedná jen o malý projekt. Pak to třeba u IIS funguje takhle:

  1. při požadavku na start aplikace se fyzický obsah zkopíruje do dočasných adresářů a nad tím server běží
  2. při změně fyzického obsahu se vytvoří nová kopie aplikace, staré požadavky se nechají doběhnout na staré kopii a nové požadavky už server směřuje na novou kopii
  3. když jsou zpracovány všechny staré požadavky stará kopie se smaže

V praxi jsou webové servery v nějakém clusteru, ať už na webové farmě nebo v cloudu, takže se v balanceru z poloviny strojů odkloní požadavky a nasadí se tam nová verze, pak se prohodí se zbývajícími a nová verze se nasadí tam.

Pokud jsou změny větší, tak stejně ale selžou běžící sessions. Pokud se navíc mění databáze a změny nejsou kompatibilní, pak se dělá regulérní odstávka, která se dá zkrátit tím, že se opět část serverů odkloní z balanceru, databáze se nahraje na druhý stroj a po úspěšné aktualizaci se balancer přepne na novou verzi. Pak se dodělají zbylé servery. Taková odstávka je skoro neznatelná, jenom jsou stroje pod vyšší zátěží.

 
Nahoru Odpovědět  +1 26.3.2014 11:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.