Nasz zespół był ostatnio bardzo zainteresowany ciągłymi wdrożeniami, ale natrafiliśmy na małą przeszkodę, jeśli chodzi o faktyczne wdrożenie kodu na Heroku - wydaje się nieuniknione, że musi upłynąć trochę czasu zepchnąć kod do Heroku.Czy Heroku można skonfigurować tak, aby działał bez problemu?
W tradycyjnym środowisku, wdrażania kod będzie prawdopodobnie wyglądać następująco:
- Naciśnij kod aż do katalogu pomostowym gdzieś (stary kod jest nadal żyje)
- Run migracje w bazie danych (więcej często, bezpieczniejsze jest wcześniejsze uruchomienie migracji, a kilka, które złamią kod, może być strzeżonych).
- Weź połowę (lub pewien procent serwerów) z systemu równoważenia obciążenia.
- Wdróż kod na tych serwerach.
- Jeśli to możliwe, należy uruchomić jakąś zautomatyzowanego testu dymu/wykonywać serwerach więc są „gorące”
- Przełącznik które serwery są i poza równoważenia obciążenia
- spłukać i powtórzyć.
Z Heroku, mam bardzo małą kontrolę nad dwoma krytycznych etapów:
- Nie mogę przeprowadzić migrację bazy danych pierwszy. Jednym ze sposobów, które rozważyłem, aby obejść ten problem, to utrzymać migracje baz danych oddzielnie i skierować je najpierw do heroku - co, choć bolesne, rozwiąże problem - ale tylko zaostrzy ...
- Czas rozpędzania dyna może zająć dość długo - oczywiście, jest to bardziej wina Railsów niż Heroku, ale kluczowym problemem jest to, że nie mogę zrobić czegoś podobnego do powyższego shuffle load balancer, aby upewnić się, że moja aplikacja jest gotowa i załadowana przed nowo wdrożonym serwerem jest ponownie umieszczany w systemie równoważenia obciążenia. Zamiast tego, nie mam innego wyboru niż dać użytkownikom 10-15 sekundowy ekran ładowania i mieć nadzieję na najlepsze rozwiązanie (i robić to DWUDNIE, jeśli używam strategii wdrażania bazy danych z góry).
Korzystamy z konserwacji na ekranie, ale nie będzie to skalowalne rozwiązanie, jeśli przejdziemy do pełnego, ciągłego wdrażania (prawdopodobnie będziemy mieć około 10-20 wdrożeń dziennie, a 10-20 * 30 sekund ekranu konserwacji zacznie się sumować)
Czy ktoś napotkał podobne problemy? Jak się do nich zwracałeś? Jakieś wspaniałe studia przypadków/historie sukcesu dla ciągłego wdrażania na heroku?
To wygląda na idealne dopasowanie dla nas! Dzięki, że dałeś mi znać! –
Używam tej funkcji w produkcji na www.versioneye.com i działa idealnie. Jest kilka opinii do zauważenia. To nie jest rozwiązanie do dużych migracji baz danych. Ale do rozwijania funkcji z mniejszą zmianą db jest idealny. Kocham to. –