SlideShare a Scribd company logo
1 of 60
Download to read offline
chariot
A scalable processing architecture for Internet of Things
Abhilash Kumar and Saurav Kumar
April 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
Credits: Wikipedia
3
introduction
Internet of Things
∙ Network of physical objects—devices, vehicles, buildings etc
∙ Embedded with electronics, software, sensors, and network
connectivity
Credits: Wikipedia
3
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
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
introduction
Credits: Clarice Technologies (2014)
4
chariot
chariot
The Idea
∙ Use the computational resources of powerful machines
6
chariot
The Idea
∙ Use the computational resources of powerful machines
∙ Small IoT devices need not have powerful processors or RAMs
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
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
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
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.com
7
chariot
Nomenclature
Credits: sinetif.com
8
chariot
Nomenclature
∙ Also, CHAR is anagram for ARCH: Architecture for IOT
9
chariot
Nomenclature
∙ Also, CHAR is anagram for ARCH: Architecture for IOT
∙ Named our components based on horse-wagon analogy
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)
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)
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)
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
15
implementation
Technology Stack
∙ Source Language: Java 7
∙ Gradle build system
15
implementation
Technology Stack
∙ Source Language: Java 7
∙ Gradle build system
∙ RabbitMQ RPC Server
15
implementation
Technology Stack
∙ Source Language: Java 7
∙ Gradle build system
∙ RabbitMQ RPC Server
∙ Apache Avro Data Schema
15
implementation
Technology Stack
∙ Source Language: Java 7
∙ Gradle build system
∙ RabbitMQ RPC Server
∙ Apache Avro Data Schema
∙ Spark WebServer for D2
15
implementation
Technology Stack
∙ Source Language: Java 7
∙ Gradle build system
∙ RabbitMQ RPC Server
∙ Apache Avro Data Schema
∙ Spark WebServer for D2
∙ Docker
15
implementation
Technology Stack
∙ Source Language: Java 7
∙ Gradle build system
∙ RabbitMQ RPC Server
∙ Apache Avro Data Schema
∙ Spark WebServer for D2
∙ Docker
∙ MongoDB
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
18
demonstration
Demonstration
∙ Project page and Codebase
∙ Screencast of deployment, running simple Java client, fault
tolerance testing
18
demonstration
Demonstration
∙ Project page and Codebase
∙ Screencast of deployment, running simple Java client, fault
tolerance testing
∙ Image Blur Android App demo
18
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
quality attributes
quality attributes
Quality Attributes
✓ Availability: Two Prashti (and Zookeeper) to make system
available
20
quality attributes
Quality Attributes
✓ Availability: Two Prashti (and Zookeeper) to make system
available
✓ Maintainability: Modular code with Java best practices.
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 among
Ashvas
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 among
Ashvas
× Security: Unencrypted data flow and common shared directory
for docker communication
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 among
Ashvas
× Security: Unencrypted data flow and common shared directory
for docker communication
✓ Scalability: Devices and Ashvas can be added dynamically at
runtime
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 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
quality attributes
Quality Attributes
✓ Testability: JUnit Tests automatically runs on gradle build.
Integration Tests also provided with source code.
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 remote
procedure calls for small computations.
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 remote
procedure calls for small computations.
✓ Reliability: Automated recovery begins on faults. Uses active
redundancy to restore states.
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 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
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
use cases
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
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
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
Questions?
Slides created using Beamer(mtheme) on ShareLaTeX
24
Thank You
25

More Related Content

What's hot

CNCF, State of Serverless & Project Nuclio
CNCF, State of Serverless & Project NuclioCNCF, State of Serverless & Project Nuclio
CNCF, State of Serverless & Project NuclioLee Calcote
 
“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...
“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...
“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...Edge AI and Vision Alliance
 
Enabling Artificial Intelligence - Alison B. Lowndes
Enabling Artificial Intelligence - Alison B. LowndesEnabling Artificial Intelligence - Alison B. Lowndes
Enabling Artificial Intelligence - Alison B. LowndesWithTheBest
 
QuAI platform
QuAI platformQuAI platform
QuAI platformTeddy Kuo
 
How to Get Going with Kubernetes
How to Get Going with KubernetesHow to Get Going with Kubernetes
How to Get Going with KubernetesTed Dunning
 
OGCE TeraGrid 2010 Science Gateway Tutorial Intro
OGCE TeraGrid 2010 Science Gateway Tutorial IntroOGCE TeraGrid 2010 Science Gateway Tutorial Intro
OGCE TeraGrid 2010 Science Gateway Tutorial Intromarpierc
 
Reference architecture for Internet of Things
Reference architecture for Internet of ThingsReference architecture for Internet of Things
Reference architecture for Internet of ThingsSujee Maniyam
 
