Recientemente, mi mujer y yo hemos estado viendo reposiciones de algunos programas de televisión en los que aparecía Jeremy Clarkson (Top Gear, The Grand Tour, Clarkson's Farm). A pesar de sus bufonadas, es un tipo bastante inteligente, aunque probablemente será recordado por pensar que "Velocidad y potencia" es la respuesta a todo.
Couchbase ofrece velocidad y potencia en abundancia a través de su arquitectura. La mayoría de las bases de datos relacionales son monolíticas en su diseño, lo que significa que sólo se pueden escalar verticalmente, no horizontalmente. A diferencia de la mayoría de las bases de datos NoSQL, cada servicio que compone la plataforma de datos de Couchbase se puede poner en diferentes nodos, lo que significa que cada servicio se puede escalar horizontal y verticalmente también. Esto te permite poner la potencia exactamente donde se necesita y alcanzar más velocidad.
A pesar del valor de entretenimiento de Clarkson, la velocidad y la potencia no siempre son la respuesta, especialmente si el problema está en el nivel de diseño. La potencia a través del hardware puede ayudar a ocultar el problema, pero no desaparece y es un derroche. La velocidad, sin embargo, suele ser esencial en estos tiempos en los que la lentitud se ha dado en llamar "el nuevo down".
En una colaboración reciente, descubrimos que algunos desarrolladores utilizaban un patrón que podía mejorarse en sus Google Functions con un simple consejo. En esta entrada de blog, compartiremos cómo afinamos el motor (código de funcionamiento) y catapultó el rendimiento en la última recta, sobrepasó la línea de meta y pasó a la siguiente vuelta.
Siguiendo con el tema de la televisión, imaginemos que quieres ver tu serie favorita en un servicio de streaming. El proceso sería más o menos así:
-
-
- Encender TV/Dispositivo
- Aplicación abierta
- Iniciar sesión en el servicio
- Elegir programa
- Programa Watch
- Elegir programa
- Programa Watch
- Etc. etc. etc.
-
¿Cómo de molesto sería que el proveedor de servicios te obligara a iniciar sesión cada vez que quisieras ver otro programa? Probablemente lo suficiente como para cambiar de servicio, ¿no?
Ahora digamos que esta es una llamada a tu base de datos desde una función en la nube.
Encender el televisor y abrir la aplicación sería escribir y desplegar sus funciones. Estos pasos sólo los haremos una vez, por lo que los dejaremos a un lado y continuaremos con el resto de la lista.
En la imagen de la izquierda se puede ver una necesidad repetida de iniciar sesión, mientras que en la de la derecha el proceso de inicio de sesión sólo ocurre una vez y esos datos de inicio de sesión se reutilizan durante toda la sesión. Como es de esperar, se tarda menos en procesar una solicitud de información si los datos de acceso ya se han comprobado y no tienen que enviarse cada vez.
Aquí es donde la falta de pruebas a escala se convierte realmente en un problema. Por ejemplo, digamos que la autenticación tardó 1 ms (su kilometraje variará dependiendo del tipo de autenticación, la distancia entre el cliente y la base de datos, y un montón de otras cosas. Ahora bien, 1 ms puede no parecer mucho y si nos fijamos en una sola ocurrencia de una ejecución se podría decir que no fue un problema. ¿Qué pasaría si en lugar de sólo 1 solicitud hubiera miles de solicitudes utilizando esta función? De repente se están desperdiciando miles de milisegundos por segundo. Cuando se le cobra por el tiempo que estas funciones toman que le costará.
Consejos para una vuelta en caliente
Sigue estos prácticos consejos para conseguir una conexión entre tus Google Cloud Functions y Capella que reduzca los tiempos de ida y vuelta y acelere el pulso:
-
- Globalización: Cuando configure su Cloud Function, opte por una conexión de base de datos de alcance global. Esto le da a su función un comienzo perfecto para acceder a su clúster Capella desde cualquier lugar de la red.
- Pasar menos tiempo en boxes: Resista la tentación de crear un nuevo Couchbase Grupo cada vez que se llama a la función. Es como hacer una parada en boxes en cada vuelta, un poco excesivo, ¿no crees? En su lugar, crea el objeto Grupo una vez, luego lo almacena para que su función lo reutilice.
- Afinar el tiempo muerto: Establecer maxIdleTimeMS a 60000 (un minuto para los mortales que solo tenemos segundos en el cronómetro). Esto cierra automáticamente las conexiones después de que hayan estado inactivas durante un minuto, evitando tiempos de espera y manteniendo sus funciones sin servidor ágiles.
- La concurrencia es clave: Al crear su función de Google Cloud:
- Adopte la 2ª Gen: Es como pasar de un Ford Modelo T a un F1: gestiona múltiples peticiones simultáneas y reduce la carga de la conexión al permitir que su función comparta una única conexión. Grupo objeto.
- Aumenta la concurrencia: Aumenta la concurrencia para minimizar los temidos arranques en frío y aumentar la latencia. Piense en la salida en frío como una salida parada en una carrera, en comparación con una salida rodada en la que el participante en la carrera alcanza la velocidad. En una salida en frío/parada, el participante tiene que gastar energía para acelerar y luego completar la actividad.
- Globalización: Cuando configure su Cloud Function, opte por una conexión de base de datos de alcance global. Esto le da a su función un comienzo perfecto para acceder a su clúster Capella desde cualquier lugar de la red.
Ejemplo: Función Python Cloud que se conecta a Capella
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
de couchbase.grupo importar Grupo de couchbase.auth importar PasswordAuthenticator # Sustitúyalo por su cadena de conexión Capella real cadena_de_conexión = couchbases://' auth = PasswordAuthenticator('<YOUR-USERNAME>', '<YOUR-PASSWORD>') grupo = Ninguno # Almacenar el objeto cluster globalmente def tu_nombre_de_funcion(solicitar): global grupo si grupo es Ninguno: grupo = Grupo(cadena_de_conexión, autentificador=auth) # Ahora puedes utilizar el objeto 'cluster' para interactuar con Capella cubo = grupo.cubo(muestra-viaje) # ... sus operaciones Capella aquí |
¡Ahí lo tienes! Un ejemplo con sabor a Python para optimizar tus Google Cloud Functions con Couchbase Capella.
Vamos, inténtalo, ¿tan difícil puede ser?
