SlideShare a Scribd company logo
1 of 84
Download to read offline
Storm w/ PHP 
IPC Autumn 2014
About Martin & Mike 
Mike Lohmann 
Co-Founder / Software Engineer 
mike.lohmann@deck36.de 
@mikelohmann 
Martin Schütte 
System Automation Engineer 
martin.schuette@deck36.de 
@m_schuett
• DECK36 is a young spin-off from ICANS 
• Small team of 5 engineers 
• Longstanding expertise in designing, implementing and 
operating complex web systems 
• Offering our expert knowledge in: 
• Automation & Operations 
• Architecture & Engineering 
• Rapid Prototyping 
• @deck_36
WE’RE HERE! 
What will be going on today?
WE’RE HERE 
Roadmap - Part 01 
Introduction 
! 
Plug and Play 
• Probably the best kitten game ever invented: Plan 9 From Outer Kitten 
! 
Preparation 
• Checkout tutorial and sources 
! 
Technology overview and Hands on Part 1 
• Vagrant 
!
Coffee!
WE’RE HERE 
Roadmap - Part 02 
Technology overview and Hands on Part 2 
• RabbitMQ, Redis, Storm 
• Your own Dev environment for pf9ok!
Lunch time!
WE’RE HERE 
Roadmap - Part 03 
Viewing Code 
• Let`s go inside the kittens and see how Sf2 plays with Storm. 
! 
Deploy 
• Bring some changes into the game.
Coffee, again!
WE’RE HERE 
Roadmap - Part 04 
Badge Development 
• Your own Storm-based backend module!
Cold hops 
Schorle, finally!
WE’RE HERE 
Roadmap - Part 01 
Introduction 
! 
Plug and Play 
• Probably the best kitten game ever invented: Plan 9 From Outer Kitten 
! 
Preparation 
• Checkout tutorial and sources 
! 
Technology overview and Hands on Part 1 
• Vagrant 
!
PLAN 9 FROM OUTER KITTEN 
Probably the best game ever 
invented. Seriously.
PLAN 9 FROM OUTER KITTEN 
Probably the best game ever. Seriously. 
Play Plan 9. 
Register and unlock pixels by matching 
kittens while the Kitten Robbers try to stop 
you!
PLAN 9 FROM OUTER KITTEN 
Overview 
Overview Game Arena 
• One image with all pixels blocked. 
• There is a collaborative effort to uncover the whole 
! 
Local Playground 
• Your local area represents small part of the image 
• You unlock a pixel by matching kittens in a cat-based trial (CBT)! 
• One solved CBT will give you 1 point. 
• Special events happen based on player behaviour or the surrounding wheeling and 
dealings of the ill-intended Kitten Robbers! 
! 
Special Events Create Player Badges 
• This is what we will be implementing.
PLAN 9 FROM OUTER KITTEN 
System Architecture 
Queue 
! 
Supervisor !!!!!! 
Worker !!! 
Nimbus (Master) 
Zookeeper 
Supervisor !! 
WWoorkrkeerr 
NodeJS 
Redis 
Storm-Cluster 
PHP App 
MySQL 
Bring in new logic or 
update existing by 
deploying new 
revisions of existing 
Topologies 
! 
Reuse existing 
business logic
PLAN 9 FROM OUTER KITTEN 
Badges 
High Five 
• Two players solve a pixel with the same cat at the same time. 
! 
Record Breaker and Record Master 
• Points for successful trials accumulate until you fail. 
• Each time you fail, a new record is made. 
• If you break your own record, you receive RecordBreaker 
• If you have a Top 3 record, you receive bonus points 
• If the points between your new record and your old record is best for all users, you 
receive RecordMaster
PLAN 9 FROM OUTER KITTEN 
Badges 
Prime Cat 
• If you made the most points in the last 60 seconds, you receive PrimeCat. 
• Your points during the next 60s are then doubled. 
! 
Stumble Blunder a.k.a. LOLCAT 
• You fail 5 times in a row, you receive StumbleBlunder. 
• You don’t receive any points during the next 3 minutes. 
• (You need to earn your ability to receive points.)
PLAN 9 FROM OUTER KITTEN 
Badges 
Kitten Robbers From Outer Space 
• The Kitten Robbers will randomly attack a player. 
• (The player will loose the last solved pixel.) 
• The player will loose 100 points. 
! 
Raider Of The Kitten Robbers 
• If the Kitten Robbers attack you, you fight them off with a HighFive. 
• (The Raider will receive all points from all other players during the next 60s). 
• The Raider will receive 1000 bonus points.
Hands-on: 
Installation!
Plan9 Tutorial 
Insanity! Easy to use. 
Install the VM, IDE, PHP-Web-App, Node-Backend, Storm-PHP-Project 
! 
• Follow: https://github.com/DECK36/plan9_workshop_tutorial 
• Windows < 8? (Please try, but without guarantee). 
! 
Let`s start.
VAGRANT
VAGRANT 
VMs Configuration and Provisoning 
“Local cloud” 
• Self service 
• Instant provisioning 
• Cost efficient 
• Elastic 
• Pay per use 
!
VAGRANT 
Providers 
Vagrant VM Providers: 
• VirtualBox: “default”, works offline, ressource hungry 
• Docker: lightweight, requires Linux, good for testing 
• AWS EC2: remote VMs, good for automation (Jenkins) 
• 3rd party plugins for KVM, libvirt, ESXI, … 
! 
Provisioning: 
• Shell script 
• Puppet, apply manifest or run agent 
• Chef, solo or client 
• Ansible playbooks 
• Docker containers 
!
Coffee!
WE’RE HERE 
Roadmap - Part 02 
Technology overview and Hands on Part 2 
• RabbitMQ, Redis, Storm 
• Your own Dev environment for pf9ok!
RABBITMQ
RabbitMQ 
Message queueing and routing 
Messaging: 
• Implementation of Advanced Message Queuing Protocol (AMQP) 
• Message Queue to connect services with reliable delivery 
! 
! 
! 
!
RabbitMQ 
Message queueing and routing 
Routing: 
• Features: Exchanges, routing keys 
• allow for advanced routing and forwarding decisions. 
• Our use-case: build a channel for RPC 
! 
! 
! 
! 
!
REDIS
Redis 
caching and storing key-values 
Redis is an open source, BSD licensed, advanced key-value cache and store. 
! 
Possible clients: 
• http://redisdesktop.com/ 
• Redis-Cli 
! 
! 
! 
! 
!
Redis 
caching and storing key-values 
Redis Data Examples 
! 
! 
Keys Values 
! 
! 
! 
! 
page:index.html —> <html><head>[...] <— String 
count —> 898 <— int 
plan9_pixel_free —> {{1,2}, {3,4}, …} <— SET 
user_1 —> points=>10, socket_id=>9392 <— HASH 
ids —-> [1,2,3,4,5] <— LIST 
plan9_highscores —> user_1=>5, user_2=>10 <— Sorted Set
STORM
STORM 
It’s like Hadoop, but for Real-Time! 
Hadoop is cutting-edge and old-school at the same time 
• Relatively low / early stage adoption of Hadoop in Germany 
• Batch-processing becomes increasingly painful for the business operations 
• Storm enables new ways to approach business problems 
! 
Before Storm 
• Real-time processing using a network of queues and workers 
• Lot’s of config, diversity, complicated fault-tolerance, unintuitive to scale 
• Hard to reason about system state, hard to fix failures
STORM 
It’s like Hadoop, but for Real-Time! 
Storm to the Rescue! 
• Abstraction of a queue/worker network 
! 
• Like Hadoop MapReduce, but for message streams 
• few core primitives, programming-language agnostic 
! 
• Easy to scale, just add machines and increase parallelism settings 
• Strong guarantees: each message is processed (“exactly once” possible w/ Trident) 
• Explicit project goal: painless cluster management 
• Fault-tolerant: tasks will be reassigned if parts break, computation is always continuous
SOLUTION ARCHITECTURE 
Lambda Architecture 
The Real-Time Big Data Architecture 
Named by Nathan Marz, the creator of 
Storm. http://lambda-architecture.net/ 
! 
Example: Count tweets per #hashtag 
1. Tweets come in from Persistent Queue 
2. Trident Topology to (A) save all data to 
Hadoop & (B) update Trident State with 
counts for current day 
3. Trident Topology triggers Hadoop to 
compute the counts on “all” raw data 
4. Push the Hadoop result to database 
5. Trident Timeline Query via DRPC 
http://www.datasalt.com/2013/01/an-example-lambda-architecture-using-trident- 
hadoop-and-splout-sql/ 
https://github.com/pereferrera/trident-lambda-splout
COMPETITION? 
Storm vs. S4 vs. Samza 
Yahoo Samoa 
Apache Spark Streaming 
Amazon Kinesis 
Google BigQuery for Streams
CONCEPTS
CONCEPTS 
Tuple 
A tuple is one single “message” 
- List (Java ArrayList to be precise) of Objects (= different data) 
- A tuple has a “schema” known to storm, but not part of the message
CONCEPTS 
Stream 
A “stream” is an unbounded sequence of tuples 
- The “stream” is the core abstraction construct within storm 
- “Storm transforms streams into new streams” 
- Storm components can consume and produce multiple different streams 
- Tuples in a single stream can be handled differently based on a key 
- All tuples in a single stream must follow the same “schema”
CONCEPTS 
Spout 
A spout is a source of streams 
- A spout is one of the core components of storm 
- Spouts can be implemented in PHP, node.js, etc. We’ll see that later. 
- Data comes from an outside infinite source, not triggered by storm events 
- A single spout can emit multiple streams with different schemas 
!
CONCEPTS 
Bolt 
A bolt is a worker process 
- A bolt is the second core component of storm 
- We’ll implement bolts later. 
- A bolt consumes one or more streams. These can use multiple schemas. 
- A bolt emits zero or more streams. 
- A bolt can produce side effects. For instance, a database update. 
!
CONCEPTS 
Topology 
A topology is a network comprised of spouts and bolts. 
- A topology represents a “storm program”. 
- Storm cluster executes and manages multiple topologies. 
- All code for one topology is packaged into a single file. 
- The graph representing a single topology can be partitioned.
CONCEPTS 
Stream Grouping 
Stream Groupings partition *one* stream among the tasks of *one* target bolt. 
• Shuffle grouping: Random, each task gets the amount of tuples. 
• Fields grouping: Fields from a tuple can be used as key. Tuples with the same key, will 
always go to the same task. 
• All grouping: Every tuple goes to every task. “Use this grouping with care.” 
!
CONJURING DAEMONS 
Storm Cluster Setup
CONJURING DAEMONS 
Overview 
Storm Cluster. 
Hello World. 
NIMBUS 
(“Jobtracker”) 
! 
ZOOKEEPER 
DRPC 
SUPERVISOR 
(“Tasktracker”) 
UI 
LOGVIEWER 
SUPERVISOR 
(“Tasktracker”) … SUPERVISOR 
(“Tasktracker”) 
W W W W W W W W W W W W
STORM 
The Nuts and Bolts
SPOUT; BOLT 
Java
SPOUT; BOLT 
PHP
TOPOLOGY 
Java
RELIABILITY 
Guaranteed Message Processing 
Storm guarantees that each message coming off a spout will be fully processed. 
It might, however, be processed multiple times (more on that in a minute). 
! 
And it requires some work by the user. 
== You can configure the level of guarantee. 
! 
!
RELIABILITY 
Guaranteed Message Processing 
Meet the mighty Tuple Tree. 
Example from: 
https://github.com/nathanmarz/storm/wiki/Guaranteeing-message-processing 
! 
! 
! 
SDHell 
Spout: 
1 Tuple 
Split Bolt: 
6 Tuples 
Total: 
13 Tuples 
Count Bolt: 
6 Tuples
RELIABILITY 
Guaranteed Message Processing 
“Fully processed” means the whole tuple tree has been processed. 
This considers a tuple that was produced by a spout. 
! 
A tuple is considered failed when its tree of messages fails to be fully processed 
within a specified timeout. 
Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS 
– This timeout can be configured on a topology-specific basis. 
– Defaults to 30 seconds.
Lunch time!
WE’RE HERE 
Roadmap - Part 03 
Viewing Code 
• Let’s go inside the kittens and see how Sf2 plays with Storm. 
! 
Deploy 
• Bring some changes into the game.
Eyes-on: 
Code!
Symfony2 + Storm PHP Bolts
Symfony2 + Storm PHP Bolts 
Configuration and Execution by Sf2 
Storm Bundle 
• Each Bolt has a command -> To be executable by Storm 
• Each Bolt has a configuration -> storm.yml 
• Whole Sf2 universe is accessible in Storm 
• Bolts implement storm.php abstract class BasicBolt 
• Storm MultilangProtocol works on STDIN and STDOUT 
• A bolt waits for Tuples on STDIN 
• -> while(true) to wait for input on STDIN 
• -> If input -> process unit stop word end 
• write something to Redis 
• Badges run in Topologies
Symfony2 + Storm PHP Bolts 
PHP in Storm 
StatusLevelTopology 
• Using MultilangBolt to execute Bolt implemented in PHP 
• Decide by config which level to send 
• all configuration from storm.yml 
• Create queue subscribed to plan9 exchange for routing key 
• Do the business logic 
• Push message to plan9-backchannel 
!
Deploying the PHP Bolts
Deploying the PHP Bolts 
Phar archives for the win 
StatusLevelBolt 
• Change storm.yml config (points for status) 
• Add new configuration to the phar 
• Build the jar 
• deploy to the „cluster“ 
! 
!
Deploying the PHP Bolts 
Phar archives for the win 
Environments 
• Environment could become hhvm as well (not provided in the vm) 
! 
!
Coffee, again!
WE’RE HERE 
Roadmap - Part 04 
Badge Development 
• Create your own plan9 idea. 
• Implement a bolt with game logic. 
• Play around with the dev environment. 
• Play the game. 
• Create a pull request for the plan9 repo. 
! 
!
WheelOfKittenBolt
WheelOfKittenBolt 
Tick-Tuples for the start 
Tick-Tuple based randomized point addition/substraction named 
WheelOfKittenBolt 
! 
• Requirements: 
• Read the Plan9 points tuple stream 
• Aggregate the generated points for each user 
• If the user has earned more then 10 points: become active 
• After a certain interval: 
• Inform the user (by badge) about the result of the KittenCasinoLuckyWheel’s result 
• Play the wheel (Randomize the choose of a predefined list with actions) 
• „Payout“ -> For example: 10% off, 20% off, 100 points more, Update status 
level… 
• Reset the point counter and become active if the user earned his/her next points
WheelOfKittenBolt 
Tick-Tuples for the start 
Tick-Tuple based randomized point addition/substraction named 
KittenCasinoLuckyWheelBolt 
• Implement the PHP component 
• Copy the EmptyTickTupleBolt.php 
• Copy the EmptyTickTupleBoltCommand.php 
• Do Configuration.php stuff 
• Do storm.yml stuff 
• Do services.xml stuff 
• Add new bolt in ./update_phar.sh 
• Create the WheelOfKittenTopology from DeludedKittenRobbersTopology 
• Replace things in the Topology 
• run build.sh 
• Execute the jar / Play the game. Check if Badges come
Cold hops 
Schorle, finally!
PLAN9 FROM OUTER KITTEN - ONLINE! 
Project Links 
Tutorial 
https://github.com/DECK36/plan9_workshop_tutorial 
! 
PHP Web App 
https://github.com/DECK36/deck36-php-web-app 
! 
Node.js API Backend 
https://github.com/DECK36/deck36-api-backend 
! 
Storm Backend for PHP 
https://github.com/DECK36/deck36-storm-backend-php
PLAN9 FROM OUTER KITTEN - ONLINE! 
Further Links 
Further Links 
http://storm.incubator.apache.org/ 
! 
https://storm.incubator.apache.org/documentation/Multilang-protocol.html 
! 
http://lambda-architecture.net/ 
! 
http://www.datasalt.com/2013/01/an-example-lambda-architecture-using-trident-hadoop- 
and-splout-sql/ 
! 
https://github.com/pereferrera/trident-lambda-splout
TRIDENT 
API, Functionality, Concepts
TRIDENT 
Topology
TRIDENT STATE 
Persistent Topology State
TRIDENT 
DRPC
PHP Backends for Real-Time User Interaction using Apache Storm.