Hire a Machine to Code - Michael Arthur Bucko & Aurélien Nicolas
Hire a Machine to Code - Michael Arthur Bucko & Aurélien NicolasHire a Machine to Code - Michael Arthur Bucko & Aurélien Nicolas
Hire a Machine to Code - Michael Arthur Bucko & Aurélien NicolasWithTheBest
 

What's hot (9)

CNCF, State of Serverless & Project Nuclio
CNCF, State of Serverless & Project NuclioCNCF, State of Serverless & Project Nuclio
CNCF, State of Serverless & Project Nuclio
 
“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...
“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...
“Vitis and Vitis AI: Application Acceleration from Cloud to Edge,” a Presenta...
 
Enabling Artificial Intelligence - Alison B. Lowndes
Enabling Artificial Intelligence - Alison B. LowndesEnabling Artificial Intelligence - Alison B. Lowndes
Enabling Artificial Intelligence - Alison B. Lowndes
 
QuAI platform
QuAI platformQuAI platform
QuAI platform
 
Phi Week 2019
Phi Week 2019Phi Week 2019
Phi Week 2019
 
How to Get Going with Kubernetes
How to Get Going with KubernetesHow to Get Going with Kubernetes
How to Get Going with Kubernetes
 
OGCE TeraGrid 2010 Science Gateway Tutorial Intro
OGCE TeraGrid 2010 Science Gateway Tutorial IntroOGCE TeraGrid 2010 Science Gateway Tutorial Intro
OGCE TeraGrid 2010 Science Gateway Tutorial Intro
 
Reference architecture for Internet of Things
Reference architecture for Internet of ThingsReference architecture for Internet of Things
Reference architecture for Internet of Things
 
Hire a Machine to Code - Michael Arthur Bucko & Aurélien Nicolas
Hire a Machine to Code - Michael Arthur Bucko & Aurélien NicolasHire a Machine to Code - Michael Arthur Bucko & Aurélien Nicolas
Hire a Machine to Code - Michael Arthur Bucko & Aurélien Nicolas
 

Viewers also liked

งานชิ้นที่ 3 ปฏิทิน
งานชิ้นที่ 3 ปฏิทินงานชิ้นที่ 3 ปฏิทิน
งานชิ้นที่ 3 ปฏิทินPimjai Young-oun
 
8 11-11 1è
8 11-11  1è8 11-11  1è
8 11-11 1èmalvar85
 
Brochure - Austria | Germany | Switzerland
Brochure - Austria | Germany | SwitzerlandBrochure - Austria | Germany | Switzerland
Brochure - Austria | Germany | SwitzerlandFrancisAFS
 
Photobook Muzium Istana Negara, Balairung Seri
Photobook Muzium Istana Negara, Balairung SeriPhotobook Muzium Istana Negara, Balairung Seri
Photobook Muzium Istana Negara, Balairung SeriWooley Shirley
 
COASTAL PLANTS OF RHODES BOTANICAL GARDEN
COASTAL PLANTS OF RHODES BOTANICAL GARDENCOASTAL PLANTS OF RHODES BOTANICAL GARDEN
COASTAL PLANTS OF RHODES BOTANICAL GARDENSpyros Geravelis
 
Introduction to Kafka
Introduction to KafkaIntroduction to Kafka
Introduction to KafkaAkash Vacher
 
Dental sleep & skin care
Dental sleep & skin careDental sleep & skin care
Dental sleep & skin careGreg
 
SauravKumar-ContentFiltering-InternDay2015
SauravKumar-ContentFiltering-InternDay2015SauravKumar-ContentFiltering-InternDay2015
SauravKumar-ContentFiltering-InternDay2015Saurav Kumar
 
GfOE 2016_Jannik_Ecosystem service access Ethiopia
GfOE 2016_Jannik_Ecosystem service access EthiopiaGfOE 2016_Jannik_Ecosystem service access Ethiopia
GfOE 2016_Jannik_Ecosystem service access EthiopiaJSchultner
 
Change Data Capture using Kafka
Change Data Capture using KafkaChange Data Capture using Kafka
Change Data Capture using KafkaAkash Vacher
 
Sports Wearable : Business Case TomTom
Sports Wearable : Business Case TomTomSports Wearable : Business Case TomTom
Sports Wearable : Business Case TomTomNathalie LAMRI
 
งานชิ้นที่ 3 ปฏิทินรายเดือน
งานชิ้นที่ 3 ปฏิทินรายเดือนงานชิ้นที่ 3 ปฏิทินรายเดือน
งานชิ้นที่ 3 ปฏิทินรายเดือนMinny Min Min
 
Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...
Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...
Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...JSchultner
 
