En aquest article, intentaré explicar com gestionem l’alta concurrència a Teradisk. En primer lloc, intentarem aclarir què significa “concurrència” i per què és tan important com a mètrica. Normalment, ens trobem que els clients no entenen molt bé aquest terme i la seva implicació en els seus negocis.
Què significa la concurrència en el comerç electrònic i per què és tan important per a les empreses?
La forma més senzilla d’explicar la concurrència és: *Quants usuaris hauria de suportar la teva infraestructura accedint al mateix temps? Quin seria el número màxim?* La resposta a aquesta pregunta tindrà un gran impacte en el disseny de la teva infraestructura.
Per exemple, y tenint en compte les [magento official recommendations] sobre el dimensionament computacional, seria molt diferent en termes de recursos el disseny d’una plataforma per a 10 usuaris concurrents enfront de 500 usuaris sol·licitant al mateix temps.
Estratègies de gestió de lloc d’alta concurrència
L’estratègia clau per fer front a l’alta concurrència és la **distribució**:
Dissenya la teva infraestructura i la teva aplicació amb capacitat per a ser desplegada i servida entre servidors. Amb aquest enfocament, resoldrás 2 problemes principals: Podràs escalar horitzontalment u estaràs un pas per davant d’eliminar el punt únic de fallada (SPF) utilitzand la redundància.
Utilitza serveis compartits (EFS, NFS, SoftNas) per als recursos compartits com el contenidor estàtic, però tingues en compte que cal evitar els axius als quals s’accedeix molt (com el codi). Això implicarà que, d’alguna manera, hauràs d’implementar un sistema de desplegament capaç de desplegar, simultàniament a tots els servidors web.
Una estratègia important (però a vegades subestimada) és la planificació de campanyes. Planificar l’enviament de correus electrònics en franges horàries o lots pot stalviar a la teva empresa molts diners en termes de reducció de recursos informàtics.
Però a vegades, la planificació no és suficient i els clients necessiten una resposta dinàmica dels recursos. En aquest cas, el disseny de la infraestructura pot aprofitar l’ús de l’autoescalat. Les funcions d’autoescalat dels núvols públics són estupendes, però hi ha alguns requisits que cal tenir en compte:
El codi i la infraestructura s’han de dissenyar per ser assignats automàticament a un nou servidor en cas de scale out (cada deploy, un artefacte amb codi s’ha d’emmagatzemar d’alguna manera i empenyer al nou servidor). Una altra opció és la creació de “imatges daurades” per a cada desplegament.
- L’autoescalat no és instantani. Les mètriques que disparen el procés d’escalat s’han de prendre amb cura. Per exemple, com hem vist en punts antriors, existeix una forta correlació entre els nuclis de CPU i els usuaris (o processos php). Però escalar quan les instàncies desplegades aconsegueixen la seva càrrega màxima seria perillós. S’han d’analitzar els marges mètrics per tenir temps de girar noves instàncies i evitar caigudes. A més, s’hauria d’implementar un control de histèresi per a evitar bucles infinits d’alta i baixa d’instàncies.