CHARIOT

60
chariot A scalable processing architecture for Internet of Things Abhilash Kumar and Saurav Kumar April 19, 2016 Indian Institute of Technology Kanpur

Transcript of CHARIOT

chariotA scalable processing architecture for Internet of Things

Abhilash Kumar and Saurav KumarApril 19, 2016

Indian Institute of Technology Kanpur

introduction

introduction

Credits: bhartiyatech.org 2

introduction

Internet of Things∙ Network of physical objects—devices, vehicles, buildings etc

∙ Embedded with electronics, software, sensors, and networkconnectivity

∙ Objects can be sensed and controlled remotely across existingnetwork infrastructure

∙ IoT augmented with sensors and actuators: Smart grids, smarthomes, intelligent transportation and smart cities

Credits: Wikipedia

3

introduction

Internet of Things∙ Network of physical objects—devices, vehicles, buildings etc

∙ Embedded with electronics, software, sensors, and networkconnectivity

∙ Objects can be sensed and controlled remotely across existingnetwork infrastructure

∙ IoT augmented with sensors and actuators: Smart grids, smarthomes, intelligent transportation and smart cities

Credits: Wikipedia

3

introduction

Internet of Things∙ Network of physical objects—devices, vehicles, buildings etc

∙ Embedded with electronics, software, sensors, and networkconnectivity

∙ Objects can be sensed and controlled remotely across existingnetwork infrastructure

∙ IoT augmented with sensors and actuators: Smart grids, smarthomes, intelligent transportation and smart cities

Credits: Wikipedia

3

introduction

Internet of Things∙ Network of physical objects—devices, vehicles, buildings etc

∙ Embedded with electronics, software, sensors, and networkconnectivity

∙ Objects can be sensed and controlled remotely across existingnetwork infrastructure

∙ IoT augmented with sensors and actuators: Smart grids, smarthomes, intelligent transportation and smart cities

Credits: Wikipedia

3

introduction

Credits: Clarice Technologies (2014)

4

chariot

chariot

The Idea∙ Use the computational resources of powerful machines

∙ Small IoT devices need not have powerful processors or RAMs

∙ Saves resources, and thus money

∙ Saves battery power on devices

∙ We present: A scalable architecture to solve this problem

∙ Inspired from Pub-Sub architecture and RPC protocol

6

chariot

The Idea∙ Use the computational resources of powerful machines

∙ Small IoT devices need not have powerful processors or RAMs

∙ Saves resources, and thus money

∙ Saves battery power on devices

∙ We present: A scalable architecture to solve this problem

∙ Inspired from Pub-Sub architecture and RPC protocol

6

chariot

The Idea∙ Use the computational resources of powerful machines

∙ Small IoT devices need not have powerful processors or RAMs

∙ Saves resources, and thus money

∙ Saves battery power on devices

∙ We present: A scalable architecture to solve this problem

∙ Inspired from Pub-Sub architecture and RPC protocol

6

chariot

The Idea∙ Use the computational resources of powerful machines

∙ Small IoT devices need not have powerful processors or RAMs

∙ Saves resources, and thus money

∙ Saves battery power on devices

∙ We present: A scalable architecture to solve this problem

∙ Inspired from Pub-Sub architecture and RPC protocol

6

chariot

The Idea∙ Use the computational resources of powerful machines

∙ Small IoT devices need not have powerful processors or RAMs

∙ Saves resources, and thus money

∙ Saves battery power on devices

∙ We present: A scalable architecture to solve this problem

∙ Inspired from Pub-Sub architecture and RPC protocol

6

chariot

The Idea∙ Use the computational resources of powerful machines

∙ Small IoT devices need not have powerful processors or RAMs

∙ Saves resources, and thus money

∙ Saves battery power on devices

∙ We present: A scalable architecture to solve this problem

∙ Inspired from Pub-Sub architecture and RPC protocol

6

chariot

Nomenclature

Credits: sinetif.com7

chariot

Nomenclature

Credits: sinetif.com8

chariot

Nomenclature∙ Also, CHAR is anagram for ARCH: Architecture for IOT

∙ Named our components based on horse-wagon analogy

∙ IoT device - Yaan (Sanskrit for wagon)

∙ Processing Machine - Ashva (Sanskrit for horse)

∙ Supervising Machine - Prashti (Sanskrit for horse leader)

∙ Zookeeper - Turagraksa (Sanskrit for patron of horse)

9

chariot

Nomenclature∙ Also, CHAR is anagram for ARCH: Architecture for IOT

∙ Named our components based on horse-wagon analogy

∙ IoT device - Yaan (Sanskrit for wagon)

