Ena entrada anteriora sus MeteoTrail me centrè en eth perqué: es directors de corsa non an besonh d'ua previsión regionau, an besonh de saber qué va passar ath quilomètre 43, a 2.400 mètres, d'aciu a quate ores, pr'amor qu'aquiu ei a on seràn es sòns corredors. Aguesta entrada parla deth com — eth problèma d'engenharia reau qu'i a darrèr de convertir çò que passe en aguest punt exacte dera montanha en quauquarren en qué un director de corsa posque hidar-se pro entà agir. Ua part de çò que ve a contunhacion son decisions que prenguérem a prepaus; d'autes parts s'apròchen mès a "aguesta ei era mena d'arquitectura que besonhe un sistèma coma aguest", rasonades a partir des restriccions, mès non pas un compde linha per linha de cada detalh intèrn.
1. Fòrça hònts, un solet checkpoint
Un checkpoint en ua ultra de montanha non ei ua posicion fixa e establa coma ac ei ua ciutat. Ei un punt dera rota qu'era corsa definís damb mesi d'antelacion, que a viatges cad exactament sus ua frontèra nacionau —es corsas per Val d'Aran passen entà França, e a viatges entà Andòrra, ena madeisha etapa— e qu'a de resòlver-se, en temps reau, contra era hònt meteorologica oficiau que de vertat cobrís aqueth tròç de terrenh.
Entà cada checkpoint mos cau desnishar, abans dera corsa, en quina zòna d'avís de quina agéncia cad, quines webcams publiques dera rota son pro apròp e ben orientades entà on cau, se i a ua estacion meteorologica privada o semioficiau apròp damb mielhor resolucion qu'era oficiau mès pròcha, e d'a on cau mostrejar es dades de deteccion de pericles entad aqueth radi exacte. Aquerò son quate o cinc sistèmes amont diferents, cadun damb era sua pròpria forma d'API, eth sòn pròpri interval d'actualizacion, e era sua pròpria mena de falha.
- APIs oficiaus d'agéncias meteorologicas (condicions actuaus, previsions a 48 ores e a 7 dies, avisi) — p. ex. AEMET, Météo-France, IPMA, Aeronautica Militare
- Fluxes de webcams publiques ath long dera rota
- Deteccion de pericles en temps reau
- Estacions meteorologicas privades o semioficiaus apròp deth checkpoint
Un checkpoint, dit d'ua auta manèra, non ei era dada bruta madeisha — ei era vista reconciliada que bastim a l'entorn d'un punt geolocalizat, provienta dera combinacion de fluxes que de vertat siguen disponibles e de hidança en aqueth moment. Era previsión a 48 ores que ve un director de corsa entà un checkpoint donat ja ei eth resultat de causir, per tipe de dada, era hònt en qué actuaument mos hidam mès entad aquera posicion concrèta — non un solet flux reviat shens tocar.
2. Decidir qué ei pro important entà avisar
Amassar dades non ei mès qu'era mieitat deth problèma. Era mieitat mès dura ei decidir quan un cambi vau era pena entà desvelhar quauquarrés. Un director de corsa non vò pas un corrèu cada còp qu'era lectura de vent càmbie mieja quilomètres per ora, mès vò a on que sigue un dehens quauqui minutes s'ua alèrta oficiau de tempèsta se publique entà un checkpoint qu'es sòns corredors artenheràn en tres ores.
Era forma aproximada dera solucion ei un motor de règles per lindars qu'a de córrer sus cada actualizacion significativa per checkpoint, non solet sus un temporizador: passar un lindar de vent o de temperatura, ua alèrta oficiau naua qu'apareish a on non n'i auie cap abans, pericles detectadi laguens d'un radi ath torn deth checkpoint, o ua baishada sobta de temperatura en pòc temps. Quauquarren coma açò, plan simplificat en comparèr damb çò qu'un joc de règles reau besonharie:
def evaluate_checkpoint(checkpoint, previous_state, current_reading):
triggers = []
if crosses_threshold(previous_state.wind_kmh, current_reading.wind_kmh, threshold=60):
triggers.append(Alert("wind", severity="high"))
if current_reading.has_new_agency_alert and not previous_state.has_agency_alert:
triggers.append(Alert("agency_alert", severity=current_reading.alert_level))
if current_reading.lightning_strikes_last_10min(radius_km=15) > 0:
triggers.append(Alert("lightning", severity="critical"))
if current_reading.temperature_drop_c(last_hours=3) > 8:
triggers.append(Alert("temp_drop", severity="medium"))
if not triggers:
return None
return build_notification(checkpoint, triggers, previous_state)
Çò que ei de vertat dificil non ei escríuer règles coma aguestes, senon ajustar era severitat e eth radi entà qu'eth sistèma escale era tempèsta que baishe entath quilomètre 40 shens tanben mandar un corrèu a cada organizador cada còp qu'ua webcam falhe o qu'ua estacion balhe ua lectura sorollosa. Aqueth ajustament a de compdar damb eth hèt qu'ua soleta corsa pòt auer checkpoints en jurisdiccion de tres país ath còp, cadun damb un vocabulari e ua escala de severitat diferents entàs sues alèrtas.
3. Deishar qu'ua persona cambie er automatisme
Arren d'açò remplace eth criteri uman. Eth backoffice de MeteoTrail deish qu'un meteoròleg contractat guarde tot çò qu'eth pipeline automatic ve entà ua corsa e publique un informe manuau que se manda entà tota era organizacion, cambiant çò qu'eth flux automatic mòstre entad aqueth checkpoint.
Eth problèma de disseny interessant ei çò que se passe eth moment dempús que se publique aqueth informe: eth pipeline automatic non s'arrèste. Atau qu'eth sistèma a besonh d'ua règla de precedéncia clara e visibla — un informe uman a de prevaler sus era vista automatica entad aqueth checkpoint tant de temps coma calgue qu'age era darrèra paraula, shens desapareisher en silenci en moment que arribe era pròxima actualizacion automatica, e shens que es dus se mòstren jamès costat a costat coma se pesèssen madeish. Ena practica, açò vò díder qu'un informe a besonh d'un encastre explicit, ua procedéncia clara, e ua règla de caducitat o de remplaçament, entà qu'un informe manuau vielh de sies ores non blòque entà sèmpre ua lectura automatica naua e materiaument diferenta.
4. Çò que encara ei dificil
Quauques causes d'aguest problèma non an encara ua responsa neta. Es hònts non son d'acòrd entre eres mès sovent de çò que voleríem, e causir un ganhador per tipe de dada e per checkpoint contunhe estant en part heuristic. Es checkpoints frontalèrs son era sua pròpria categoria de maudecap — ua etapa que comence devath era zòna d'avís d'ua agéncia e finís devath era d'ua auta a besonh des dues. Era fiabilitat des webcams ei totafèt fòra deth nòste contròl. E un solet meteoròleg qu'a de cobrir mantuni corsas simultanèament un cap de setmana d'estiu carregat a de priorizar, çò qu'ei a díder qu'era capa de remplaçament manuau a d'èster vertadèrament opcionau e qu'era automatizacion a d'èster pro bona entà sostier-se soleta era màger part deth temps.
Arren d'açò ei trabalh exotic de sistèmes distribuïts, e non cau qu'ac sigue. Mès qu'ei un problèma d'integracion reau vestit d'aplicacion deth temps. S'era entrada de març parlaue deth perqué es directors de corsa auien besonh d'açò, aguesta parle de çò que cau, per dejós, entà que "qué temps hè ara madeish en checkpoint 7" sigue ua question damb ua responsa de hidança.
