StudioSystem

Automatyczna kopia aplikacji w usłudze SSJob

Automatyczna kopia plików aplikacji wykonywana przez usługę SSJob - kod, konfiguracja i wygenerowane dokumenty, niezależnie od kopii bazy danych.

studiosystem.softwarestudio.com.pl/transakcje/
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
W skrócie

Kopia aplikacji to zadanie usługi SSJob wykonujące kopię plików leżących na dysku serwera aplikacyjnego - kodu, konfiguracji i wygenerowanych dokumentów - niezależnie od kopii bazy MSSQL. Konfiguruje się je dokładnie tym samym mechanizmem, jednym wierszem w tabeli _jobs, ale bez rozróżniania rodzaju kopii właściwego dla zadań stricte bazodanowych.

Czym jest kopia aplikacji

Baza danych, opisana przy okazji zadania kopii bazy MSSQL, to tylko jedna część danych, od których zależy działanie platformy. Druga część - równie istotna, choć łatwiej pomijana przy planowaniu backupu - to pliki leżące bezpośrednio na dysku serwera aplikacyjnego, poza silnikiem SQL Server. Zadanie kopii aplikacji odpowiada właśnie za pełne zabezpieczenie tej drugiej, równie istotnej części danych.

To pominięcie nie jest przypadkowe - kopia bazy danych jest tematem znacznie częściej poruszanym w dokumentacji i szkoleniach administratorów baz danych, podczas gdy pliki aplikacji bywają traktowane jako coś, co „i tak jest w repozytorium kodu” albo „da się zainstalować od nowa”. W praktyce, przy wdrożeniu dostosowanym do konkretnego klienta, odtworzenie samej instalacji od zera rzadko wystarcza - brakuje w niej lokalnych modyfikacji konfiguracji i danych zgromadzonych już podczas eksploatacji.

Mechanicznie jest to zadanie takie samo jak pozostałe zadania usługi SSJob - wiersz w tabeli _jobs, uruchamiany cyklicznie w tle. Różnica leży wyłącznie w tym, co dokładnie jest kopiowane i jakie pola konfiguracyjne mają tu znaczenie.

Co obejmuje kopia aplikacji

Do plików aplikacji, które nie są częścią bazy danych, a mimo to są krytyczne dla działania systemu, należą przede wszystkim:

  • Plik web.config - konfiguracja aplikacji ASP.NET, zawierająca między innymi łańcuchy połączeniowe do bazy danych i ustawienia specyficzne dla danego środowiska.
  • Foldery App_Pdf, App_Xls, App_Zal - miejsca, w których zapisywane są wygenerowane wcześniej wydruki i załączniki, opisane szerzej przy okazji transakcji wydruk_refno.aspx.
  • Ewentualne modyfikacje kodu - zmiany wprowadzone na potrzeby konkretnego wdrożenia, wykraczające poza standardową instalację platformy.
  • Pliki statyczne i zasoby - obrazy, style i inne elementy interfejsu przechowywane bezpośrednio na serwerze.

Utrata tej warstwy danych - nawet przy zachowanej, aktualnej kopii samej bazy - oznaczałaby konieczność żmudnego, ręcznego odtwarzania konfiguracji środowiska i ponownego wgrywania wcześniej wygenerowanych dokumentów, których w bazie danych po prostu nigdy nie było.

StudioSystem

Konfiguracja bez dodatkowego oprogramowania

Zadanie kopii aplikacji, podobnie jak pozostałe zadania SSJob, nie wymaga instalowania osobnego, dodatkowego narzędzia do backupu plików.

Konfiguracja w tabeli _jobs

Zadanie kopii aplikacji korzysta z tego samego zestawu pól co pozostałe zadania SSJob, z jednym istotnym pominięciem:

PoleZnaczenie
OSTATNIOWYKONANOData ostatniego poprawnego wykonania zadania
CYKLICZNOSCLiczbowy interwał, co jaki zadanie jest uruchamiane
CYKLICZNOSCTYPEJednostka interwału - np. godziny, dni
MAILPOWIADOMIENIEAdresy e-mail, na które trafią powiadomienia o wykonaniu
CONECTIONSTRINGNAMEŁańcuch połączeniowy do bazy przechowującej konfigurację zadania
FOLDERKOPIIFolder, w którym zapisywana jest wykonana kopia aplikacji

W odróżnieniu od kopii bazy MSSQL, tutaj nie występuje pole RODZAJKOPII - kopiowanie plików aplikacji to zwykłe skopiowanie zawartości folderu, bez rozróżnienia na kopię pełną, przyrostową czy plik LOG, właściwego dla mechanizmu transakcyjnego bazy danych.

Harmonogram i częstotliwość

Częstotliwość ustala się tak samo jak w pozostałych zadaniach - parą pól CYKLICZNOSC i CYKLICZNOSCTYPE. W praktyce pliki aplikacji zmieniają się rzadziej niż dane w bazie - konfiguracja środowiska czy kod modyfikowany są sporadycznie, a nie przy każdej transakcji użytkownika - dlatego kopię aplikacji często konfiguruje się z dłuższym interwałem niż kopię bazy danych, na przykład raz na dobę zamiast co kilka godzin.

