2009-06-01 14 views
5

Jakie są najlepsze praktyki i ogólna teoria wieloetapowego wdrażania dla aplikacji internetowych?Wieloetapowe porady dotyczące wdrażania?

Jestem szczególnie zainteresowany wdrożeniem Rails aplikacji przy użyciu Git, Capistrano i pasażera, i znalazłem posty, które omawiają nakrętki i śruby procesu:

Co należy wziąć pod uwagę w odniesieniu do każdego etapu (testowanie, inscenizacja, produkcja)? Czy etapy powinny być wdrażane na różnych serwerach fizycznych? Wszelkie wskazówki lub porady dotyczące wdrażania wieloetapowego? Jakieś przeszkody, na które powinienem zwrócić uwagę?

najlepszym

Jacob

+1

Przepraszamy, musiałem usunąć dwa hiperłącza do tych postów na blogu, aby opublikować pytanie. Każdy, kto chce dowiedzieć się czegoś więcej, może te elementy odszukać w Google bezpośrednio w postach. – trisignia

+0

Dlaczego trzeba usunąć hiperłącza? –

+1

Jestem nowym użytkownikiem tutaj, a StackOverflow nie pozwala mi jeszcze publikować hiperłączy w moich pytaniach. – trisignia

Odpowiedz

0

Lepiej mieć dwa różne środowiska serwerowe: inscenizację i produkcji. Zawsze ignoruję środowisko testowe. Środowisko testowe działa jak produkcja, ale po zakończeniu wycofuje bazę danych. Uruchomienie obu na tym samym serwerze może negatywnie wpłynąć na wydajność i stabilność środowiska produkcyjnego. Aktualizacja klejnotu w celu przetestowania w środowisku pomostowym może negatywnie wpłynąć na produkcję i obniżyć koszty przestoju.

Musisz być bardzo czujny, aby te same wersje klejnotów znajdowały się na obu serwerach. Może to oznaczać kłopoty, jeśli wersja aplikacji działa w inscenizacji, ale nie jest produkowana z powodu tego rodzaju rozbieżności.

Zawsze miałem otwarte okno konsoli, które jest gotowe do wycofania ostatniego wdrożenia, na wypadek gdyby coś poszło nie tak. Tak naprawdę proces ten nie ma większego znaczenia.

Zaoszczędź trochę pieniędzy i kup najtańszy serwer testowy. Jesteś jedynym, który go użyje, prawda? Tylko upewnij się, że pochodzą od tego samego dostawcy.

+0

Środowisko testowe nie jest środowiskiem, w którym należy uruchomić serwer. Jest ściśle przeznaczony do użytku przez twoje jednostki, testy funkcjonalne i integracyjne. Większość ludzi "uruchamia" to na tym samym polu rozwojowym, ponieważ jeśli powinieneś uruchamiać testy przed sprawdzeniem w jakimkolwiek nowym kodzie. –

1

Zawsze po prostu stworzony dla każdego zadania cap celu wdrożenia i stosować je w wierszu poleceń:

# deploy.rb 
task :stage do 
    server 10.0.0.1 ... 
end 

> cap stage deploy 

Można również zdefiniować dostosować zadania wewnątrz każdego zadania docelowego, takich jak wdrożyć tę robi porządki w inscenizacji, ale nie w produkcji.

Ponieważ te docelowe zadania docelowe rzadko są bardzo duże, nigdy nie widziałem czegoś takiego jak instalowanie rozszerzeń czapek dla wielu etapów, ale przypuszczam, że inne sytuacje mogą być inne.

Wydaje mi się, że produkcja powinna być oddzielona od innych środowisk, w przeciwnym razie istnieje ryzyko, że niewłaściwie zachodzące procesy w inscenizacji itp. Mogą wpłynąć na wydajność produkcji.

Czasami definiuję zadania nakładki dla wygody podczas przemieszczania, takie jak wysadzenie bazy danych i ponowne załadowanie jej z najnowszego zrzutu produkcji. Zadania te powinny sprawdzić cel wdrożenia za pomocą ustawionej zmiennej lub temu podobne i odmówić uruchomienia w celu produkcji jako ubezpieczenie na wypadek literówki późno w nocy.

To kuszące, aby wprowadzić wiele niestandardowych zachowań w pliku deploy.rb, ale odkryłem, że ma to tendencję do gryzienia i wymaga wiele wysiłku związanego z konserwacją, jak zmienia się środowisko lub zmiana capa.

Inną praktyką, którą widziałem w większych środowiskach, jest posiadanie konta powłoki z kasą, która śledzi gałąź stabilną, skonfigurowaną specjalnie do działania jako punkt kontrolny capistrano. Wchodzisz i uruchamiasz polecenia cap zamiast lokalnie. Pomoże to uniknąć problemów, w których plik deploy.rb lokalnego kasowania zawiera modyfikacje, których nie można użyć podczas wdrażania do produkcji. Jest to mniejszy problem z git vs svn, ale nadal trzeba uważać, aby zastanowić się, co lokalny plik deploy.rb znajduje się w momencie, gdy uruchamiają polecenia cap.

Heroku naprawdę czyni te rzeczy łatwymi w tych dniach, a EY i inni nie są daleko w tyle.

0

Stosujemy wielostopniowe wdrożenie capistrano od ponad roku. System ładnie oddziela pliki rozmieszczenia dla każdego etapu w niemal identyczny sposób jak pliki środowiska Rails. Konfiguracja i zarządzanie były bardzo łatwe.

Powiązane problemy