Wraz z rozwojem IT coraz więcej danych jest wymienianych pomiędzy aplikacjami, a dodatkowo coraz większa część tych danych jest przesyłana bez udziału użytkowników. Urządzenia komunikują się między sobą wtedy, kiedy same zdiagnozują taką potrzebę – nie czekając na interakcję z użytkownikiem. Taki sposób korzystania z infrastruktury komputerowej rzuca nowe wyzwania twórcom oprogramowania. Po pierwsze, ilość danych w skali świata jest coraz większa, a po drugie – koszt związany z ich przetwarzaniem powinien być jak najmniejszy.