[Python-es] ¿Algún recurso sobre trucos prácticos y ejemplos realistas de testing?

Jesus Cea jcea en jcea.es
Dom Abr 27 05:12:26 CEST 2014


On 26/04/14 14:46, Chema Cortes wrote:
> No sé si usarás un modelo Linda en tu "tablón de anuncios", pero este
> modelo no es precisamente de *"escabilidad infinita"*. Era su punto
> flaco, que al crecer el número de procesos el sincronismo del
> tuple-space ralentizaba bastante y hacía perder disponibilidad.

Conozco el teorema CAP.

En mi caso uso la idea del tablón de anuncios para enviar trabajos a los
"workers". Son trabajos idempotentes. La escalabilidad la obtengo
aumentando el número de "workers" y de tablones, y la redundancia igual.

Lo peor que puede pasar es que un tablón quede inaccesible y sus
trabajos pendientes (o las respuestas) se pierdan. Como el trabajo es
idempotente, el cliente simplemente lo vuelve a postear de nuevo en otro
sitio. Si fue una falsa alarma, tendremos un resultado duplicado, que es
muy esporádico y que no me causa problemas precisamente por el tema de
idempotencia.

Por ejemplo, el correo electrónico puede postar en el tablón un email y
pedir un análisis antivirus o antispam. Esta actividad es claramente
idempotente :-).

O, en otro proyecto, generación de "tiles" para mapas.

Como siempre, todo depende de la aplicación :).

Lo que te dice el teorema CAP, relevante a esta discusión, es que la red
puede particionarse. En mi contexto las particiones no afectan mi
disponibilidad. Pero yo estoy hablando de workers de trabajos
idempotentes, no de almacenamiento.

La consistencia no me afecta, porque los trabajos no requieren
coordinación ni información 100% consistente (el ejemplo del antivirus o
de los mapas).

La disponibilidad se resuelve con la detección de caídas de tablones y
nuevo posteo de la petición. Lo peor que puede pasar es que se reciban
duplicados, triviales de eliminar.

En resumen, la aplicación está cuidadosamente diseñada, y mi problema me
permite gestionar el trabajo así. Mi problema no es el de facebook, es
el de OpenStreetMap y sus tiles :).

En realidad no uso múltiples tablones, sino un tablón distribuido con
ésto por debajo: http://www.spread.org/ . Lo tengo en producción hace lo
menos 10 años, posiblemente más.

-- 
Jesús Cea Avión                         _/_/      _/_/_/        _/_/_/
jcea en jcea.es - http://www.jcea.es/     _/_/    _/_/  _/_/    _/_/  _/_/
Twitter: @jcea                        _/_/    _/_/          _/_/_/_/_/
jabber / xmpp:jcea en jabber.org  _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 538 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-es/attachments/20140427/869e4b8f/attachment.sig>


Más información sobre la lista de distribución Python-es