∙ Processing Machine - Ashva (Sanskrit for horse)

∙ Supervising Machine - Prashti (Sanskrit for horse leader)

∙ Zookeeper - Turagraksa (Sanskrit for patron of horse)

9

chariot

Nomenclature∙ Also, CHAR is anagram for ARCH: Architecture for IOT

∙ Named our components based on horse-wagon analogy

∙ IoT device - Yaan (Sanskrit for wagon)

∙ Processing Machine - Ashva (Sanskrit for horse)

∙ Supervising Machine - Prashti (Sanskrit for horse leader)

∙ Zookeeper - Turagraksa (Sanskrit for patron of horse)

9

chariot

Nomenclature∙ Also, CHAR is anagram for ARCH: Architecture for IOT

∙ Named our components based on horse-wagon analogy

∙ IoT device - Yaan (Sanskrit for wagon)

∙ Processing Machine - Ashva (Sanskrit for horse)

∙ Supervising Machine - Prashti (Sanskrit for horse leader)

∙ Zookeeper - Turagraksa (Sanskrit for patron of horse)

9

chariot

Nomenclature∙ Also, CHAR is anagram for ARCH: Architecture for IOT

∙ Named our components based on horse-wagon analogy

∙ IoT device - Yaan (Sanskrit for wagon)

∙ Processing Machine - Ashva (Sanskrit for horse)

∙ Supervising Machine - Prashti (Sanskrit for horse leader)

∙ Zookeeper - Turagraksa (Sanskrit for patron of horse)

9

chariot

Nomenclature∙ Also, CHAR is anagram for ARCH: Architecture for IOT

∙ Named our components based on horse-wagon analogy

∙ IoT device - Yaan (Sanskrit for wagon)

∙ Processing Machine - Ashva (Sanskrit for horse)

∙ Supervising Machine - Prashti (Sanskrit for horse leader)

∙ Zookeeper - Turagraksa (Sanskrit for patron of horse)

9

architecture diagrams

architecture diagrams

Logical View

11

architecture diagrams

Physical View

12

architecture diagrams

Process View

13

implementation

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Technology Stack∙ Source Language: Java 7

∙ Gradle build system

∙ RabbitMQ RPC Server

∙ Apache Avro Data Schema

∙ Spark WebServer for D2

∙ Docker

∙ MongoDB

∙ JUnit Test Framework

15

implementation

Flow diagram

16

demonstration

demonstration

Demonstration∙ Project page and Codebase

∙ Screencast of deployment, running simple Java client, faulttolerance testing

∙ Image Blur Android App demo

∙ Live demo of using chariot framework from Python shell as aclient

18

demonstration

Demonstration∙ Project page and Codebase

∙ Screencast of deployment, running simple Java client, faulttolerance testing

∙ Image Blur Android App demo

∙ Live demo of using chariot framework from Python shell as aclient

18

demonstration

Demonstration∙ Project page and Codebase

∙ Screencast of deployment, running simple Java client, faulttolerance testing

∙ Image Blur Android App demo

∙ Live demo of using chariot framework from Python shell as aclient

18

demonstration

Demonstration∙ Project page and Codebase

∙ Screencast of deployment, running simple Java client, faulttolerance testing

∙ Image Blur Android App demo

∙ Live demo of using chariot framework from Python shell as aclient

18

quality attributes

quality attributes

Quality Attributes✓ Availability: Two Prashti (and Zookeeper) to make system

available

✓ Maintainability: Modular code with Java best practices.

✓ Performance: Low latency by design. Load-balancing amongAshvas

× Security: Unencrypted data flow and common shared directoryfor docker communication

✓ Scalability: Devices and Ashvas can be added dynamically atruntime

✓ Usability: Simple interface for developers to integrateapplications and devices.

20

quality attributes

Quality Attributes✓ Availability: Two Prashti (and Zookeeper) to make system

available

✓ Maintainability: Modular code with Java best practices.

✓ Performance: Low latency by design. Load-balancing amongAshvas

× Security: Unencrypted data flow and common shared directoryfor docker communication

✓ Scalability: Devices and Ashvas can be added dynamically atruntime

✓ Usability: Simple interface for developers to integrateapplications and devices.

20

quality attributes

Quality Attributes✓ Availability: Two Prashti (and Zookeeper) to make system

available

✓ Maintainability: Modular code with Java best practices.

✓ Performance: Low latency by design. Load-balancing amongAshvas

× Security: Unencrypted data flow and common shared directoryfor docker communication

✓ Scalability: Devices and Ashvas can be added dynamically atruntime

✓ Usability: Simple interface for developers to integrateapplications and devices.

20

quality attributes

