How would you design a software solution to handle communications and data ingestion for millions of IoT devices sending periodic telemetry?