More Related Content

What's hot

Learning Stream Processing with Apache Storm
Learning Stream Processing with Apache StormLearning Stream Processing with Apache Storm
Learning Stream Processing with Apache StormEugene Dvorkin
 
Storm presentation
Storm presentationStorm presentation
Storm presentationShyam Raj
 
Storm Real Time Computation
Storm Real Time ComputationStorm Real Time Computation
Storm Real Time ComputationSonal Raj
 
Realtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopRealtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopDataWorks Summit
 
Spark vs storm
Spark vs stormSpark vs storm
Spark vs stormTrong Ton
 
Real-time Big Data Processing with Storm
Real-time Big Data Processing with StormReal-time Big Data Processing with Storm
Real-time Big Data Processing with Stormviirya
 
Slide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache StormSlide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache StormMd. Shamsur Rahim
 
Realtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQRealtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQXin Wang
 
Apache Storm Concepts
Apache Storm ConceptsApache Storm Concepts
Apache Storm ConceptsAndré Dias
 
Real time big data analytics with Storm by Ron Bodkin of Think Big Analytics
Real time big data analytics with Storm by Ron Bodkin of Think Big AnalyticsReal time big data analytics with Storm by Ron Bodkin of Think Big Analytics
Real time big data analytics with Storm by Ron Bodkin of Think Big AnalyticsData Con LA
 
