In primul rand, ar fi foarte util sa ne lamuresti cu arhitectura curenta a aplicatiei tale. Din cate deduc, ar fi vorba de un singur server, care ruleaza un web server si o baza de date. Dar cam atata. Ar fi interesant, ce alte tool-uri, limbaje, framework-uri etc. sunt. Este o masina virtuala in AWS, sau separat?
Lucrurile sunt relativ simple cand ai un singur server. Nu e ideal din punct de vedere al redundantei datelor si proceselor, a reabilitatiii sistemului, sau a performantei[1], dar macar e usor de lucrat si monitorizat. Asa ca daca ai cum, incearca sa faci rost de un server mai mare. AWS are niste instante destul de monstroase, de exemplu. Daca nu ai cum, incearca sa mai pui cache-uri pe acelasi server, sau sa mai optimizezi din calculele ce se fac - indexi in baza de date, multithreading etc.
Odata ce treci la un sistem cu mai multe servere, situatia devine complicata. Cum s-a zis in alte comentarii, serverul de baza de date ar trebui sa fie pe un calculator comun. Toate serverele ar trebui sa fie in acelazi AZ momentan. Serverele http si aplicatie trebuie si ele sa fie pe calculatoarele lor separate. In principiu - fiecare proces sau grup de procese foarte legate se pun pe un server / grup de servere replicate.
Load balancerul in sine face doar o impartire a traficului. Tot traficul tau trebuie sa treaca prin el, iar apoi el il imparte spre celelalte server din sistem. Nu are puterea sa asigneze un request de care se ocupa serverul I si sa i-l dea serverului J. In cel mai simplu caz, daca ai 3 servere, trimite primul request la primul server, al doilea la al doilea, al treilea la al treila, al patrulea la primul etc. Asta e strategia round-robin. Load balancerul de pe AWS e mult mai sofisticat decat asta, si ia in considerare nivelul de load al fiecarui server, poate sa excluda servere un-healthy (detectate in urma unor ping-uri de sanatate), poate sa pastreze afinitati pe cookie-uri astfel incat o sesiune sa fie mereu rezolvata de acelasi server etc.[2] Poti sa pui tu de un load-balancer separat totusi, precum HAProxy, mai ales daca nu ai restul infrastructurii pe AWS, si ar trebui sa faca aproximativ aceleasi lucruri.
[1] Un singur server modern este destul de bun sa fie un server HTTP, server de aplicatie, baza de date sau ce-o mai fi in parte. Linux se descurca sa se optimizeze singur ca sa scoti o performanta decenta din el. Daca le pui pe toate la un loc, nu prea mai merge treaba, deoarece patternurile de access la resurse sunt foarte diferite, si dau optimizarea peste cap. Alta distractie.
[2] Sper!