Rebelión en la granja — investigación y laboratorio de dispositivos

Investigación sobre granjas de dispositivos y automatización completa para
levantar un laboratorio Android sobre un chasis de blades Debian.

Conclusión que ordena el repositorio: el cuello de botella nunca fue el
cómputo sino la identidad. Desde que la atestación de dispositivo pasó de
estadística a criptográfica, un servidor no puede hacerse pasar por un
teléfono — le falta una clave grabada en fábrica que ningún software produce.

Contenido:

- 01_investigacion/ — capa de identidad (verificación telefónica, eSIM,
  reputación de IP, atestación por hardware, correlación entre cuentas),
  mercado y players, stack técnico, marco legal en la UE
- 02_device_lab/ansible/ — Ansible para 16 blades: preflight de solo lectura
  que identifica el hardware por DMI, despliegue de redroid en Docker y
  control de flota por adb. Solo ansible.builtin, sin colecciones externas
- docs/ — requisitos, costes y repaso de seguridad con 11 hallazgos
- 03_charla/ — guion para HackMadrid / Hackmeeting València

Estado: la automatización está escrita pero SIN ejecutar contra hardware.
YAML validado, plantillas renderizadas en ambos modos de red y fleet.sh
comprobado con bash -n. El modelo de blade sigue sin confirmar.
This commit is contained in:
s1to 2026-08-08 19:42:14 +02:00
commit 74bfbe9437
42 changed files with 2989 additions and 0 deletions

119
docs/costes.md Normal file
View file

