The Internet of Things (IoT) refers to the network of objects, devices, machines, vehicles, buildings, and other physical systems with embedded sensing, computing, and communication capabilities, that sense and share and act on real-Time information about the physical world. These objects, through standard communication protocols and unique addressing schemes provide services to the final users or systems. With the rise of low cost, low power single board computers, it is possible to perform certain business logic at the edge of the network utilizing such computers. This way the IoT application is distributed across many devices, some running at or near the edge of the network, at different locations and some running in the public or private cloud. This brings in new research and development challenges in the lifecycle of IoT applications, including modeling, deployment and support of non-functional requirements such as security, privacy, performance, provenance etc. In this paper we outline the challenges related to modeling and deployment of IoT applications and potential research directions in resolving these challenges.