EFL	  Munich	                                                February	  2013	  Copyright	  Push	  Technology	  2012	  
•  Distributed	  Systems	  /	  HPC	  guy.	                                                   	                            ...
Conversa[onal	                                                  Big	  Data	                                               ...
Big	  Data.	  The	  most	  important	  V	  is	                                         Value.	  •  4Vs:	  •       Volume	 ...
Connect	  all	  the	  things	  Copyright	  Push	  Technology	  2012	  
An	  Internet	  Minute	                                                               10k,	  1ms	     1k,	  100us	  Copyri...
The	  Last	  Mile	  is	  HARD	                                Buffer	                                Bloat	                ...
Conversa[ons	  M2M	                                                                        M2H	         Tradi[onal	  Messa...
Tradi[onal	  Messaging	                                                A                                              B   ...
Invented	  yonks	  ago…	  Before	  the	  InterWebs	  For	  ‘reliable’	  networks	  For	  machine	  to	  machine	  Remember...
When	  fallacies	  were	  simple	                - The	  network	  is	  reliable	                - Latency	  is	  zero	  	...
Then	  in	  1992,	  this	  happened:	  The	  phrase	  ‘surfing	  the	  internet’	  was	  coined	  by	  Jean	  Poly.	  	  Fi...
It	  grew,	  and	  it	  grew	  Copyright	  Push	  Technology	  2012	  
Then	  in	  2007,	  this	  happened:	  The	        god	  phone:	  	  Surfing	  died.	  Touching	  happened.	  	  Second	  b...
Then	  in	  2007,	  this	  happened:	  So	  we	  took	  all	  the	  things	  and	  put	  them	  in	  the	  internet:	  	  ...
Then	  in	  2007,	  this	  happened:	  And	  it	  grew	  and	  it	  grew.	  	  Like	  all	  the	  good	  things	  do.	    ...
So	  we	  scaled	  all	  the	  things	  Big	  data	  is	  fundamentally	  about	  extrac[ng	  value,	  understanding	     ...
But,	  problem:	  The	  bird,	  basically.	               Immediately	  Inconsistent.	               But,	  Eventually	  C...
Stop.	               - The	  network	  is	  not	  reliable	  	                              nor	  is	  it	  cost	  free.	 ...
Look.	               - What	  and	  How	  are	  what	  geeks	  do.	               - Why	  gets	  you	  paid	              ...
Listen.	               - 	  Every	  nuance	  comes	  with	  a	  set	  of	  tradeoffs.	               - 	  Choosing	  the	  ...
Ac[on:	  Data	  Distribu[on	  Messaging	  remixed	  around:	  	  Relevance 	  -­‐ 	  Queue	  depth	  for	  conflatable	  da...
Ac[on.	  Virtualize	  Client	  Queues	                                                A                                   ...
Ac[on.	  Add	  data	  caching	                                                A                                           ...
Ac[on.	  Exploit	  data	  structure	                                                A                                     ...
Ac[on.	  Behaviors	                                                A                                              B       ...
Ac[on.	  Structural	  Confla[on	                                                A                                          ...
Ac[on.	  Structural	  Confla[on	  [EEP]	                                           C2       A2   C1   B1   A1   op         ...
Implement	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  Client	  J	  Copyright	  Push	  Technology	  2012	  
Example	  Diffusion	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  Client	       Backend	  to	  Basho’s	  Lager	  logging	  –	...
Benchmark	  Driven	                                                  Development	                                         ...
Performance	  is	  not	  a	  number	  Copyright	  Push	  Technology	  2012	  
Benchmark	  Models	                                                Box A                              Box B            Thr...
Throughput.	  Non-­‐conflated	                                                  •    Cold	  start	  server	                ...
Throughput.	  Non-­‐conflated	                                                  •     What	  the	  ‘client’	  sees	        ...
Throughput.	  Replace-­‐conflated	                                                •     Cold	  start	  server	             ...
Throughput.	  Replace-­‐Conflated	                                                •     What	  the	  ‘client’	  sees	      ...
Throughput.	  Stats	  •  Data	  /	  (Data	  +	  Overhead)?	     •  1.09	  GB/Sec	  payload	  at	  satura[on.	  	     •  10...
Latency	  (Best	  case)	                                                                    •     Cold	  start	  server	  ...
Latency.	  Round	  Trip	  Stats	                                                                      •    Sub-­‐milliseco...
Latency.	  Single	  Hop	  Stats	                                                                        •    Sub	  500	   ...
Latency	  in	  perspec[ve	                                                                                           ~    ...
Embedded	                                                  Event	                                                Processin...
CEP,	  basically	                                                                  w w               S                    ...
Aggregate	  Func[ons	                                                What	  is	  an	  aggregate	  func*on?	               ...
Aggregate	  Func[on	  Example	  Copyright	  Push	  Technology	  2012	  
Tumbling	  Windows	                           x()             x()           x()         x()                               ...
Tumbling	  Windows	  Copyright	  Push	  Technology	  2012	  
Sliding	  Windows	  -­‐	  O(Long	  Story)	  init()                   1                 2                 3           4    ...
Compensa[ng	  Aggregates	  init()                    1                 2               3    4    5                        ...
Sliding	  Windows.	  Copyright	  Push	  Technology	  2012	  
Periodic	  Windows	                           x()             x()     x()        x()                                      ...
Periodic	  Windows	  Copyright	  Push	  Technology	  2012	  
Monotonic	  Windows	                                                                            my                        ...
Monotonic	  Windows	  Copyright	  Push	  Technology	  2012	  
EEP	  looking	  forward?	          •         Migrate	  windows	  from	  simple	  processes	  to	  gen_server.	          • ...
•  Thank	  you	  for	  listening	  to,	  having	  me	                                                  	                  ...
Upcoming SlideShare
Loading in …5
×

EFL Munich - February 2013 - "Conversational Big Data with Erlang"

2,214 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,214
On SlideShare
0
From Embeds
0
Number of Embeds
293
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

EFL Munich - February 2013 - "Conversational Big Data with Erlang"

  1. 1. EFL  Munich   February  2013  Copyright  Push  Technology  2012  
  2. 2. •  Distributed  Systems  /  HPC  guy.     •  Chief  Scien*st  :-­‐  at  Push  Technology   •  Alumnus  of  :-­‐       Motorola,  IONA,  BeOair,  JPMC,  StreamBase.   •  School:  Trinity  College  Dublin.     -­‐  BA  (Mod).  Comp.  Sci.+     -­‐  M.Sc.  Networks  &  Distributed  Systems       •  Responds  to:  Guinness,  Whisky   About  me?  Copyright  Push  Technology  2012   Darach@PushTechnology.com  
  3. 3. Conversa[onal   Big  Data   with    Copyright  Push  Technology  2012  
  4. 4. Big  Data.  The  most  important  V  is   Value.  •  4Vs:  •  Volume   •  “It’s  the  connec[ons  •  Velocity   that  ma`er  most”    •  Variety   -­‐  David  Evans,  Cisco  •  Variability  Copyright  Push  Technology  2012  
  5. 5. Connect  all  the  things  Copyright  Push  Technology  2012  
  6. 6. An  Internet  Minute   10k,  1ms   1k,  100us  Copyright  Push  Technology  2012  
  7. 7. The  Last  Mile  is  HARD   Buffer   Bloat   Network   Ba`ery!   Satura[on   Download  Bandwidth   30.00   20.00   Expected  (Mbps)   10.00   Download  (Mbps)   0.00   Sep-­‐06   -­‐10.00   Oct-­‐06   Oct-­‐06   Nov-­‐06   Dec-­‐06   Dec-­‐06   Jan-­‐07   Feb-­‐07   Latency  1.00E+00  1.00E+01   y  =  -­‐1.1667x  +  45703   Latency  (ms)  1.00E+02   R²  =  0.02496   Expected  (ms)  1.00E+03   Linear  (Latency  (ms))  1.00E+04   Sep-­‐06   Oct-­‐06   Oct-­‐06   Nov-­‐06   Dec-­‐06   Dec-­‐06   Jan-­‐07   Feb-­‐07   Copyright  Push  Technology  2012  
  8. 8. Conversa[ons  M2M   M2H   Tradi[onal  Messaging   Bidirec[onal  Real   MQTT,  AMQP   Time  Data  Distribu[on   WebSockets   W3C  Server  Sent   Events  Copyright  Push  Technology  2012  
  9. 9. Tradi[onal  Messaging   A B ba bb Producers ? ConsumersPros   Cons  •  Loosely  coupled.   •  No  data  model.  Slinging  blobs  •  All  you  can  eat  messaging  pa`erns   •  Fast  producer,  slow  consumer?  Ouch.  •  Familiar   •  No  data  ‘smarts’.  A  blob  is  a  blob.  Copyright  Push  Technology  2012  
  10. 10. Invented  yonks  ago…  Before  the  InterWebs  For  ‘reliable’  networks  For  machine  to  machine  Remember  DEC  Message  Queues?  -­‐  That  basically.  Vomit!  Copyright  Push  Technology  2012  
  11. 11. When  fallacies  were  simple   - The  network  is  reliable   - Latency  is  zero     - Bandwidth  is  infinite   - There  is  one  administrator   - Topology  does  not  change   - The  network  is  secure   - Transport  cost  is  zero   - The  network  is  homogeneous     Copyright  Push  Technology  2012  
  12. 12. Then  in  1992,  this  happened:  The  phrase  ‘surfing  the  internet’  was  coined  by  Jean  Poly.    First  SMS  sent    First  base.  Copyright  Push  Technology  2012  
  13. 13. It  grew,  and  it  grew  Copyright  Push  Technology  2012  
  14. 14. Then  in  2007,  this  happened:  The   god  phone:    Surfing  died.  Touching  happened.    Second  base  unlocked.  Copyright  Push  Technology  2012  
  15. 15. Then  in  2007,  this  happened:  So  we  took  all  the  things  and  put  them  in  the  internet:    Cloud  happened.    So  we  could  touch  all  the  things.   Messaging     Apps  They  grew  and  they  grew  like  all  the   Hardware   good  things  do.   Virtualize  all  the  things   Services   Skills,   Special[es  Copyright  Push  Technology  2012  
  16. 16. Then  in  2007,  this  happened:  And  it  grew  and  it  grew.    Like  all  the  good  things  do.   Messaging   Apps   Hardware   Virtualize  all  the  things   Services   Skills,   Special[es  Copyright  Push  Technology  2012  
  17. 17. So  we  scaled  all  the  things  Big  data  is  fundamentally  about  extrac[ng  value,  understanding   implica[ons,  gaining  insight  so  we  can   learn  and  improve  con[nuously.    It’s  nothing  new.   big   DATA  Copyright  Push  Technology  2012  
  18. 18. But,  problem:  The  bird,  basically.   Immediately  Inconsistent.   But,  Eventually  Consistent   …  Maybe.     Humans   Are   grumpy   IIBECMCopyright  Push  Technology  2012  
  19. 19. Stop.   - The  network  is  not  reliable     nor  is  it  cost  free.   - Latency  is  not  zero   nor  is  it  a  democracy.   - Bandwidth  is  not  infinite   nor  predictable  especially  the  last  mile!   - There  is  not  only  one  administrator   trust,  rela[onships  are  key   - Topology  does  change   It  should,  however,  converge  eventually   - The  network  is  not  secure   nor  is  the  data  that  flows  through  it   - Transport  cost  is  not  zero   but  what  you  don’t  do  is  free   - The  network  is  not  homogeneous   nor  is  it  smart  Copyright  Push  Technology  2012  
  20. 20. Look.   - What  and  How  are  what  geeks  do.   - Why  gets  you  paid   - Business  Value  and  Trust  dictate  What  and  How   -   Policies,  Events  and  Content  implements  Business  Value   - Science  basically.  But  think  like  a  carpenter:   - Measure  twice.  Cut  once.  Copyright  Push  Technology  2012  
  21. 21. Listen.   -   Every  nuance  comes  with  a  set  of  tradeoffs.   -   Choosing  the  right  ones  can  be  hard,  but  it  pays  off.   -   Context,  Environment  are  cri[cal   -   Break  all  the  rules,  one  benchmark  at  a  [me.     -   Benchmark  Driven  Development  Copyright  Push  Technology  2012  
  22. 22. Ac[on:  Data  Distribu[on  Messaging  remixed  around:    Relevance  -­‐  Queue  depth  for  conflatable  data  should  be  0  or  1.  No  more    Responsiveness  -­‐  Use  HTTP/REST  for  things.  Stream  the  li`le  things    Timeliness  -­‐  It’s  rela[ve.  M2M  !=  M2H.    Context    -­‐  Packed  binary,  deltas  mostly,  snapshot  on  subscribe.    Environment-­‐  Don’t  send  1M  1K  events  to  a  mobile  phone  with  0.5mbps.    Copyright  Push  Technology  2012  
  23. 23. Ac[on.  Virtualize  Client  Queues   A B ba bb Buffer Producers Bloat Consumers Nuance:  Client  telemetry.  Tradeoff:  Durable  subscrip[ons  harder  Copyright  Push  Technology  2012  
  24. 24. Ac[on.  Add  data  caching   A B ba x bb x Producers Is it a Consumers cache? One  hop  closer  to  the  edge  …  Copyright  Push  Technology  2012  
  25. 25. Ac[on.  Exploit  data  structure   A B Snapshot Delta ba x bb x Producers State! Consumers Snapshot  recovery.  Deltas  or  Changes  mostly.  Conserves  bandwidth  Copyright  Push  Technology  2012  
  26. 26. Ac[on.  Behaviors   A B ba x bb x X The Producers topic is Consumers the cloud! Extensible.  Nuance?  Roll  your  own  protocols.  Tradeoff?  3rd  party  code  in  the  engine  :/  Copyright  Push  Technology  2012  
  27. 27. Ac[on.  Structural  Confla[on   A B ba x bb x X Producers Current Consumers data! + Ensures  only  current  +  consistent  data  is  distributed.  Ac[vely  soaks  up  bloat.  Extensible!  Copyright  Push  Technology  2012  
  28. 28. Ac[on.  Structural  Confla[on  [EEP]   C2 A2 C1 B1 A1 op Cop Bop Aop ... ... C2 A2 C1 B1 A1 R C2 B1 A2 Current   5 4 3 2 1 5 1 4 Current   C2 A2 C1 B1 A1 M+ C2 B1 A+ +     5 4 3 2 1 8 1 5 Consistent   = = C2 + C1 A2 + A1 = = 5+3 4+1Replace   Merge  •  Replace/Overwrite  ‘A1’  with  ‘A2’   •  Merge  A1,  A2  under  some  opera[on.  •  ‘Current  data  right  now’   •  Opera[on  is  pluggable  •  Fast   •  Tunable  consistency   •  Performance  f(opera[on)  Copyright  Push  Technology  2012  
  29. 29. Implement                                Client  J  Copyright  Push  Technology  2012  
  30. 30. Example  Diffusion                              Client   Backend  to  Basho’s  Lager  logging  –  Stream  log  events  for  near  real-­‐[me  analysis  …  Copyright  Push  Technology  2012  
  31. 31. Benchmark  Driven   Development     ‘Measuring  Value’  Copyright  Push  Technology  2012  
  32. 32. Performance  is  not  a  number  Copyright  Push  Technology  2012  
  33. 33. Benchmark  Models   Box A Box B Throughput  (Worst  case)   Latency  (Best  case)   •  Ramp  clients  con[nuously   •  Really  simple.  1  client   •  100  messages  per  second  per  client   •  Ping  –  Pong.  Measure  RTT  [me.   •  Payload:  125  ..  2000  bytes   •  Payload:  125  ..  2000  bytes   •  Message  style  vs  with  confla[on  Copyright  Push  Technology  2012  
  34. 34. Throughput.  Non-­‐conflated   •  Cold  start  server   •  Ramp  750  clients  ‘simultaneously’  at  5   second  intervals   •  5  minute  benchmark  dura[on   •  Clients  onboarded  linearly  un[l  IO   (here)  or  compute  satura[on  occurs.     •  What  the  ‘server’  sees  Copyright  Push  Technology  2012  
  35. 35. Throughput.  Non-­‐conflated   •  What  the  ‘client’  sees     •  At  and  beyond  satura[on  of  some   resource?   •  Things  break!     •  New  connec[ons  fail.  Good.   •  Long  established  connec[ons  ok.   •  Recent  connec[ons  [meout  and  client   connec[ons  are  dropped.  Good.   •  Diffusion  handles  smaller  message   sizes  more  gracefully     •  Back-­‐pressure  ‘waveform’  can  be   tuned  out.  Or,  you  could  use  structural   confla[on!  Copyright  Push  Technology  2012  
  36. 36. Throughput.  Replace-­‐conflated   •  Cold  start  server     •  Ramp  750  clients  ‘simultaneously’  at  5   second  intervals     •  5  minute  benchmark  dura[on   •  Clients  onboarded  linearly  un[l  IO   (here)  or  compute  satura[on  occurs.     •  Takes  longer  to  saturate  than  non-­‐ conflated  case     •  Handles  more  concurrent  connec[ons     •  Again,  ‘server’  view  Copyright  Push  Technology  2012  
  37. 37. Throughput.  Replace-­‐Conflated   •  What  the  ‘client’  sees     •  Once  satura[on  occurs  Diffusion   adapts  ac[vely  by  degrading  messages   per  second  per  client     •  This  is  good.  Soak  up  the  peaks   through  fairer  distribu[on  of  data.     •  Handles  spikes  in  number  of   connec[ons,  volume  of  data  or   satura[on  of  other  resources  using  a   single  load  adap[ve  mechanism  Copyright  Push  Technology  2012  
  38. 38. Throughput.  Stats  •  Data  /  (Data  +  Overhead)?   •  1.09  GB/Sec  payload  at  satura[on.     •  10Ge  offers  theore[c  of  1.25GB/Sec.   •  Ballpark  87.2%  of  traffic  represents  business  data.  •  Benefits?   •  Op[mize  for  business  value  of  distributed  data.   •  Most  real-­‐world  high-­‐frequency  real-­‐[me  data  is   recoverable   •  Stock  prices,  Gaming  odds   •  Don’t  use  confla[on  for  transac[onal  data,  natch!  Copyright  Push  Technology  2012  
  39. 39. Latency  (Best  case)   •  Cold  start  server     •  1  solitary  client     •  5  minute  benchmark  dura[on   •  Measure  ping-­‐pong  round  trip  [me     •  Results  vary  by  network  card  make,   model,  OS  and  Diffusion  tuning.  Copyright  Push  Technology  2012  
  40. 40. Latency.  Round  Trip  Stats   •  Sub-­‐millisecond  at   the  99.99%   percen[le   •  As  low  as  15   microseconds   •  On  average   significantly  sub   100  microseconds   for  small  data  Copyright  Push  Technology  2012  
  41. 41. Latency.  Single  Hop  Stats   •  Sub  500   microseconds  at   the  99.99%   percen[le   •  As  low  as  8   microseconds   •  On  average   significantly  sub  50   microseconds  for   small  data  Copyright  Push  Technology  2012  
  42. 42. Latency  in  perspec[ve   ~ ~ 125 1000 bytes bytes (avg) (avg) 2.4 us 5.0 us 8.0 us 50.0 us•  2.4  us.  A  tuned  benchmark  in  C  with  low  latency  10Ge  NIC,  with  kernel   bypass,  with  FPGA  accelera[on  •  5.0  us.  A  basic  java  benchmark  –  as  good  as  it  gets  in  java  •  Diffusion  is  measurably  ‘moving  to  the  le{’  release  on  release  •  We’ve  been  ac[vely  tracking  and  con[nuously  improving  since  4.0  Copyright  Push  Technology  2012  
  43. 43. Embedded   Event   Processing  Copyright  Push  Technology  2012  
  44. 44. CEP,  basically   w w S C Q w w What  is  eep.erl?   •  Add  aggregate  func[ons  and  window  opera[ons  to  Erlang   •  Separate  context  (window)  from  computa[on  (aggregate  fn)   •  4  window  types:  tumbling,  sliding,  periodic,  monotonic   •  Process  oriented.   •  Fast  enough.  J  Copyright  Push  Technology  2012  
  45. 45. Aggregate  Func[ons   What  is  an  aggregate  func*on?   •  A  func[on  that  computes  values  over  events.   •  The  cost  of  calcula[ons  are  ammor[zed  per  event   •  Just  follow  the  above  recipe   •  Example:  Aggregate  2M  events  (equity  prices),  send  to  GPU   on  emit,  receive  2M  op[ons  put/call  prices  as  a  result.  Copyright  Push  Technology  2012  
  46. 46. Aggregate  Func[on  Example  Copyright  Push  Technology  2012  
  47. 47. Tumbling  Windows   x() x() x() x() emit() x() x() x() x() emit() 1 2 3 4 x() x() x() x() emit() 2 3 4 5init() 2 3 4 5 init() init() t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 ... What  is  a  tumbling  window?   •  Every  N  events,  give  me  an  average  of  the  last  N  events   •  Does  not  overlap  windows   •  ‘Closing’  a  window,  ‘Emits’  a  result  (the  average)   •  Closing  a  window,  Opens  a  new  window   Copyright  Push  Technology  2012  
  48. 48. Tumbling  Windows  Copyright  Push  Technology  2012  
  49. 49. Sliding  Windows  -­‐  O(Long  Story)  init() 1 2 3 4 5 .. .. .. .. x() 1 2 3 4 .. .. .. .. x() 1 2 3 .. .. .. .. x() 1 2 .. .. .. .. t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 ... What  is  a  sliding  window?   •  Like  tumbling,  except  can  overlap.  But  O(N2),  Keep  N  small.   •  Every  event  opens  a  new  window.   •  A{er  N  events,  every  subsequent  event  emits  a  result.   •  Like  all  windows,  cost  of  calcula[on  amor[zed  over  events   Copyright  Push  Technology  2012  
  50. 50. Compensa[ng  Aggregates  init() 1 2 3 4 5 .. .. .. .. x() 1 2 3 4 .. .. .. .. do { x() 1 2 3 … .. .. .. .. } while (…) x() 1 2 .. .. .. .. 1 compensate() t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 ... Copyright  Push  Technology  2012  
  51. 51. Sliding  Windows.  Copyright  Push  Technology  2012  
  52. 52. Periodic  Windows   x() x() x() x() emit() x() x() x() x() emit() 1 2 3 4 x() x() x() x() emit() 2 3 4 5init() 2 3 4 5 init() init() t0 t1 t2 t3 ... What  is  a  periodic  window?   •  Driven  by  ‘wall  clock  [me’  in  milliseconds   •  Not  monotonic,  natch.  Beware  of  NTP   Copyright  Push  Technology  2012  
  53. 53. Periodic  Windows  Copyright  Push  Technology  2012  
  54. 54. Monotonic  Windows   my my my x() x() x() x() emit() x() x() x() x() emit() 1 2 3 4 x() x() x() x() emit() 2 3 4 5init() 2 3 4 5 init() init() t0 t1 t2 t3 ... What  is  a  monotonic  window?   •  Driven  mad  by  ‘wall  clock  [me’?  Need  a  logical  clock?   •  No  worries.  Provide  your  own  clock!  Eg.  Vector  clock   Copyright  Push  Technology  2012  
  55. 55. Monotonic  Windows  Copyright  Push  Technology  2012  
  56. 56. EEP  looking  forward?   •  Migrate  windows  from  simple  processes  to  gen_server.   •  Extract  library  (no  process  /  message  passing  overhead).   •  Consider  NIFs  for  performance  cri[cal  sec[ons.   •  Consider  na[ve  aggregate  func[ons.   •  Consider  alterna[ve  to  gen_event  for  interfacing   •  Streams  /  Pipes?  Hey,  shoot  me,  but  I  like  Node.js  Streams/Pipes.   •  Add  more  func[ons.   •  Add  more  languages   •  Node.js  EEP  –  h`ps://github.com/darach/eep-­‐js     •  React/PHP  EEP  -­‐  h`ps://github.com/ianbarber/eep-­‐php    Copyright  Push  Technology  2012  
  57. 57. •  Thank  you  for  listening  to,  having  me     •  Le  twi`er:  @darachennis     •  EEP  in  Erlang  /  PHP  /  Node.js:       h`ps://github.com/darach/eep-­‐erl   •  h`ps://github.com/ianbarber/eep-­‐php     h`ps://github.com/darach/eep-­‐js     •  Push  Technology’s  Diffusion  product  now   supports  Erlang  Clients  too.     [Alpha,  ping  me  if  interested,  email  below]     PROMO  CODE:   ENNI100   Ques[ons?  Copyright  Push  Technology  2012   Darach@PushTechnology.com  

×