@ -0,0 +1,119 @@
# Costes
El hardware ya está. El coste real de este proyecto es **la luz**, y no es pequeño.
> **Todas las cifras de consumo son estimaciones.** El M1000e reporta consumo real por chasis y por
> blade desde el CMC — antes de comprometerse con nada, hay que mirar ahí. Es media hora de trabajo
> y sustituye todo este documento por datos.
---
## Supuestos
| | |
|---|---|
| Consumo fijo del chasis | 350 W (ventiladores, CMC, switches, pérdidas de las fuentes) — rango 250500 W |
| Consumo por blade con Android en marcha | 140 W — rango 100200 W |
| Precio de la electricidad | **0,18 €/kWh** — rango 0,150,22 según tarifa y tramo |
| Horas al mes | 730 |
| Reparto | 1 blade coordinador + N de carga × 3 instancias |
---
## Coste mensual por escenario, 24/7
| Escenario | Blades | Potencia | kWh/mes | **€/mes** | Android | **€/Android/mes** |
|---|---|---|---|---|---|---|
| Solo sobremesa, chasis apagado | 0 | 150 W | 110 | **20 €** | 8 | **2,5 €** |
| Piloto en el chasis | 3 | 770 W | 562 | **101 €** | 6 | **16,9 €** |
| Media granja | 8 | 1.470 W | 1.073 | **193 €** | 21 | **9,2 €** |
| Granja completa | 16 | 2.590 W | 1.891 | **340 €** | 45 | **7,6 €** |
| Completa + RAM a 32 GB | 16 | 2.750 W | 2.008 | **361 €** | **210** | **1,7 €** |
Granja completa 24/7: **~4.100 €/año**.
### Tres cosas que dice esta tabla
**El sobremesa gana al chasis por dispositivo — hasta que se amplíe la RAM.** 2,5 €/Android en el
sobremesa contra 7,6 € en el chasis completo. Con 8 GB por blade, encender el M1000e para hacer lo
que ya hace el sobremesa es pagar tres veces más por dispositivo.
**Los pilotos en el chasis son el peor negocio de todos.** Los 350 W fijos se pagan igual con 3
blades que con 16, así que el piloto sale a 16,9 € por Android — casi siete veces el sobremesa. Si
se enciende el chasis, se enciende entero; y para probar, se usa el sobremesa.
**La ampliación de RAM es lo único que cambia la ecuación.** De 7,6 € a 1,7 € por Android, por el
mismo recibo de la luz. No ahorra dinero: multiplica por 4,7 lo que se obtiene por el dinero que ya
se está gastando.
---
## El modo que sí sale a cuenta: encendido bajo demanda
El CMC permite encender y apagar blades individualmente. Un laboratorio de QA no necesita 45
Android a las cuatro de la mañana.
| Uso | Potencia | kWh/mes | €/mes | €/Android/mes |
|---|---|---|---|---|
| 24/7 | 2.590 W | 1.891 | 340 € | 7,6 € |
| **4 h/día** | 2.590 W | 311 | **56 €** | **1,2 €** |
| 8 h/día laborables | 2.590 W | 456 | 82 € | 1,8 € |
**Ventanas de prueba en vez de servicio permanente**: el coste cae seis veces y el proyecto pasa de
inviable a trivial. Es como debería operarse esto salvo que aparezca una razón para lo contrario.
---
## Costes de una vez
| Concepto | Coste | Notas |
|---|---|---|
| **RAM 8 → 32 GB × 16 blades** | **320640 €** | Si son M620 (DDR3 ECC): ~1020 € el módulo de 16 GB de segunda mano, 2 por blade. Si son M630 (DDR4): 8001.300 € |
| SSD por blade, si faltan | ~400 € | 16 × ~25 € |
| PDU con tomas C19 + cableado | 50150 € | Las fuentes del M1000e no usan C13 |
| Subida de potencia contratada | 1050 € | Derecho de cambio, una vez |
| **Total realista** | **~4001.200 €** | Sin contar los SSD si los blades ya tienen disco |
Coste fijo adicional: subir de 3,45 a 6,9 kW contratados añade **~130 €/año** solo en término de
potencia, se use o no.
---
## Comparación con las alternativas
| Opción | Coste | Cuándo tiene sentido |
|---|---|---|
| **Sobremesa, 8 Android** | ~20 €/mes | Desarrollo diario y pruebas de `oasis_mobile`. Silencioso, ya encendido. |
| **Chasis bajo demanda, 45 Android** | ~56 €/mes + 4001.200 € de entrada | Matrices de prueba grandes, escenarios multi-dispositivo |
| **Chasis 24/7, 45 Android** | ~340 €/mes | Solo si algo tiene que estar servido permanentemente |
| **Device farm en la nube** | ~0,09 €/dispositivo-hora | Uso esporádico. 45 dispositivos 24/7 saldrían por ~2.950 €/mes: diez veces el chasis |
| **Teléfonos físicos tipo GenFarmer** | 3961.364 $/dispositivo | Otro producto: son los únicos que pasan atestación de hardware. 45 dispositivos = 17.80061.400 $ |
**El punto de equilibrio con la nube** está en torno al **11 % de utilización**: si cada dispositivo
se usa más de ~84 horas al mes, el chasis 24/7 sale más barato. Por debajo, la nube gana. Y por
debajo del 11 %, lo que gana de verdad es encender el chasis solo cuando haga falta.
---
## El dato incómodo
Un M1000e con 16 blades vale hoy de segunda mano entre **500 y 1.500 €**.
Tenerlo encendido 24/7 durante un año cuesta **~4.100 € de luz**.
**La electricidad de un año cuesta entre tres y ocho veces lo que vale el hierro.** Eso no es un
argumento para tirarlo — es un argumento para no dejarlo encendido por defecto.
---
## Recomendación
1. **Medir antes que estimar.** El CMC da el consumo real del chasis y de cada blade. Es lo primero.
2. **Empezar en el sobremesa.** El piloto de un nodo valida el pipeline entero por 20 €/mes y sin
ruido. Ver [ansible/README.md](../02_device_lab/ansible/README.md).
3. **Encender el chasis solo con un caso concreto que el sobremesa no cubra** — matriz de versiones
de Android, o el escenario multi-dispositivo de los dos APKs a escala real.
4. **Si se enciende, encenderlo entero y por ventanas.** Los 350 W fijos hacen que los pilotos
parciales sean el peor negocio.
5. **La RAM antes que nada más.** 400 € que multiplican por 4,7 la capacidad sin tocar el recibo.
Pero primero hay que saber qué blades son — lo dice `playbooks/preflight.yml`.