Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: aktualizacja serwisu i bazy

Jakie macie metody aktualizacji serwisów? Szczególnie chodzi mi o bazę, bo część skryptowa zależy od uprawnień zostawionych przez klienta. Np, gdy kolejne modyfikacje wymagają dodania kolumny do tabeli. Albo jakiejś funkcji. Chodzi mi również o problem zarządzania aktualizacjami - czy przed dodaniem tej kolumny skrypt sprawdza, czy ona nie została dodana przez przypadek wcześniej.

Przez chwilę kombinowałem, aby gdzieś w tabeli ustawień przechowywać numer wersji schematu bazy, ale to wygląda na niebezpieczne, szybko może się rozjechać.

konto usunięte

Temat: aktualizacja serwisu i bazy

Też kiedyś myślałem o tym temacie, aczkolwiek nic w tym kierunku nie nakodowałem.

To jest jednak ciekawy tool - http://www.phpmysqlsync.com/ klasa kosztuje 30 euro i myślę, że można by ją fajnie podpiąć do własnego systemu upgrade'ów.
Mogłoby to hipotetycznie działać w ten sposób, że zasysasz od serwera klienta strukturę bazy, u siebie robisz upgrade, no i sync.
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: aktualizacja serwisu i bazy

ja mam poki co to rozwiazane tak ze siedzi w bazie tabela version w ktorej jest liczbowa wersja bazy, skrypt sprawdza tuz po stworzenia polaczenia czy wersja schematu bazy zgadza sie z tym co ma zdefiniowane w kodzie, jezeli nie to wyswietla numery kolejnych patchow sql ktore maja przywrocic baze do nowej wersji, cos na zasadzie:

00123.sql
00124.sql
00125.sql

itd, proste ale poki co dziala
Maciej W.

Maciej W. Ruby on what?!

Temat: aktualizacja serwisu i bazy

Railsy trzymaja numery w bazie i jakos nie slyszalem zeby ktos mial z tym problemy, wiec widac da sie to zrobic tak zeby bylo dobrze :) Oczywiscie zakladajac ze nikt nie gmera w strukturze bazy recznie.
Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: aktualizacja serwisu i bazy

Maciej W.:
Railsy trzymaja numery w bazie i jakos nie slyszalem zeby ktos mial z tym problemy, wiec widac da sie to zrobic tak zeby bylo dobrze :)

A czy railsy oferują wsparcie dla developera w zarządzaniu tym? Czyli jak pracujesz lokalnie i potrzebujesz wgrać zmiany na serwer, to m.in. możesz w jakiś automagiczny sposób wygenerować skrypt modyfikujący bazę czy samodzielnie? Czy jest to numer kolejny czy ma coś wspólnego z datą?
Marcin Molga

Marcin Molga Senior Solution
Architect, IBM.

Temat: aktualizacja serwisu i bazy

Paweł Koralewski:
Jakie macie metody aktualizacji serwisów? Szczególnie chodzi mi o bazę, bo część skryptowa zależy od uprawnień zostawionych przez klienta. Np, gdy kolejne modyfikacje wymagają dodania kolumny do tabeli. Albo jakiejś funkcji. Chodzi mi również o problem zarządzania aktualizacjami - czy przed dodaniem tej kolumny skrypt sprawdza, czy ona nie została dodana przez przypadek wcześniej.

http://www.liquibase.org/

Zewnętrzne narzędzie albo plugin do Mavena.

Pozdrawiam.
Maciej W.

Maciej W. Ruby on what?!

Temat: aktualizacja serwisu i bazy

Paweł Koralewski:
Maciej W.:
Railsy trzymaja numery w bazie i jakos nie slyszalem zeby ktos mial z tym problemy, wiec widac da sie to zrobic tak zeby bylo dobrze :)

A czy railsy oferują wsparcie dla developera w zarządzaniu tym? Czyli jak pracujesz lokalnie i potrzebujesz wgrać zmiany na serwer, to m.in. możesz w jakiś automagiczny sposób wygenerować skrypt modyfikujący bazę czy samodzielnie? Czy jest to numer kolejny czy ma coś wspólnego z datą?

Masz narzedzie konsolowe do generowania szkieletow migracji (plikow zawierajacych zmiany ktore zostana wykonane) i zarzadzania nimi. Numery migracji maja maja format YYYYMMDDHHMMSS (kiedys byly poprostu kolejne numery, ale zmienili zeby unikac konfilktow kiedy kilku developerow pracuje nad aplikacja). W kazdym pliku masz sekcje "up" ktora wykona sie kiedy aktualizujesz i "down" ktora wykona sie przy downgrade.
http://guides.rubyonrails.org/migrations.html - poczytaj moze Cie natchnie albo nawat nawroci na Railsy ;)

Jesli chodzi o deployment to popularnym rozwianiem jest Capistrano. Troche konfiguracji i jedna komenda wrzuca projekt na zdalny serwer, wykonuje co tam tylko sobie zazyczysz a jak cos pojdzie nie tak to rollbackuje do poprzedniej wersji (bo mozna sobie ustawic zeby trzymal np 3 ostatnie na serwerze). Narzedzie (gem) napisane w Ruby ale nie ma problemu zeby deployowac projekty PHPowe. Musisz miec tylko dostep do SSH na zdalnym serwerze.
https://github.com/capistrano/capistrano/wiki
http://mathew-davies.co.uk/2009/10/28/php-deployment.html
http://blog.centresource.com/2010/06/02/deploying-symf...

No i skoro to grupa PHP to warto wspomniec tez o Phingu ktory jest w koncu PHPowym projektem.
http://buildmeister.com/articles/automating_the_php_de...Maciej Wojdyr edytował(a) ten post dnia 30.05.11 o godzinie 11:49

Następna dyskusja:

Aktualizacja zmodyfikowanyc...




Wyślij zaproszenie do