Storm: The Real-Time Layer - GlueCon 2012
Storm: The Real-Time Layer  - GlueCon 2012Storm: The Real-Time Layer  - GlueCon 2012
Storm: The Real-Time Layer - GlueCon 2012Dan Lynn
 
Storm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationStorm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationnathanmarz
 
Cassandra and Storm at Health Market Sceince
Cassandra and Storm at Health Market SceinceCassandra and Storm at Health Market Sceince
Cassandra and Storm at Health Market SceinceP. Taylor Goetz
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignMichael Noll
 

What's hot (20)

Learning Stream Processing with Apache Storm
Learning Stream Processing with Apache StormLearning Stream Processing with Apache Storm
Learning Stream Processing with Apache Storm
 
Storm presentation
Storm presentationStorm presentation
Storm presentation
 
Storm Real Time Computation
Storm Real Time ComputationStorm Real Time Computation
Storm Real Time Computation
 
Realtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopRealtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and Hadoop
 
Spark vs storm
Spark vs stormSpark vs storm
Spark vs storm
 
Real-time Big Data Processing with Storm
Real-time Big Data Processing with StormReal-time Big Data Processing with Storm
Real-time Big Data Processing with Storm
 
Resource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache StormResource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache Storm
 
Storm
StormStorm
Storm
 