มัทนะพาธา
มัทนะพาธามัทนะพาธา
มัทนะพาธาJean Arjarasiri
 
Building construction 1 experiencing construction (zone innovation park klang)
Building construction 1 experiencing construction (zone innovation park klang)Building construction 1 experiencing construction (zone innovation park klang)
Building construction 1 experiencing construction (zone innovation park klang)Chow Hong Da
 

Viewers also liked (20)

งานชิ้นที่ 3 ปฏิทิน
งานชิ้นที่ 3 ปฏิทินงานชิ้นที่ 3 ปฏิทิน
งานชิ้นที่ 3 ปฏิทิน
 
θρακη
θρακηθρακη
θρακη
 
8 11-11 1è
8 11-11  1è8 11-11  1è
8 11-11 1è
 
Brochure - Austria | Germany | Switzerland
Brochure - Austria | Germany | SwitzerlandBrochure - Austria | Germany | Switzerland
Brochure - Austria | Germany | Switzerland
 
Photobook Muzium Istana Negara, Balairung Seri
Photobook Muzium Istana Negara, Balairung SeriPhotobook Muzium Istana Negara, Balairung Seri
Photobook Muzium Istana Negara, Balairung Seri
 
ISMAIL - Kominfo
ISMAIL - KominfoISMAIL - Kominfo
ISMAIL - Kominfo
 
COASTAL PLANTS OF RHODES BOTANICAL GARDEN
COASTAL PLANTS OF RHODES BOTANICAL GARDENCOASTAL PLANTS OF RHODES BOTANICAL GARDEN
COASTAL PLANTS OF RHODES BOTANICAL GARDEN
 
แผ่นพับกาพย์ห่อโคลง
แผ่นพับกาพย์ห่อโคลงแผ่นพับกาพย์ห่อโคลง
แผ่นพับกาพย์ห่อโคลง
 
Introduction to Kafka
Introduction to KafkaIntroduction to Kafka
Introduction to Kafka
 
Dental sleep & skin care
Dental sleep & skin careDental sleep & skin care
Dental sleep & skin care
 
SauravKumar-ContentFiltering-InternDay2015
SauravKumar-ContentFiltering-InternDay2015SauravKumar-ContentFiltering-InternDay2015
SauravKumar-ContentFiltering-InternDay2015
 
GfOE 2016_Jannik_Ecosystem service access Ethiopia
GfOE 2016_Jannik_Ecosystem service access EthiopiaGfOE 2016_Jannik_Ecosystem service access Ethiopia
GfOE 2016_Jannik_Ecosystem service access Ethiopia
 
Change Data Capture using Kafka
Change Data Capture using KafkaChange Data Capture using Kafka
Change Data Capture using Kafka
 
Sports Wearable : Business Case TomTom
Sports Wearable : Business Case TomTomSports Wearable : Business Case TomTom
Sports Wearable : Business Case TomTom
 
Resume
ResumeResume
Resume
 
งานชิ้นที่ 3 ปฏิทินรายเดือน
งานชิ้นที่ 3 ปฏิทินรายเดือนงานชิ้นที่ 3 ปฏิทินรายเดือน
งานชิ้นที่ 3 ปฏิทินรายเดือน
 
Tolera. stockholm
Tolera. stockholmTolera. stockholm
Tolera. stockholm
 
Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...
Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...
Loos, J. (2012). Annual Conference of the Ecological Society of Germany, Aust...
 
มัทนะพาธา
มัทนะพาธามัทนะพาธา
มัทนะพาธา
 
Building construction 1 experiencing construction (zone innovation park klang)
Building construction 1 experiencing construction (zone innovation park klang)Building construction 1 experiencing construction (zone innovation park klang)
Building construction 1 experiencing construction (zone innovation park klang)
 

Similar to CHARIOT

Programming the world with Docker
Programming the world with DockerProgramming the world with Docker
Programming the world with DockerPatrick Chanezon
 
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...Boston Data Engineering
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
 
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...confluent
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Patrick Chanezon
 
Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015Patrick Chanezon
 
Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)Matt Bynum
 
Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)Matt Bynum
 
Java and internet fundamentals.
Java and internet fundamentals.Java and internet fundamentals.
Java and internet fundamentals.mali yogesh kumar
 
Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015Patrick Chanezon
 
Genomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker SwarmGenomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker SwarmDmitri Zimine
 
Can i service this from my raspberry pi
Can i service this from my raspberry piCan i service this from my raspberry pi
Can i service this from my raspberry piThoughtworks
 
Gervais Peter Resume Oct :2015
Gervais Peter Resume Oct :2015Gervais Peter Resume Oct :2015
Gervais Peter Resume Oct :2015Peter Gervais
 
Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Vinay Kumar
 
