În prezent, am un proces tradițional de implementare care funcționează după cum urmează:
- Există multe „funcționalități”. Fiecare funcționalitate funcționează într-un mediu diferit, dar există comunicații interfuncționale.
- Există o mașină gazdă „Deployer” care trage depozitele git pe ea și implementează codurile/activele pe diferite mașini ECS
- „Deployer” va implementa diferite funcționalități pe diferite mașini prin intermediul unui script bash automat
- Scriptul bash „Deployer” poate specifica numărul de mașini și ce mașini vor fi implementate pentru fiecare funcționalitate
- Există un fișier de configurare a mediului pentru fiecare funcționalitate, iar codul de funcționalitate de pe mașina reală se va referi la acesta. Scriptul bash „Deployer” implementează același fișier de configurare pe servere cu aceeași funcționalitate (același mediu)
- Pentru fiecare funcționalitate, echilibratorul de încărcare va distribui cereri către mașinile respective din același mediu conform regulilor de echilibrare
- Fiecare mașină rulează același sistem de operare, CentOS7, și există o documentație manuală pentru configurarea utilităților necesare (cum ar fi httpd, PHP, NodeJs, MySQL și fișierele lor de configurare .etc) pentru fiecare mediu. Configurarea trebuie făcută o singură dată și se poate face în câteva ore
Acum hype-ul pentru implementarea containerizată este din ce în ce mai popular, mă gândesc dacă ar trebui să-mi trec procesul la Kubernetes (sau alte alternative).
Pe baza înțelegerii mele, beneficiile cheie ale implementării containerizate și considerentele mele actuale sunt
Abilitatea de a implementa coduri pe cloud-uri între furnizori.
Gândul meu actual: deoarece fiecare nor acceptă CentOS7, documentația de configurare și fișierele de configurare ar trebui să funcționeze pentru fiecare nor, nu? (Sunt în stadiul de dezvoltare și nu am testat de fapt în furnizori reali de cloud, iar acesta ar putea fi motivul neînțelegerii mele, dar teoretic nu văd cum nu funcționează)
Ușor de scalat numărul de mașini
Gândul meu actual: scriptul bash „Deployer” poate specifica numărul de mașini de implementat și activat automat, pentru fiecare funcționalitate.Nu mă pot gândi cum poate fi mai ușor să crești/în jos atunci când sunt folosite containere
Implementare mai rapidă
Gândul meu actual: principala suprasarcină din scriptul meu „Deployer” este copierea fișierelor mari de active prin rețea. Nu văd cum acest lucru poate fi redus dramatic atunci când se folosesc containere.
Dezvoltare locală mai integrată
Gândul meu actual: dezvoltarea locală actuală se face folosind mașini virtuale vagabonde (toate cu CentOS7) mai degrabă decât containere și nu mi se pare foarte incomod.
Pe de altă parte, am învățat că erorile pot fi foarte greu de rezolvat atunci când sunt utilizate containerele și fișierele jurnal pot fi foarte greu de gestionat, ceea ce reprezintă probleme serioase.
Sunt destul de nou în domeniul containerelor și recunosc că sunt unul dintre cei care se uită la hype și se gândesc să treacă de la un proces de dezvoltare/implementare cu care sunt familiarizat. Cu toate acestea, considerentele mele actuale par să sugereze că nu ar trebui să urmăresc hype, poate din cauza lipsei mele de cunoștințe. Este ceva ce am omis, care este cu adevărat benefic dacă trec la utilizarea containerelor?