Slide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache StormSlide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache Storm
 
Storm and Cassandra
Storm and Cassandra Storm and Cassandra
Storm and Cassandra
 
Realtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQRealtime Statistics based on Apache Storm and RocketMQ
Realtime Statistics based on Apache Storm and RocketMQ
 
Apache Storm Concepts
Apache Storm ConceptsApache Storm Concepts
Apache Storm Concepts
 
Introduction to Storm
Introduction to StormIntroduction to Storm
Introduction to Storm
 
Real time big data analytics with Storm by Ron Bodkin of Think Big Analytics
Real time big data analytics with Storm by Ron Bodkin of Think Big AnalyticsReal time big data analytics with Storm by Ron Bodkin of Think Big Analytics
Real time big data analytics with Storm by Ron Bodkin of Think Big Analytics
 
Storm: The Real-Time Layer - GlueCon 2012
Storm: The Real-Time Layer  - GlueCon 2012Storm: The Real-Time Layer  - GlueCon 2012
Storm: The Real-Time Layer - GlueCon 2012
 
Storm
StormStorm
Storm
 
Storm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationStorm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computation
 
Introduction to Apache Storm
Introduction to Apache StormIntroduction to Apache Storm
Introduction to Apache Storm
 
Cassandra and Storm at Health Market Sceince
Cassandra and Storm at Health Market SceinceCassandra and Storm at Health Market Sceince
Cassandra and Storm at Health Market Sceince
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - Verisign
 

Viewers also liked

Celi @Codemotion 2014 - Roberto Franchini GlusterFS
Celi @Codemotion 2014 - Roberto Franchini GlusterFSCeli @Codemotion 2014 - Roberto Franchini GlusterFS
Celi @Codemotion 2014 - Roberto Franchini GlusterFSCELI
 
Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...
Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...
Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...Caserta
 