Wyjątkiem są foldery z wygenerowanymi dokumentami, takie jak App_Pdf czy App_Zal, których zawartość rośnie na bieżąco wraz z pracą użytkowników. Tam, gdzie utrata nawet jednego dnia wygenerowanych załączników byłaby dotkliwa, warto rozważyć wyraźnie częstszy interwał niż ten ustawiony dla samej konfiguracji aplikacji.

W praktyce spotyka się też podejście pośrednie - dwa osobne zadania kopii aplikacji zamiast jednego, z różnymi interwałami dla różnych podfolderów. Jedno zadanie kopiuje rzadko zmieniającą się konfigurację i kod, drugie - znacznie częściej rosnące foldery z wygenerowanymi dokumentami. Taki podział wymaga dodania dwóch osobnych wierszy w tabeli _jobs, każdego wskazującego inny folder źródłowy, ale pozwala precyzyjniej dopasować częstotliwość kopiowania do rzeczywistego tempa zmian w danych.

Powiadomienia i diagnostyka

Tak jak przy kopii bazy danych, pole MAILPOWIADOMIENIE pozwala ustawić adresy e-mail otrzymujące potwierdzenie wykonania zadania, a pole OSTATNIOWYKONANO w tabeli _jobs pozwala w każdej chwili sprawdzić, kiedy kopia była ostatnio wykonana poprawnie. Dodatkowym źródłem informacji o działaniu samej usługi pozostaje Dziennik zdarzeń Windows, opisany przy okazji instalacji usługi SSJob.

Folder docelowy kopii

Pole FOLDERKOPII wskazuje lokalizację zapisu wykonanej kopii aplikacji. Podobnie jak w przypadku bazy danych, dobrą praktyką jest wskazanie folderu na innym dysku fizycznym niż ten, na którym działa sama aplikacja - w przeciwnym razie awaria dysku aplikacyjnego zniszczyłaby jednocześnie oryginał i jego kopię, pozostawiając firmę bez jakiegokolwiek punktu odniesienia do odtworzenia środowiska.

Zasób sieciowy sprawdza się tu szczególnie dobrze, ponieważ pozwala też łatwo udostępnić kopię innej osobie zaangażowanej w proces odzyskiwania po awarii - na przykład zewnętrznemu integratorowi wspierającemu wdrożenie - bez konieczności fizycznego dostępu do serwera, na którym doszło do awarii.

Warto też rozważyć, czy kopia aplikacji i kopia bazy danych powinny trafiać do tego samego folderu docelowego, czy do osobnych lokalizacji. Rozdzielenie ułatwia porządkowanie i różnicowanie zasad retencji - pliki konfiguracyjne zmieniają się rzadko i mogą być przechowywane dłużej, podczas gdy częste kopie bazy danych szybciej zapełniają dostępne miejsce na dysku.

Warto też uwzględnić rozmiar samych folderów danych. Kartoteka towarowa i pozostałe dane referencyjne, opisane w materiale o dokumentach magazynowych, rosną powoli, ale foldery z wygenerowanymi wydrukami mogą z czasem osiągnąć rozmiar liczony w gigabajtach - warto to uwzględnić przy szacowaniu miejsca potrzebnego na kopię docelową.

Kopia aplikacji razem z kopią bazy

Pełne odzyskiwanie systemu po awarii wymaga obu elementów naraz - kopii bazy danych i kopii plików aplikacji. Sama baza danych, odtworzona na nowym serwerze bez odpowiadającej jej konfiguracji aplikacji, nie uruchomi w ogóle całej platformy - brakujący plik web.config z poprawnym łańcuchem połączeniowym całkowicie uniemożliwi połączenie z odtworzoną wcześniej bazą.

Z tego powodu oba zadania - opisane tutaj oraz w materiale o kopii bazy MSSQL - warto traktować jako komplet, a nie dwie niezależne, opcjonalne czynności. Test procedury odzyskiwania po awarii, jeśli w ogóle jest przeprowadzany, powinien obejmować odtworzenie obu elementów jednocześnie, a nie tylko bazy danych w izolacji.

Praktyczny test warto przeprowadzić na oddzielnym, testowym serwerze - odtworzyć tam obie kopie i sprawdzić, czy platforma faktycznie się uruchamia i pozwala zalogować się do modułu administratora. Dopiero taki pełny test, obejmujący zarówno bazę, jak i pliki aplikacji, daje realną pewność, że procedura odzyskiwania zadziała również w prawdziwej sytuacji awaryjnej, a nie tylko w teorii opisanej w dokumentacji.

Podsumowanie

Kopia aplikacji to zadanie SSJob zabezpieczające warstwę danych leżącą poza silnikiem SQL Server - konfigurację środowiska, ewentualne modyfikacje kodu oraz wygenerowane wcześniej dokumenty w folderach App_Pdf, App_Xls i App_Zal. Konfiguruje się je tym samym mechanizmem co pozostałe zadania, jednym wierszem w tabeli _jobs, bez rozróżniania rodzaju kopii.

