Sunt foarte nou la arhitectura cloud, dar am o experiență decentă în dezvoltarea de aplicații. În acest moment, sunt în proces de a face o conductă de calcul mare mai accesibilă pentru 5-10 utilizatori prin intermediul unei aplicații web și configurez totul în AWS.
Implementarea mea actuală este o aplicație web ușoară React care utilizează două API-uri și un backend MySQL care permite utilizatorilor să pună în coadă job-urile cu parametri și să acceseze rezultatele finale prin aplicația web sau din e-mailurile trimise utilizatorilor după terminarea unei rulări.
În mijlocul acestei conducte se află o dependență de un software proprietar care are nevoie de o mașină foarte puternică pentru a calcula acești pași (64 GB ram, 16 nuclee, 1 TB HDD) și poate rula până la 1,5 zile doar pentru acest singur pas. Acesta este cel mai mare gât de sticlă al meu din întreaga conductă.
Pentru a economisi costuri cât mai mult posibil, încerc să fac blocajul/piesa de serviciu scalabilă/eficientă din punct de vedere al costurilor, având mai mulți „agenți” de instanță EC2 disponibili pentru a fi activați, rulați pașii, trimite un e-mail, scrie pe web baza de date a aplicației și apoi opriți instanța prin funcțiile AWS lambda care ar fi declanșate de o acțiune din aplicația web.
Plănuiesc să găzduiesc o instanță EC2 pentru aplicația web, 2 API-uri și serverul MySQL, deoarece concurența/scalabilitatea acestei piese este foarte mică. Voi avea, de asemenea, alte 1-3 instanțe pentru serviciile de blocaj pentru a partaja rulări simultane de la cei 5-10 utilizatori, ceea ce ar putea permite până la 3 rulări ale pasului greu să meargă în același timp.
Deoarece serviciile de blocaj necesită fișiere similare pentru a rula programele, iar intrarea în acești pași poate fi uneori cu dimensiuni de fișiere de 150 GB, mă gândesc să folosesc fie stocarea EFS, fie S3 pentru a păstra intrările, astfel încât să-mi fac griji doar cu transferul intrării. fișiere într-un singur loc care ar putea fi partajat între instanțe EC2 și nu ar trebui să mă asigur că au început să facă pasul de transfer. Aceasta este o piesă manuală pe care, de asemenea, nu am găsit o modalitate bună de a fi mai automatizat, deoarece dimensiunile fișierelor sunt atât de mari.
Întrebările mele sunt: configurația mea sună rezonabil și vedeți vreo găuri în ideile mele de implementare? În prezent, folosesc stocarea EBS pentru instanțe de serviciu, dar vreau să minimizez locațiile de intrare pentru transferurile / întreținerea de 150 GB. De asemenea, nu sunt sigur de diferența dintre S3 și EFS, deoarece ambele par a fi montate pe mai multe instanțe, dar pe care ar trebui să îl folosesc? Și are sens să păstrez aplicația web, API-urile și baza de date pe o instanță EC2 dacă am nevoie de cele de serviciu capabile să scrie în baza de date după ce sunt terminate? Acea instanță ar fi activată tot timpul.
Vă mulțumesc pentru ajutor și iartă-mă dacă am spus ceva naiv.