(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...
(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...
(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...Amazon Web Services
 
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle TreesModern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle TreesLorenzo Alberton
 
Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3Eric Evans
 
Fast Data Analytics with Spark and Python
Fast Data Analytics with Spark and PythonFast Data Analytics with Spark and Python
Fast Data Analytics with Spark and PythonBenjamin Bengfort
 
IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014
IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014
IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014Findwise
 
BI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraBI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraVictor Coustenoble
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門AdvancedTechNight
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureP. Taylor Goetz
 

Viewers also liked (12)

Celi @Codemotion 2014 - Roberto Franchini GlusterFS
Celi @Codemotion 2014 - Roberto Franchini GlusterFSCeli @Codemotion 2014 - Roberto Franchini GlusterFS
Celi @Codemotion 2014 - Roberto Franchini GlusterFS
 
Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...
Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...
Big Data Warehousing Meetup: Real-time Trade Data Monitoring with Storm & Cas...
 
(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...
(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...
(BDT303) Construct Your ETL Pipeline with AWS Data Pipeline, Amazon EMR, and ...
 
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle TreesModern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
Modern Algorithms and Data Structures - 1. Bloom Filters, Merkle Trees
 
Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3Cassandra By Example: Data Modelling with CQL3
Cassandra By Example: Data Modelling with CQL3
 
Fast Data Analytics with Spark and Python
Fast Data Analytics with Spark and PythonFast Data Analytics with Spark and Python
Fast Data Analytics with Spark and Python
 
IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014
IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014
IBM Big Data Analytics - Cognitive Computing and Watson - Findability Day 2014
 
BI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraBI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache Cassandra
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 
Resource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache StormResource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache Storm
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm Architecture
 
Cisco OpenSOC
Cisco OpenSOCCisco OpenSOC
Cisco OpenSOC
 

Similar to PHP Backends for Real-Time User Interaction using Apache Storm.

John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudyJohn Adams
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploitTiago Henriques
 
Real-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache StormReal-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache StormDavorin Vukelic
 
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...Josef A. Habdank
 
Performance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons LearnedPerformance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons LearnedTim Callaghan
 
Fast and Scalable Python
Fast and Scalable PythonFast and Scalable Python
Fast and Scalable PythonTravis Oliphant
 
Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015Karman Interactive
 
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...Alexandre Moneger
 
Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...
Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...
Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...Jen Aman
 
Hadoop Operations: Keeping the Elephant Running Smoothly
Hadoop Operations: Keeping the Elephant Running SmoothlyHadoop Operations: Keeping the Elephant Running Smoothly
Hadoop Operations: Keeping the Elephant Running SmoothlyMichael Arnold
 
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!Puppet
 
Open stack jobs avoiding the axe
Open stack jobs   avoiding the axeOpen stack jobs   avoiding the axe
Open stack jobs avoiding the axeJim Leitch
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraDataStax Academy
 
[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼NAVER D2
 
Speed up R with parallel programming in the Cloud
Speed up R with parallel programming in the CloudSpeed up R with parallel programming in the Cloud
Speed up R with parallel programming in the CloudRevolution Analytics
 
Spark on Mesos
Spark on MesosSpark on Mesos
Spark on MesosJen Aman
 
Sanger OpenStack presentation March 2017
Sanger OpenStack presentation March 2017Sanger OpenStack presentation March 2017
Sanger OpenStack presentation March 2017Dave Holland
 
Using AWS, Terraform, and Ansible to Automate Splunk at Scale
Using AWS, Terraform, and Ansible to Automate Splunk at ScaleUsing AWS, Terraform, and Ansible to Automate Splunk at Scale
Using AWS, Terraform, and Ansible to Automate Splunk at ScaleData Works MD
 

Similar to PHP Backends for Real-Time User Interaction using Apache Storm. (20)

John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudy
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploit
 
Real-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache StormReal-Time Streaming with Apache Spark Streaming and Apache Storm
Real-Time Streaming with Apache Spark Streaming and Apache Storm
 
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
Extreme Apache Spark: how in 3 months we created a pipeline that can process ...
 
Performance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons LearnedPerformance Benchmarking: Tips, Tricks, and Lessons Learned
Performance Benchmarking: Tips, Tricks, and Lessons Learned
 
Fast and Scalable Python
Fast and Scalable PythonFast and Scalable Python
Fast and Scalable Python
 
Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015Ottawa unity user_group_feb13_2015
Ottawa unity user_group_feb13_2015
 
PyData Boston 2013
PyData Boston 2013PyData Boston 2013
PyData Boston 2013
 
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
 
Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...
Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...
Embrace Sparsity At Web Scale: Apache Spark MLlib Algorithms Optimization For...
 
Hadoop Operations: Keeping the Elephant Running Smoothly
Hadoop Operations: Keeping the Elephant Running SmoothlyHadoop Operations: Keeping the Elephant Running Smoothly
Hadoop Operations: Keeping the Elephant Running Smoothly
 
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
Puppet Camp NYC 2014: Build a Modern Infrastructure in 45 min!
 
Open stack jobs avoiding the axe
Open stack jobs   avoiding the axeOpen stack jobs   avoiding the axe
Open stack jobs avoiding the axe
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
 
[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼[262] netflix 빅데이터 플랫폼
[262] netflix 빅데이터 플랫폼
 
Speed up R with parallel programming in the Cloud
Speed up R with parallel programming in the CloudSpeed up R with parallel programming in the Cloud
Speed up R with parallel programming in the Cloud
 
Spark on Mesos
Spark on MesosSpark on Mesos
Spark on Mesos
 
Sanger OpenStack presentation March 2017
Sanger OpenStack presentation March 2017Sanger OpenStack presentation March 2017
Sanger OpenStack presentation March 2017
 
Stackato v5
Stackato v5Stackato v5
Stackato v5
 
Using AWS, Terraform, and Ansible to Automate Splunk at Scale
Using AWS, Terraform, and Ansible to Automate Splunk at ScaleUsing AWS, Terraform, and Ansible to Automate Splunk at Scale
Using AWS, Terraform, and Ansible to Automate Splunk at Scale
 

More from DECK36

Our Puppet Story (GUUG FFG 2015)
Our Puppet Story (GUUG FFG 2015)Our Puppet Story (GUUG FFG 2015)
Our Puppet Story (GUUG FFG 2015)DECK36
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsDECK36
 
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...DECK36
 
Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)DECK36
 
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)DECK36
 
Hyperdex - A closer look
Hyperdex - A closer lookHyperdex - A closer look
Hyperdex - A closer lookDECK36
 
Log everything! @DC13
Log everything! @DC13Log everything! @DC13
Log everything! @DC13DECK36
 

More from DECK36 (7)

Our Puppet Story (GUUG FFG 2015)
Our Puppet Story (GUUG FFG 2015)Our Puppet Story (GUUG FFG 2015)
Our Puppet Story (GUUG FFG 2015)
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
 
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
Real-time Data De-duplication using Locality-sensitive Hashing powered by Sto...
 
Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)
 
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)
Our Puppet Story – Patterns and Learnings (sage@guug, March 2014)
 
Hyperdex - A closer look
Hyperdex - A closer lookHyperdex - A closer look
Hyperdex - A closer look
 
Log everything! @DC13
Log everything! @DC13Log everything! @DC13
Log everything! @DC13
 

Recently uploaded

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Recently uploaded (20)

"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

PHP Backends for Real-Time User Interaction using Apache Storm.

  • 1.
  • 2. Storm w/ PHP IPC Autumn 2014
  • 3. About Martin & Mike Mike Lohmann Co-Founder / Software Engineer mike.lohmann@deck36.de @mikelohmann Martin Schütte System Automation Engineer martin.schuette@deck36.de @m_schuett
  • 4. • DECK36 is a young spin-off from ICANS • Small team of 5 engineers • Longstanding expertise in designing, implementing and operating complex web systems • Offering our expert knowledge in: • Automation & Operations • Architecture & Engineering • Rapid Prototyping • @deck_36
  • 5. WE’RE HERE! What will be going on today?
  • 6. WE’RE HERE Roadmap - Part 01 Introduction ! Plug and Play • Probably the best kitten game ever invented: Plan 9 From Outer Kitten ! Preparation • Checkout tutorial and sources ! Technology overview and Hands on Part 1 • Vagrant !
  • 8. WE’RE HERE Roadmap - Part 02 Technology overview and Hands on Part 2 • RabbitMQ, Redis, Storm • Your own Dev environment for pf9ok!
  • 10. WE’RE HERE Roadmap - Part 03 Viewing Code • Let`s go inside the kittens and see how Sf2 plays with Storm. ! Deploy • Bring some changes into the game.
  • 12. WE’RE HERE Roadmap - Part 04 Badge Development • Your own Storm-based backend module!
  • 13. Cold hops Schorle, finally!
  • 14. WE’RE HERE Roadmap - Part 01 Introduction ! Plug and Play • Probably the best kitten game ever invented: Plan 9 From Outer Kitten ! Preparation • Checkout tutorial and sources ! Technology overview and Hands on Part 1 • Vagrant !
  • 15. PLAN 9 FROM OUTER KITTEN Probably the best game ever invented. Seriously.
  • 16. PLAN 9 FROM OUTER KITTEN Probably the best game ever. Seriously. Play Plan 9. Register and unlock pixels by matching kittens while the Kitten Robbers try to stop you!
  • 17. PLAN 9 FROM OUTER KITTEN Overview Overview Game Arena • One image with all pixels blocked. • There is a collaborative effort to uncover the whole ! Local Playground • Your local area represents small part of the image • You unlock a pixel by matching kittens in a cat-based trial (CBT)! • One solved CBT will give you 1 point. • Special events happen based on player behaviour or the surrounding wheeling and dealings of the ill-intended Kitten Robbers! ! Special Events Create Player Badges • This is what we will be implementing.
  • 18. PLAN 9 FROM OUTER KITTEN System Architecture Queue ! Supervisor !!!!!! Worker !!! Nimbus (Master) Zookeeper Supervisor !! WWoorkrkeerr NodeJS Redis Storm-Cluster PHP App MySQL Bring in new logic or update existing by deploying new revisions of existing Topologies ! Reuse existing business logic
  • 19. PLAN 9 FROM OUTER KITTEN Badges High Five • Two players solve a pixel with the same cat at the same time. ! Record Breaker and Record Master • Points for successful trials accumulate until you fail. • Each time you fail, a new record is made. • If you break your own record, you receive RecordBreaker • If you have a Top 3 record, you receive bonus points • If the points between your new record and your old record is best for all users, you receive RecordMaster
  • 20. PLAN 9 FROM OUTER KITTEN Badges Prime Cat • If you made the most points in the last 60 seconds, you receive PrimeCat. • Your points during the next 60s are then doubled. ! Stumble Blunder a.k.a. LOLCAT • You fail 5 times in a row, you receive StumbleBlunder. • You don’t receive any points during the next 3 minutes. • (You need to earn your ability to receive points.)
  • 21. PLAN 9 FROM OUTER KITTEN Badges Kitten Robbers From Outer Space • The Kitten Robbers will randomly attack a player. • (The player will loose the last solved pixel.) • The player will loose 100 points. ! Raider Of The Kitten Robbers • If the Kitten Robbers attack you, you fight them off with a HighFive. • (The Raider will receive all points from all other players during the next 60s). • The Raider will receive 1000 bonus points.
  • 23. Plan9 Tutorial Insanity! Easy to use. Install the VM, IDE, PHP-Web-App, Node-Backend, Storm-PHP-Project ! • Follow: https://github.com/DECK36/plan9_workshop_tutorial • Windows < 8? (Please try, but without guarantee). ! Let`s start.
  • 25. VAGRANT VMs Configuration and Provisoning “Local cloud” • Self service • Instant provisioning • Cost efficient • Elastic • Pay per use !
  • 26. VAGRANT Providers Vagrant VM Providers: • VirtualBox: “default”, works offline, ressource hungry • Docker: lightweight, requires Linux, good for testing • AWS EC2: remote VMs, good for automation (Jenkins) • 3rd party plugins for KVM, libvirt, ESXI, … ! Provisioning: • Shell script • Puppet, apply manifest or run agent • Chef, solo or client • Ansible playbooks • Docker containers !
  • 28. WE’RE HERE Roadmap - Part 02 Technology overview and Hands on Part 2 • RabbitMQ, Redis, Storm • Your own Dev environment for pf9ok!
  • 30. RabbitMQ Message queueing and routing Messaging: • Implementation of Advanced Message Queuing Protocol (AMQP) • Message Queue to connect services with reliable delivery ! ! ! !
  • 31. RabbitMQ Message queueing and routing Routing: • Features: Exchanges, routing keys • allow for advanced routing and forwarding decisions. • Our use-case: build a channel for RPC ! ! ! ! !
  • 32. REDIS
  • 33. Redis caching and storing key-values Redis is an open source, BSD licensed, advanced key-value cache and store. ! Possible clients: • http://redisdesktop.com/ • Redis-Cli ! ! ! ! !
  • 34. Redis caching and storing key-values Redis Data Examples ! ! Keys Values ! ! ! ! page:index.html —> <html><head>[...] <— String count —> 898 <— int plan9_pixel_free —> {{1,2}, {3,4}, …} <— SET user_1 —> points=>10, socket_id=>9392 <— HASH ids —-> [1,2,3,4,5] <— LIST plan9_highscores —> user_1=>5, user_2=>10 <— Sorted Set
  • 35. STORM
  • 36. STORM It’s like Hadoop, but for Real-Time! Hadoop is cutting-edge and old-school at the same time • Relatively low / early stage adoption of Hadoop in Germany • Batch-processing becomes increasingly painful for the business operations • Storm enables new ways to approach business problems ! Before Storm • Real-time processing using a network of queues and workers • Lot’s of config, diversity, complicated fault-tolerance, unintuitive to scale • Hard to reason about system state, hard to fix failures
  • 37. STORM It’s like Hadoop, but for Real-Time! Storm to the Rescue! • Abstraction of a queue/worker network ! • Like Hadoop MapReduce, but for message streams • few core primitives, programming-language agnostic ! • Easy to scale, just add machines and increase parallelism settings • Strong guarantees: each message is processed (“exactly once” possible w/ Trident) • Explicit project goal: painless cluster management • Fault-tolerant: tasks will be reassigned if parts break, computation is always continuous
  • 38. SOLUTION ARCHITECTURE Lambda Architecture The Real-Time Big Data Architecture Named by Nathan Marz, the creator of Storm. http://lambda-architecture.net/ ! Example: Count tweets per #hashtag 1. Tweets come in from Persistent Queue 2. Trident Topology to (A) save all data to Hadoop & (B) update Trident State with counts for current day 3. Trident Topology triggers Hadoop to compute the counts on “all” raw data 4. Push the Hadoop result to database 5. Trident Timeline Query via DRPC http://www.datasalt.com/2013/01/an-example-lambda-architecture-using-trident- hadoop-and-splout-sql/ https://github.com/pereferrera/trident-lambda-splout
  • 39. COMPETITION? Storm vs. S4 vs. Samza Yahoo Samoa Apache Spark Streaming Amazon Kinesis Google BigQuery for Streams
  • 41. CONCEPTS Tuple A tuple is one single “message” - List (Java ArrayList to be precise) of Objects (= different data) - A tuple has a “schema” known to storm, but not part of the message
  • 42. CONCEPTS Stream A “stream” is an unbounded sequence of tuples - The “stream” is the core abstraction construct within storm - “Storm transforms streams into new streams” - Storm components can consume and produce multiple different streams - Tuples in a single stream can be handled differently based on a key - All tuples in a single stream must follow the same “schema”
  • 43. CONCEPTS Spout A spout is a source of streams - A spout is one of the core components of storm - Spouts can be implemented in PHP, node.js, etc. We’ll see that later. - Data comes from an outside infinite source, not triggered by storm events - A single spout can emit multiple streams with different schemas !
  • 44. CONCEPTS Bolt A bolt is a worker process - A bolt is the second core component of storm - We’ll implement bolts later. - A bolt consumes one or more streams. These can use multiple schemas. - A bolt emits zero or more streams. - A bolt can produce side effects. For instance, a database update. !
  • 45. CONCEPTS Topology A topology is a network comprised of spouts and bolts. - A topology represents a “storm program”. - Storm cluster executes and manages multiple topologies. - All code for one topology is packaged into a single file. - The graph representing a single topology can be partitioned.
  • 46. CONCEPTS Stream Grouping Stream Groupings partition *one* stream among the tasks of *one* target bolt. • Shuffle grouping: Random, each task gets the amount of tuples. • Fields grouping: Fields from a tuple can be used as key. Tuples with the same key, will always go to the same task. • All grouping: Every tuple goes to every task. “Use this grouping with care.” !
  • 47. CONJURING DAEMONS Storm Cluster Setup
  • 48. CONJURING DAEMONS Overview Storm Cluster. Hello World. NIMBUS (“Jobtracker”) ! ZOOKEEPER DRPC SUPERVISOR (“Tasktracker”) UI LOGVIEWER SUPERVISOR (“Tasktracker”) … SUPERVISOR (“Tasktracker”) W W W W W W W W W W W W
  • 49. STORM The Nuts and Bolts
  • 51.
  • 52.
  • 54.
  • 55.
  • 57.
  • 58. RELIABILITY Guaranteed Message Processing Storm guarantees that each message coming off a spout will be fully processed. It might, however, be processed multiple times (more on that in a minute). ! And it requires some work by the user. == You can configure the level of guarantee. ! !
  • 59. RELIABILITY Guaranteed Message Processing Meet the mighty Tuple Tree. Example from: https://github.com/nathanmarz/storm/wiki/Guaranteeing-message-processing ! ! ! SDHell Spout: 1 Tuple Split Bolt: 6 Tuples Total: 13 Tuples Count Bolt: 6 Tuples
  • 60. RELIABILITY Guaranteed Message Processing “Fully processed” means the whole tuple tree has been processed. This considers a tuple that was produced by a spout. ! A tuple is considered failed when its tree of messages fails to be fully processed within a specified timeout. Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS – This timeout can be configured on a topology-specific basis. – Defaults to 30 seconds.
  • 62. WE’RE HERE Roadmap - Part 03 Viewing Code • Let’s go inside the kittens and see how Sf2 plays with Storm. ! Deploy • Bring some changes into the game.
  • 64. Symfony2 + Storm PHP Bolts
  • 65. Symfony2 + Storm PHP Bolts Configuration and Execution by Sf2 Storm Bundle • Each Bolt has a command -> To be executable by Storm • Each Bolt has a configuration -> storm.yml • Whole Sf2 universe is accessible in Storm • Bolts implement storm.php abstract class BasicBolt • Storm MultilangProtocol works on STDIN and STDOUT • A bolt waits for Tuples on STDIN • -> while(true) to wait for input on STDIN • -> If input -> process unit stop word end • write something to Redis • Badges run in Topologies
  • 66. Symfony2 + Storm PHP Bolts PHP in Storm StatusLevelTopology • Using MultilangBolt to execute Bolt implemented in PHP • Decide by config which level to send • all configuration from storm.yml • Create queue subscribed to plan9 exchange for routing key • Do the business logic • Push message to plan9-backchannel !
  • 68. Deploying the PHP Bolts Phar archives for the win StatusLevelBolt • Change storm.yml config (points for status) • Add new configuration to the phar • Build the jar • deploy to the „cluster“ ! !
  • 69. Deploying the PHP Bolts Phar archives for the win Environments • Environment could become hhvm as well (not provided in the vm) ! !
  • 71. WE’RE HERE Roadmap - Part 04 Badge Development • Create your own plan9 idea. • Implement a bolt with game logic. • Play around with the dev environment. • Play the game. • Create a pull request for the plan9 repo. ! !
  • 73. WheelOfKittenBolt Tick-Tuples for the start Tick-Tuple based randomized point addition/substraction named WheelOfKittenBolt ! • Requirements: • Read the Plan9 points tuple stream • Aggregate the generated points for each user • If the user has earned more then 10 points: become active • After a certain interval: • Inform the user (by badge) about the result of the KittenCasinoLuckyWheel’s result • Play the wheel (Randomize the choose of a predefined list with actions) • „Payout“ -> For example: 10% off, 20% off, 100 points more, Update status level… • Reset the point counter and become active if the user earned his/her next points
  • 74. WheelOfKittenBolt Tick-Tuples for the start Tick-Tuple based randomized point addition/substraction named KittenCasinoLuckyWheelBolt • Implement the PHP component • Copy the EmptyTickTupleBolt.php • Copy the EmptyTickTupleBoltCommand.php • Do Configuration.php stuff • Do storm.yml stuff • Do services.xml stuff • Add new bolt in ./update_phar.sh • Create the WheelOfKittenTopology from DeludedKittenRobbersTopology • Replace things in the Topology • run build.sh • Execute the jar / Play the game. Check if Badges come
  • 75. Cold hops Schorle, finally!
  • 76. PLAN9 FROM OUTER KITTEN - ONLINE! Project Links Tutorial https://github.com/DECK36/plan9_workshop_tutorial ! PHP Web App https://github.com/DECK36/deck36-php-web-app ! Node.js API Backend https://github.com/DECK36/deck36-api-backend ! Storm Backend for PHP https://github.com/DECK36/deck36-storm-backend-php
  • 77. PLAN9 FROM OUTER KITTEN - ONLINE! Further Links Further Links http://storm.incubator.apache.org/ ! https://storm.incubator.apache.org/documentation/Multilang-protocol.html ! http://lambda-architecture.net/ ! http://www.datasalt.com/2013/01/an-example-lambda-architecture-using-trident-hadoop- and-splout-sql/ ! https://github.com/pereferrera/trident-lambda-splout
  • 80.
  • 81. TRIDENT STATE Persistent Topology State
  • 82.