Quality Attributes✓ Availability: Two Prashti (and Zookeeper) to make system

available

✓ Maintainability: Modular code with Java best practices.

✓ Performance: Low latency by design. Load-balancing amongAshvas

× Security: Unencrypted data flow and common shared directoryfor docker communication

✓ Scalability: Devices and Ashvas can be added dynamically atruntime

✓ Usability: Simple interface for developers to integrateapplications and devices.

20

quality attributes

Quality Attributes✓ Availability: Two Prashti (and Zookeeper) to make system

available

✓ Maintainability: Modular code with Java best practices.

✓ Performance: Low latency by design. Load-balancing amongAshvas

× Security: Unencrypted data flow and common shared directoryfor docker communication

✓ Scalability: Devices and Ashvas can be added dynamically atruntime

✓ Usability: Simple interface for developers to integrateapplications and devices.

20

quality attributes

Quality Attributes✓ Availability: Two Prashti (and Zookeeper) to make system

available

✓ Maintainability: Modular code with Java best practices.

✓ Performance: Low latency by design. Load-balancing amongAshvas

× Security: Unencrypted data flow and common shared directoryfor docker communication

✓ Scalability: Devices and Ashvas can be added dynamically atruntime

✓ Usability: Simple interface for developers to integrateapplications and devices.

20

quality attributes

Quality Attributes✓ Testability: JUnit Tests automatically runs on gradle build.

Integration Tests also provided with source code.

× Efficiency: Local procedure calls will outperform remoteprocedure calls for small computations.

✓ Reliability: Automated recovery begins on faults. Uses activeredundancy to restore states.

✓ Flexibility: By design, keeping in mind the use case.

✓ Reusability: Modular code with Java best practices. Avro schemareusable for different languages

21

quality attributes

Quality Attributes✓ Testability: JUnit Tests automatically runs on gradle build.

Integration Tests also provided with source code.

× Efficiency: Local procedure calls will outperform remoteprocedure calls for small computations.

✓ Reliability: Automated recovery begins on faults. Uses activeredundancy to restore states.

✓ Flexibility: By design, keeping in mind the use case.

✓ Reusability: Modular code with Java best practices. Avro schemareusable for different languages

21

quality attributes

Quality Attributes✓ Testability: JUnit Tests automatically runs on gradle build.

Integration Tests also provided with source code.

× Efficiency: Local procedure calls will outperform remoteprocedure calls for small computations.

✓ Reliability: Automated recovery begins on faults. Uses activeredundancy to restore states.

✓ Flexibility: By design, keeping in mind the use case.

✓ Reusability: Modular code with Java best practices. Avro schemareusable for different languages

21

quality attributes

Quality Attributes✓ Testability: JUnit Tests automatically runs on gradle build.

Integration Tests also provided with source code.

× Efficiency: Local procedure calls will outperform remoteprocedure calls for small computations.

✓ Reliability: Automated recovery begins on faults. Uses activeredundancy to restore states.

✓ Flexibility: By design, keeping in mind the use case.

✓ Reusability: Modular code with Java best practices. Avro schemareusable for different languages

21

quality attributes

Quality Attributes✓ Testability: JUnit Tests automatically runs on gradle build.

Integration Tests also provided with source code.

× Efficiency: Local procedure calls will outperform remoteprocedure calls for small computations.

✓ Reliability: Automated recovery begins on faults. Uses activeredundancy to restore states.

✓ Flexibility: By design, keeping in mind the use case.

✓ Reusability: Modular code with Java best practices. Avro schemareusable for different languages

21

use cases

use cases

Possible use cases∙ Internet of Things: By 2020, home networks will have many IoTdevices - sensors, smart TVs, washing machines, AI poweredmini-bots etc

∙ As private cloud offering PaaS in institutions and organizations.CSE students can put their docker images on Docker Hub andsimply run code from personal devices which will be executed inCSE Lab Machines

23

use cases

Possible use cases∙ Internet of Things: By 2020, home networks will have many IoTdevices - sensors, smart TVs, washing machines, AI poweredmini-bots etc

∙ As private cloud offering PaaS in institutions and organizations.CSE students can put their docker images on Docker Hub andsimply run code from personal devices which will be executed inCSE Lab Machines

23

use cases

Possible use cases∙ Internet of Things: By 2020, home networks will have many IoTdevices - sensors, smart TVs, washing machines, AI poweredmini-bots etc

∙ As private cloud offering PaaS in institutions and organizations.CSE students can put their docker images on Docker Hub andsimply run code from personal devices which will be executed inCSE Lab Machines

23

Questions?

Slides created using Beamer(mtheme) on ShareLaTeX

24

Thank You

25