primul pas în călătoria către mutarea aplicațiilor monolitice în Kubernetes
de-a lungul carierei mele de inginerie software una dintre cele mai valoroase întrebări am învățat să întreb un coleg este „ce înseamnă $ceva pentru tine?”. Îl obligă pe celălalt inginer să evalueze implicațiile utilizării unui anumit cuvânt. Urmărind primele aplicații monolitice în mișcare la apelul Kubernetes, am vrut să petrec câteva minute vorbind despre ce este o aplicație monolitică. Sau cel puțin, ce înseamnă pentru mine.
acesta este un spațiu interesant care are nevoie de puțină atenție. În timp ce operarea unui microserviciu apatrid pe Kubernetes este relativ ușoară, operarea unei aplicații mari de stat are încă un drum lung de parcurs. Înțelegerea a ceea ce este o aplicație monolitică va fi primul pas în facilitarea procesului de migrare.
pentru a defini o aplicație monolitică, trebuie să înțelegem mai întâi componentele unei aplicații de care ne pasă. Cele trei componente care ne interesează vor fi interfața cu utilizatorul, stratul de acces la date și magazinul de date.
interfața cu utilizatorul este punctul de intrare al aplicației și este, de asemenea, punctul programului cu care un utilizator va interacționa. Aceasta ar putea fi o funcție principală (), un site web, un serviciu web sau diverse alte puncte de intrare.
stratul de acces la date este stratul programului care va înfășura un magazin de date. De obicei, stratul de acces la date se va ocupa de probleme precum autentificarea cu un magazin de date și igienizarea datelor înainte de a persista în magazinul de date.
stocarea datelor este cea mai fundamentală parte a sistemului și este responsabilă pentru stocarea informațiilor (datelor) arbitrare și recuperarea acestora. Această componentă este de obicei doar o bază de date.
aceste trei componente alcătuiesc un tip foarte comun de aplicație numită aplicație stateful. Ceea ce înseamnă că aplicația stochează și manipulează datele în timp. Prin urmare, spunem că cererea are stat. Mai important, că starea cererii se poate schimba în timp.
în cazul unei aplicații monolitice, observăm în mod obișnuit mai multe straturi ale aplicației strâns cuplate. În exemplul de mai jos putem vedea că interfața cu utilizatorul și stratul de acces la date sunt grupate împreună. Acest lucru se face de obicei printr-un depozit mare de coduri și ambele straturi vor depinde probabil de celălalt pentru a fi în loc pentru a rula. În plus, interfața cu utilizatorul și straturile de acces la date sunt de obicei incluse în același proces în timpul rulării. Adică comunică pe același sistem, folosind resurse de sistem (memorie și cicluri de calcul) pentru a interacționa cu alte părți ale sistemului.
dimpotrivă, o aplicație bazată pe microservicii ar fi compusă din mici componente modulare care pot fi ușor deconectate. Acesta oferă un concept de compozabilitate pentru un operator și este un semn că lucrați cu microservicii în locul unei aplicații monolitice. Exemplul de mai jos demonstrează o aplicație flexibilă și modulară. Rețineți că în acest model putem rula componentele mai mici independent și putem folosi o rețea pentru a ne conecta sistemul împreună. Această abordare este mult mai scalabilă.
Deci, ce este o aplicație monolitică? Este o aplicație software cu un singur nivel în care interfața cu utilizatorul și Codul de acces la date sunt combinate într-un singur program pe o singură platformă. Este, de asemenea, o aplicație care rulează mai multe componente în același proces, pe același sistem.
Mergând mai departe, căutăm să înțelegem nuanțele migrării aplicațiilor monolitice către Kubernetes și sperăm că acesta este un prim pas valoros în călătoria noastră. Deoarece procesul este relativ nedocumentat, intenționăm să împărtășim lecțiile învățate, astfel încât toată lumea să poată beneficia.