Razem z kopią bazy MSSQL tworzy komplet niezbędny do pełnego odzyskania systemu po awarii - żadne z tych dwóch zadań samodzielnie nie wystarcza do przywrócenia w pełni działającej platformy dla użytkowników.

Regularne, choćby okazjonalne testowanie tego kompletu na osobnym środowisku pozwala odkryć luki w procedurze zanim staną się problemem podczas rzeczywistej awarii, kiedy czas na reakcję i tak jest już mocno ograniczony presją przywrócenia pracy firmy.

Słownik pojęć

Podstawowe pojęcia - kopia aplikacji

Terminologia przydatna przy zabezpieczaniu plików aplikacji.

KKopia aplikacji
Zadanie SSJob wykonujące kopię plików aplikacji webowej - kodu, konfiguracji i folderów danych - niezależnie od kopii bazy danych.
Wweb.config
Plik konfiguracyjny aplikacji ASP.NET, przechowujący m.in. łańcuchy połączeniowe i ustawienia środowiska.
FFoldery App_
Grupa folderów aplikacji przechowujących wygenerowane pliki - PDF, XLS, XML i załączniki - poza bazą danych.
TTabela _jobs
Tabela systemowa przechowująca konfigurację wszystkich automatycznych zadań usługi SSJob.
FFOLDERKOPII
Pole tabeli _jobs wskazujące folder docelowy, w którym zapisywana jest wykonana kopia aplikacji.
OOdzyskiwanie po awarii
Proces przywrócenia działania systemu po awarii, wymagający zarówno kopii bazy danych, jak i kopii plików aplikacji.
FAQ

Najczęściej zadawane pytania

01

Czym różni się kopia aplikacji od kopii bazy MSSQL?

Kopia bazy MSSQL obejmuje dane przechowywane w silniku SQL Server. Kopia aplikacji obejmuje pliki leżące na dysku serwera aplikacyjnego - kod, konfigurację i wygenerowane dokumenty - które nie są częścią samej bazy danych.

02

Co dokładnie obejmuje kopia aplikacji?

Pliki aplikacji webowej wraz z konfiguracją, w tym plik web.config z łańcuchami połączeniowymi, oraz foldery danych takie jak App_Pdf, App_Xls czy App_Zal, w których zapisywane są wygenerowane dokumenty i załączniki.

03

Czy kopia aplikacji ma te same rodzaje co kopia bazy danych?

Nie. W przeciwieństwie do kopii bazy MSSQL, kopia aplikacji nie rozróżnia rodzaju kopii - pole RODZAJKOPII nie występuje w tym zadaniu, ponieważ chodzi o zwykłe skopiowanie plików, a nie o mechanizm transakcyjny bazy danych.

04

Jak skonfigurować kopię aplikacji?

Jako wiersz w tabeli _jobs, analogicznie do pozostałych zadań SSJob - z polami określającymi cykliczność, folder docelowy, adresy powiadomień i połączenie do bazy przechowującej samą konfigurację zadania.

05

Dlaczego potrzebna jest osobna kopia aplikacji, skoro dane są w bazie?

Część istotnych informacji nie jest zapisana w bazie danych, tylko na dysku serwera aplikacyjnego - konfiguracja środowiska, ewentualne modyfikacje kodu wykonane na potrzeby klienta oraz wygenerowane wcześniej pliki PDF, XLS i załączniki.

06

Czy kopię aplikacji trzeba wykonywać równie często jak kopię bazy?

Niekoniecznie. Pliki aplikacji zmieniają się rzadziej niż dane w bazie, więc kopię aplikacji często konfiguruje się z dłuższym interwałem, np. raz dziennie, podczas gdy baza danych bywa kopiowana częściej.

Warto przeczytać

Powiązane materiały o zadaniach automatycznych

Kolejne kroki, jeśli konfigurujesz pełny plan kopii zapasowych.

Baza danych

I. Kopia bazy MSSQL

Analogiczne zadanie SSJob dla bazy danych, z trzema rodzajami kopii - pełną, przyrostową i plikiem LOG.

Czytaj dalej
Wydajność

III. Odbudowa indeksów

Kolejne zadanie z tej samej rodziny, dbające o wydajność zapytań poprzez okresową odbudowę indeksów bazy.

Czytaj dalej
SSJob

SSJob - automatyczne zadania

Pełny mechanizm usługi SSJob i tabeli _jobs, z przykładami innych typów zadań realizowanych tą samą usługą.

Czytaj dalej
Instalacja

Instalacja usługi SSJob w Windows

Jak zainstalować usługę SSJob jako usługę systemu Windows, zanim skonfiguruje się pierwsze zadanie kopii.

Czytaj dalej
Dane

Baza danych i widoki SQL

Warstwa danych platformy, którą uzupełnia kopia aplikacji opisana w tym materiale.

Czytaj dalej

Chcesz zobaczyć platformę w działaniu?

Uruchom demo modułów StudioSystem i sprawdź platformę na żywo.