Microsoft Azure

Microsoft Azure is a cloud computing service created by Microsoft that has 30 point of presence locations worldwide. It's goal is to store data and applications in Microsoft-managed data centers and process the data through applications and services. It provides software, platform and infrastructure as a service and supports many different programming languages, tools and frameworks, including both Microsoft-specific and third-party software and systems. So it's possible on microsoft azure to use many services:
 * Virtual machines and preconfigured machine images to use popular software packages
 * App services to manage web sites


 * Websites: Microsoft Azure allows developers and customers to build sites using ASP.NET, PHP, Node.js, or Python and can be deployed using FTP, Git, Mercurial, Team Foundation Server or uploaded through the user portal.
 * WebJobs: applications that can be deployed to a Web App to implement background processing. That can be invoked on a schedule, on demand or can run continuously.

But for the case of IoT, the services that suit most our needs is the data storage and data processing, as well as eventually the communication to users related to these data. The storage services are the following: Then the data management services: The Microsoft Azure Service Bus allows applications running on Azure devices to communicate with each other. This helps to build scalable and reliable applications in a service-oriented architecture. The Azure service bus supports four different types of communication mechanisms.
 * Mobile Engagement that collects real-time analytics that highlight users’ behavior. It can also provide push notifications to mobile devices.
 * Storage Services provides implementation tooling with an interface(SDK API) for storing and accessing data on the cloud.
 * Blob Service allows programs to store unstructured text and binary data as blobs that can be accessed by a HTTP(S) path. Blob service also provides security mechanisms to control access to data.
 * File Service allows storing and access of data on the cloud.
 * Azure Search provides text search and a subset of OData's structured filters using REST or SDK APIs.
 * OData (Open Data Protocol) is an OASIS standard that defines a set of best practices for building and providing interoperability between computer systems on the Internet without having to worry about the various approaches to define request and response headers, status codes, HTTP methods, URL conventions, media types, payload formats, query options, etc.
 * SQL Database, works to create, scale and extend applications into the cloud using Microsoft SQL Server technology.
 * Microsoft Azure Machine learning that enables predictive analytics and interaction with data using natural language and speech through Cortana.
 * Events hub: provide event and telemetry ingress to the cloud at massive scale, with low latency and high reliability. For example an event hub can be used to track data from cell phones such as a GPS location coordinate in real time.
 * Queues: allow one-directional communication. A sender application would send the message to the service bus queue, and a receiver would read from the queue. Though there can be multiple readers for the queue only one would process a single message.
 * Topics: provide one-directional communication using a subscriber pattern. It is similar to a queue, however each subscriber will receive a copy of the message sent to a Topic. The subscriber can filter out messages based on specific criteria defined by the subscriber.
 * Relays: provide bi-directional communication. Unlike queues and topics, a relay doesn't store in-flight messages in its own memory. Instead, it just passes them on to the destination application.