A healthy diet for your Java application Devoxx France.pdf
CHARIOT
1. chariot
A scalable processing architecture for Internet of Things
Abhilash Kumar and Saurav Kumar
April 19, 2016
Indian Institute of Technology Kanpur
5. introduction
Internet of Things
∙ Network of physical objects—devices, vehicles, buildings etc
∙ Embedded with electronics, software, sensors, and network
connectivity
Credits: Wikipedia
3
6. introduction
Internet of Things
∙ Network of physical objects—devices, vehicles, buildings etc
∙ Embedded with electronics, software, sensors, and network
connectivity
∙ Objects can be sensed and controlled remotely across existing
network infrastructure
Credits: Wikipedia
3
7. introduction
Internet of Things
∙ Network of physical objects—devices, vehicles, buildings etc
∙ Embedded with electronics, software, sensors, and network
connectivity
∙ Objects can be sensed and controlled remotely across existing
network infrastructure
∙ IoT augmented with sensors and actuators: Smart grids, smart
homes, intelligent transportation and smart cities
Credits: Wikipedia
3
11. chariot
The Idea
∙ Use the computational resources of powerful machines
∙ Small IoT devices need not have powerful processors or RAMs
6
12. 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
6
13. 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
6
14. 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
6
15. 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
20. 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)
9
21. 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)
9
22. 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)
9
23. 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
42. demonstration
Demonstration
∙ Project page and Codebase
∙ Screencast of deployment, running simple Java client, fault
tolerance testing
∙ Image Blur Android App demo
∙ Live demo of using chariot framework from Python shell as a
client
18
45. quality attributes
Quality Attributes
✓ Availability: Two Prashti (and Zookeeper) to make system
available
✓ Maintainability: Modular code with Java best practices.
20
46. 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 among
Ashvas
20
47. 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 among
Ashvas
× Security: Unencrypted data flow and common shared directory
for docker communication
20
48. 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 among
Ashvas
× Security: Unencrypted data flow and common shared directory
for docker communication
✓ Scalability: Devices and Ashvas can be added dynamically at
runtime
20
49. 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 among
Ashvas
× Security: Unencrypted data flow and common shared directory
for docker communication
✓ Scalability: Devices and Ashvas can be added dynamically at
runtime
✓ Usability: Simple interface for developers to integrate
applications and devices.
20
51. 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 remote
procedure calls for small computations.
21
52. 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 remote
procedure calls for small computations.
✓ Reliability: Automated recovery begins on faults. Uses active
redundancy to restore states.
21
53. 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 remote
procedure calls for small computations.
✓ Reliability: Automated recovery begins on faults. Uses active
redundancy to restore states.
✓ Flexibility: By design, keeping in mind the use case.
21
54. 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 remote
procedure calls for small computations.
✓ Reliability: Automated recovery begins on faults. Uses active
redundancy to restore states.
✓ Flexibility: By design, keeping in mind the use case.
✓ Reusability: Modular code with Java best practices. Avro schema
reusable for different languages
21
56. use cases
Possible use cases
∙ Internet of Things: By 2020, home networks will have many IoT
devices - sensors, smart TVs, washing machines, AI powered
mini-bots etc
23
57. use cases
Possible use cases
∙ Internet of Things: By 2020, home networks will have many IoT
devices - sensors, smart TVs, washing machines, AI powered
mini-bots etc
∙ As private cloud offering PaaS in institutions and organizations.
CSE students can put their docker images on Docker Hub and
simply run code from personal devices which will be executed in
CSE Lab Machines
23
58. use cases
Possible use cases
∙ Internet of Things: By 2020, home networks will have many IoT
devices - sensors, smart TVs, washing machines, AI powered
mini-bots etc
∙ As private cloud offering PaaS in institutions and organizations.
CSE students can put their docker images on Docker Hub and
simply run code from personal devices which will be executed in
CSE Lab Machines
23