CN Asturias - Stateful application for kubernetes
CN Asturias -  Stateful application for kubernetes CN Asturias -  Stateful application for kubernetes
CN Asturias - Stateful application for kubernetes Cédrick Lunven
 
Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Rogue Wave Software
 
Open Source Applied - Real World Use Cases
Open Source Applied - Real World Use CasesOpen Source Applied - Real World Use Cases
Open Source Applied - Real World Use CasesAll Things Open
 

Similar to CHARIOT (20)

Programming the world with Docker
Programming the world with DockerProgramming the world with Docker
Programming the world with Docker
 
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
 
Java Test
Java TestJava Test
Java Test
 
Java
JavaJava
Java
 
Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015Docker Orchestration: Welcome to the Jungle! JavaOne 2015
Docker Orchestration: Welcome to the Jungle! JavaOne 2015
 
Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)
 
Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)Demystifying Software Defined Networking (SDN)
Demystifying Software Defined Networking (SDN)
 
Java and internet fundamentals.
Java and internet fundamentals.Java and internet fundamentals.
Java and internet fundamentals.
 
Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015
 
Genomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker SwarmGenomic Computation at Scale with Serverless, StackStorm and Docker Swarm
Genomic Computation at Scale with Serverless, StackStorm and Docker Swarm
 
Can i service this from my raspberry pi
Can i service this from my raspberry piCan i service this from my raspberry pi
Can i service this from my raspberry pi
 
Gervais Peter Resume Oct :2015
Gervais Peter Resume Oct :2015Gervais Peter Resume Oct :2015
Gervais Peter Resume Oct :2015
 
Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17Modern application development with oracle cloud sangam17
Modern application development with oracle cloud sangam17
 
CN Asturias - Stateful application for kubernetes
CN Asturias -  Stateful application for kubernetes CN Asturias -  Stateful application for kubernetes
CN Asturias - Stateful application for kubernetes
 
Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)Open source applied - Real world use cases (Presented at Open Source 101)
Open source applied - Real world use cases (Presented at Open Source 101)
 
Open Source Applied - Real World Use Cases
Open Source Applied - Real World Use CasesOpen Source Applied - Real World Use Cases
Open Source Applied - Real World Use Cases
 
Where should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and moreWhere should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and more
 

Recently uploaded

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 

Recently uploaded (20)

React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
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
  • 4. introduction Internet of Things ∙ Network of physical objects—devices, vehicles, buildings etc Credits: Wikipedia 3
  • 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
  • 10. chariot The Idea ∙ Use the computational resources of powerful machines 6
  • 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
  • 18. chariot Nomenclature ∙ Also, CHAR is anagram for ARCH: Architecture for IOT 9
  • 19. chariot Nomenclature ∙ Also, CHAR is anagram for ARCH: Architecture for IOT ∙ Named our components based on horse-wagon analogy 9
  • 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
  • 30. implementation Technology Stack ∙ Source Language: Java 7 ∙ Gradle build system 15
  • 31. implementation Technology Stack ∙ Source Language: Java 7 ∙ Gradle build system ∙ RabbitMQ RPC Server 15
  • 32. implementation Technology Stack ∙ Source Language: Java 7 ∙ Gradle build system ∙ RabbitMQ RPC Server ∙ Apache Avro Data Schema 15
  • 33. implementation Technology Stack ∙ Source Language: Java 7 ∙ Gradle build system ∙ RabbitMQ RPC Server ∙ Apache Avro Data Schema ∙ Spark WebServer for D2 15
  • 34. implementation Technology Stack ∙ Source Language: Java 7 ∙ Gradle build system ∙ RabbitMQ RPC Server ∙ Apache Avro Data Schema ∙ Spark WebServer for D2 ∙ Docker 15
  • 35. implementation Technology Stack ∙ Source Language: Java 7 ∙ Gradle build system ∙ RabbitMQ RPC Server ∙ Apache Avro Data Schema ∙ Spark WebServer for D2 ∙ Docker ∙ MongoDB 15
  • 36. 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
  • 40. demonstration Demonstration ∙ Project page and Codebase ∙ Screencast of deployment, running simple Java client, fault tolerance testing 18
  • 41. demonstration Demonstration ∙ Project page and Codebase ∙ Screencast of deployment, running simple Java client, fault tolerance testing ∙ Image Blur Android App demo 18
  • 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
  • 44. quality attributes Quality Attributes ✓ Availability: Two Prashti (and Zookeeper) to make system available 20
  • 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
  • 50. quality attributes Quality Attributes ✓ Testability: JUnit Tests automatically runs on gradle build. Integration Tests also provided with source code. 21
  • 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
  • 59. Questions? Slides created using Beamer(mtheme) on ShareLaTeX 24