C4Container
	title Container diagram for RuCoLA
	

	System_Ext(timing_sensors, "Timing Sensors", "Sensoren bei jedem Checkpoint <br/>senden Zeitnehmungsinformationen <br/>für Läufer")
    Person(visitor, Zuseher, "Zuseher, die Informationen <br/>über die aktuelle <br/>Platzierung haben wollen")
	

    Container_Boundary(c1, "RuCoLA") {
	    Container(time_api, "Timing API", "C#", "Nimmt Zeitnehmungsinformationen entgegen")
	    
	    Container(result_api, "RaceResult API", "C#", "Ermöglicht Abfrage von (Zwischen-)Ergebnissen")
        Container_Ext(rabbit_mq, "RabbitMQ", "Message Broker", "Nachrichtenzustellung")
        Container(validator, "Validator", "C#", "Überprüft Zeitnehmungsinformationen auf Korrektheit")
	    Container(scheduler, "Scheduler", "C#", "Triggert wiederkehrende Aufgaben")
	    
    }

    	System_Ext(blob_storage, "Blob Storage", "Azure Table Storage")
	 UpdateRelStyle(timing_sensors, time_api, $offsetY="60", $offsetX="90")

	Rel(visitor, result_api, "Fordert Ergebnis an", "HTTPS")
    UpdateRelStyle(visitor, result_api, $offsetY="-30", $offsetX="-25")

	Rel(result_api, table_storage, "Fragt Ergebnis ab", "HTTPS")
    UpdateRelStyle(result_api, table_storage, $offsetY="-70", $offsetX="20")

	Rel(time_api, table_storage, "Speichert Zeitnehmungen", "HTTPS")
    UpdateRelStyle(time_api, table_storage, $offsetY="70", $offsetX="-130")

	Rel(scheduler, rabbit_mq, "Beauftrage Validierung", "HTTPS")

	Rel(validator, rabbit_mq, "Erhalte Validierungsaufträge", "HTTPS")
    UpdateRelStyle(validator, rabbit_mq, $offsetY="40", $offsetX="-40")

	Rel(validator, table_storage, "Überprüfe und korrigiere", "HTTPS")