Continuous Integration & Delivery s Nette aplikáciou

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
romiix.org
Člen | 343
+
0
-

Pracujem na projekte, do ktorého denne pribúda viacero commitov. Aplikácia beží na jednom vlastnom serveri v DigitalOcean na ubuntu server 14.04 s apache2.

Aktuálny stav deploymentu:

  • manuálny update DB
  • spustenie bash skriptu:
    • aktualizácia composer + bower
    • naklonovanie GIT repa
    • inštalácia závislostí
    • rsync používateľských súborov z bežiacej verzie
    • záloha DB
    • duplikácia aktuálnej DB
    • vygenerovanie config.local.neon
    • výmena symlinku
    • redis-cli flushall
  • reštart apache

Cieľom je, aby bolo možné nahraním commitu do centrálneho repozitára spustiť testy, zostaviť aplikáciu a sprístupniť ju bez straty spojení a prihlásení a rozumne zálohovať.
Architektúru plánujem postaviť na dockeri a upraviť do nasledovnej podoby:

1. server

  • load balancer server
  • redis session server
  • CDN (možno je lepšie použiť KeyCDN)

2. server

  • zostavená Nette aplikácia

3. server

  • „MariaDB“

Nejaká služba (asi Codeship):

  • zostaví aplikáciu
  • otestuje
  • zostaví docker kontajner s aplikáciou
  • zduplikuje sa MariaDB server
  • synchronizuje DB servre
  • load balancer prestane posielať požiadavky na starú verziu
  • starý DB server sa stopne, tým aj synchronizácia

Mám vôbec cieľovú architektúru vymyslenú správne?
Ako riešite migrácie DB štruktúry?
Aké služby a programy odporúčate?
Skúsenosti, odporúčania, úskalia, zdroje, … ?

Vďaka

Luděk Veselý
Člen | 29
+
+4
-

Ako riešite migrácie DB štruktúry?

Pro migraci DB pouzivam nextras/migrations – funguji vyborne, zjednodusene to funguje tak, ze do jedne slozky nahravas soubory s SQL kodem, spustenim z konzole se spusti soubory, ktere jeste spusteny nebyly. Dalsi alternativy jsou PHINX (pise se PHP kod, me SQL), Doctrine Migrations a dalsi.

Aké služby a programy odporúčate?

Nastroju pro CI/CD je cela rada, zajimavy mi prijde GitLab CI, ktery je zdarma a je integrovan s GitLabem (take zdarma), nemam s nim zatim ale zadne zkusenosti. Alternativou k Codeship muze by Circle CI. Pouzit samozrejme pujde i proverene nastroje typu Jenkins, TravisCI, Bamboo.

Skúsenosti, odporúčania, úskalia, zdroje, … ?

Napisu spis konkretni poznamky k tomu co navrhujes. Pises nejprve otestovat a pak zbuildit kontejnery. Vyhodou Dockeru je prave to, ze muzes mit aplikaci v totoznym prostredi kdekoli, cili bych doporucil vytvorit kontejnery, ty otestovat a nasledne je pushnout pokud jsou testy ok. Duplikace DB mi prijde zbytecna, pokud zacnete pouzivat migrace, neni duvod aby zaloha DB blokovala deploy. Zalohu bych spis poustel nezavisle na buildu v nejakych intervalech a migrace psat tak, aby aplikace mohla bezet i nad budouci verzi databaze – usetrite si tim dost starosti. Totez s uzivatelskymi soubory – spis bych je drzel ve slozce mimo aplikaci, prijde mi zbytecne je neustale nekam kopirovat.

Ja pro orchestraci a deployment pouzivam Tutum, aktualne dostupny jako Docker Cloud, napsal jsem o tom i clanek. Kazdopadne je to slozitejsi tema. Jak zacit – napr nejdriv automaticky spoustet jen ten deploy skript, spustet ho v kontejneru, pak vytvorit Dockerfile jednotlive image.. Odkazy na zajimave clanky souvisejici s Dockerem posilaji newsletteru.

castamir
Člen | 629
+
0
-

Na CI/CD je ještě jeden zajímavý nástroj a tím je TeamCity. V současné práci se používá už douho a momentálně plánujeme propojení s Octopus Deploy. Bohužel jsou tyto hračky poměrně dost drahé, ale ve srovnání s nimi je takový Gitlab dost punkový projektík :p

romiix.org
Člen | 343
+
0
-

Zatiaľ vďaka, mám čo študovať ;)