Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PRESENTED BY: 
Karl Anderson 
Work in Progress
#kazoocon14 
Presenters 
I’m Karl Anderson! 
Chief Technology Officer at 2600hz
#kazoocon14 
What Shall We 
Talk About?
#kazoocon14 
I Dream of what Kazoo will be… 
How are we getting there 
What We’ve Done 
What We’re Working On 
Where We’re...
#kazoocon14 
What We’ve Done 
Past 12 Months in Summary
#kazoocon14 
Highlights 
Some of the highlights 
Bugs & Improvement in dependencies 
Installation 
Monster UI 
Provisioner...
#kazoocon14 
Bugs & Improvements 
in dependencies
#kazoocon14
#kazoocon14 
Kamailio 
db_kazoo 
Significant work by Luis 
Far more powerful and flexible 
Addresses prior deficiencies
#kazoocon14 
Kamailio 
if(kazoo_query("callevt", $var(routing_key), $var(request))) { 
$du = $(kzR{kz.json,Switch-URL}); 
...
#kazoocon14 
Kamailio 
Version 4.2+ will include the Kazoo modules! 
Community requested rename 
db_kazoo -> kazoo 
After ...
#kazoocon14 
Kamailio 
This work was important! Why? 
Paves the way for “smart” routing 
Route to the best media server 
C...
#kazoocon14 
Kamailio 
But wait, there’s more! 
• Enhanced BLF 
• We can now XXX ??  Karl 
• Other Advanced SIP Routing L...
#kazoocon14
#kazoocon14 
FreeSWITCH 
Customizations submitted upstream! 
Working with the FreeSWITCH team 
After acceptance our own ka...
#kazoocon14 
FreeSWITCH 
Fixed implementation issue with Erlang Interface 
Primarily affected large ring-groups 
status = ...
#kazoocon14 
FreeSWITCH 
Look forward to… 
Round-robin channel events 
Full duplex eCallMgr connections 
Mod_verto?
#kazoocon14 
./install_kazoo
#kazoocon14 
Kazoo Install 
Alot of work going into automating 
and improving the install process 
ISO 
Installation is NO...
Kazoo Install 
Kazoo Installer Script is the brains of the install 
#kazoocon14 
Available bundled in the ISO 
Current, al...
#kazoocon14 
Kazoo Install
#kazoocon14 
Kazoo Install
#kazoocon14 
Kazoo Install
#kazoocon14 
Kazoo Install 
Look forward to… 
Offline capabilities 
Improved help 
Smarter support for cluster deployment
#kazoocon14 
Kazoo Install 
Kamailio and FreeSWITCH 
Already have cross-platform support 
They already generate RPMs and 
...
#kazoocon14 
Monster UI
#kazoocon14 
Monster UI 
Released! 
Account Manager 
Number Manager 
Smart PBX 
Webhooks 
PBX Connector
#kazoocon14 
Monster UI 
Carrier App
#kazoocon14 
Monster UI
#kazoocon14 
Monster UI
#kazoocon14 
Monster UI 
We are creating a community app store 
Unleash the monster!
#kazoocon14 
Monster UI 
Look forward to… 
Carriers App 
Branding App 
User Portal 
Operator Console 
Callflow App
#kazoocon14 
Provisioner
#kazoocon14 
Provisioner 
We’ve split Provisioner into three concepts: 
Back-end of Provisioner. 
APIs and configuration g...
#kazoocon14 
Provisioner 
Progress! 
Improved template engine 
Added support for TFTP and HTTPS 
Moved to file-based provi...
#kazoocon14 
Provisioner 
Why not improve the old provisioner? 
The old provisioner is in a scary state 
We thought dynami...
Provisioner 
We will be decommissioning the old provisioner 
#kazoocon14 
as soon as possible. 
We will also be moving to ...
#kazoocon14 
Provisioner 
Look forward too… 
Enhanced security 
More makes and models 
Advanced firmware support 
End-user...
#kazoocon14 
Project Phonebook
#kazoocon14 
Project Phonebook 
Unifies phone number management 
Aggregates multiple service providers 
One API set. All c...
#kazoocon14 
Project Phonebook 
Benefits 
Significantly faster number searches 
Support for contiguous numbers 
Much large...
#kazoocon14 
Project Phonebook 
Look forward to… 
Easy number acquisition 
The largest number pool in the US 
Fully automa...
#kazoocon14 
Internationalization
#kazoocon14 
Internationalization 
Supporting Kazoo installs internationally 
has been a learning experience. 
Differing P...
#kazoocon14 
Internationalization 
Still more to be done 
Date/Time Formats 
Currency Differences 
Differing rules for eme...
#kazoocon14 
Internationalization 
Kazoo presents some unique challenges. 
We support multiple zones 
Zones of a cluster a...
Internationalization 
Google has an awesome library for handling phone 
#kazoocon14 
numbers world-wide. 
Libphonenumber 
...
#kazoocon14 
Kazoo PHP SDK
#kazoocon14 
Kazoo PHP SDK 
Easier to use 
More APIs are supported 
More efficient 
Highly extensible
#kazoocon14 
Kazoo PHP SDK 
<?php 
require_once "vendor/autoload.php"; 
$options = array('base_url' => 'http://kazoo-cross...
#kazoocon14 
Kazoo PHP SDK 
Look forward to… 
Complete API support 
Datatype casting from JSON schema 
Iteratiable validat...
#kazoocon14 
Screen Pop
#kazoocon14 
Screen Pop 
Big Thanks to Kirill! 
Support for major platforms 
Can be linked to any CRM 
Lots of convenience...
#kazoocon14 
Screen Pop
#kazoocon14 
Screen Pop 
Look forward to… 
No configuration downloads 
User profile management 
Enhanced user customizatio...
#kazoocon14 
What We’ve Done
#kazoocon14 
What We’ve Done 
There’s so much more. 
We only have so much time 
Come see me after if you have more questio...
#kazoocon14 
What We’re Working On
#kazoocon14 
What We’re Working On 
Statistics & Performance
#kazoocon14 
What We’re Working On 
Statistics 
We need deep insight into the system. 
And so do you. 
SNMP Support Across...
#kazoocon14 
What We’re Working On 
Federation
#kazoocon14 
What We’re Working On 
Allows separate isolated zones 
to operate as a single cluster. 
Loosely coupled highl...
#kazoocon14 
What We’re Working On 
Federation has been code complete 
for a little while now! 
It needs testing 
There wi...
#kazoocon14 
What We’re Working On 
True Class 4 / 5 Hybrid
#kazoocon14 
What We’re Working On 
With our changes to Kamailio, we now can 
finally achieve a true Class 4 & 5 Hybrid. 
...
#kazoocon14 
What We’re Working On 
Build & Release 
Transparency
#kazoocon14 
What We’re Working On 
Customers and community members want more 
transparency into changes and features 
We ...
#kazoocon14 
What We’re Working On 
Database Upgrades & 
Performance Improvements
#kazoocon14 
What We’re Working On 
Moving to Apache CouchDB 1.7.X 
Cloudant re-integration code complete 
No existing mig...
#kazoocon14 
What We’re Working On
#kazoocon14 
What We’re Working On 
We are looking into replacing CouchBeam 
This is an internal library that handles all ...
#kazoocon14 
What We’re Working On 
Look forward to… 
Overall system performance improvements 
Many couch improvements 
Ac...
#kazoocon14
#kazoocon14 
Where We’re Going 
To a pool party!!!
#kazoocon14 
Where We’re Going 
Project Pool Party
#kazoocon14 
Where We’re Going 
Small Computers 
+ Low Power 
+ Massive Distribution 
= Big Possibilities
#kazoocon14 
Where We’re Going 
Moar Phonebook
#kazoocon14 
Where We’re Going 
We will continue to enhance project phonebook. 
International Number Inventory 
Cost contr...
#kazoocon14 
Where We’re Going 
International Coverage
Where We’re Going 
We will begin reaching out with all engineering 
and engagement programs internationally. 
#kazoocon14 ...
#kazoocon14 
Kazoo Hosted
#kazoocon14 
Kazoo Hosted 
Hardware updates 
Monster UI 
Deploy updated Kamailio 
Adding email to fax and Google Printer 
...
#kazoocon14 
Kazoo Hosted 
Look forward to… 
Monster UI 
New provisioner 
Websockets 
SRV/DNS records 
Cluster expansion
#kazoocon14 
Contributing
#kazoocon14 
Contributing 
Test tools 
Documentation 
Fork/pull (github) 
Community Scripts 
Build! 
Couch DB dump
#kazoocon14 
... ........ 
......+OO=.. 
....IOOOO8?...... 
.:O,.8OO8OO7...... 
..IO.~OOOOO8O.. .. 
...O8.OOOOOOO8~... .. ...
Thank You! 
#kazoocon14
Upcoming SlideShare
Loading in …5
×

KazooCon 2014 - Kazoo Scalability

4,407 views

Published on

KazooCon 2014 - Kazoo Scalability

  1. 1. PRESENTED BY: Karl Anderson Work in Progress
  2. 2. #kazoocon14 Presenters I’m Karl Anderson! Chief Technology Officer at 2600hz
  3. 3. #kazoocon14 What Shall We Talk About?
  4. 4. #kazoocon14 I Dream of what Kazoo will be… How are we getting there What We’ve Done What We’re Working On Where We’re Going
  5. 5. #kazoocon14 What We’ve Done Past 12 Months in Summary
  6. 6. #kazoocon14 Highlights Some of the highlights Bugs & Improvement in dependencies Installation Monster UI Provisioner Project Phonebook Internationalization
  7. 7. #kazoocon14 Bugs & Improvements in dependencies
  8. 8. #kazoocon14
  9. 9. #kazoocon14 Kamailio db_kazoo Significant work by Luis Far more powerful and flexible Addresses prior deficiencies
  10. 10. #kazoocon14 Kamailio if(kazoo_query("callevt", $var(routing_key), $var(request))) { $du = $(kzR{kz.json,Switch-URL}); } event_route[kazoo:consumer-event-presence-update] { kazoo_pua_publish($kzE); pres_refresh_watchers("$(kzE{kz.json,From})", "$(kzE{kz.json,Event-Package})", 1 ); }
  11. 11. #kazoocon14 Kamailio Version 4.2+ will include the Kazoo modules! Community requested rename db_kazoo -> kazoo After release we will depreciate kazoo-kamailio We will simply use the public Kamailio RPMs This work allows us to update kazoo-kamailio Shortly kazoo-kamailio bump to version 4.1.6
  12. 12. #kazoocon14 Kamailio This work was important! Why? Paves the way for “smart” routing Route to the best media server Call processing Kamailio roles Improves performance dramatically Especially for features requiring redirects Call Park, Park Pickup, Call Pickup, etc.
  13. 13. #kazoocon14 Kamailio But wait, there’s more! • Enhanced BLF • We can now XXX ??  Karl • Other Advanced SIP Routing Logic • SIP MESSAGE support • Etc.
  14. 14. #kazoocon14
  15. 15. #kazoocon14 FreeSWITCH Customizations submitted upstream! Working with the FreeSWITCH team After acceptance our own kazoo-freeswitch RPM will be deprecated
  16. 16. #kazoocon14 FreeSWITCH Fixed implementation issue with Erlang Interface Primarily affected large ring-groups status = ei_xreceive_msg_tmo(ei_node->nodefd, &received_msg->msg, &received_msg->buf, globals.receive_timeout );
  17. 17. #kazoocon14 FreeSWITCH Look forward to… Round-robin channel events Full duplex eCallMgr connections Mod_verto?
  18. 18. #kazoocon14 ./install_kazoo
  19. 19. #kazoocon14 Kazoo Install Alot of work going into automating and improving the install process ISO Installation is NOT just for a single server Helps us with QA also! Build Server Automation Auto-pushing and versioning packages repo.2600hz.com updates RPMs & Packages re-organized
  20. 20. Kazoo Install Kazoo Installer Script is the brains of the install #kazoocon14 Available bundled in the ISO Current, always up-to-date net installer Can be a stand-alone installer Can be a stand-alone configuration tool With support for cluster configuration
  21. 21. #kazoocon14 Kazoo Install
  22. 22. #kazoocon14 Kazoo Install
  23. 23. #kazoocon14 Kazoo Install
  24. 24. #kazoocon14 Kazoo Install Look forward to… Offline capabilities Improved help Smarter support for cluster deployment
  25. 25. #kazoocon14 Kazoo Install Kamailio and FreeSWITCH Already have cross-platform support They already generate RPMs and Thanks to this work, we now have our sights on supporting other operating systems.
  26. 26. #kazoocon14 Monster UI
  27. 27. #kazoocon14 Monster UI Released! Account Manager Number Manager Smart PBX Webhooks PBX Connector
  28. 28. #kazoocon14 Monster UI Carrier App
  29. 29. #kazoocon14 Monster UI
  30. 30. #kazoocon14 Monster UI
  31. 31. #kazoocon14 Monster UI We are creating a community app store Unleash the monster!
  32. 32. #kazoocon14 Monster UI Look forward to… Carriers App Branding App User Portal Operator Console Callflow App
  33. 33. #kazoocon14 Provisioner
  34. 34. #kazoocon14 Provisioner We’ve split Provisioner into three concepts: Back-end of Provisioner. APIs and configuration generation SmartPBX / Provisioner Integration When adding a phone, it’s provisioned w/ defaults Advanced Provisioner We expose everything we can It’s not intuitive, but it is powerful
  35. 35. #kazoocon14 Provisioner Progress! Improved template engine Added support for TFTP and HTTPS Moved to file-based provisioning from dynamic Added timezone support Added limited BLF support Tested Kazoo feature defaults
  36. 36. #kazoocon14 Provisioner Why not improve the old provisioner? The old provisioner is in a scary state We thought dynamically updating configs would be a nice feature. That was a mistake. Any software rollouts which introduce a bug have the capability of knocking ALL provisioned phones on the system offline.
  37. 37. Provisioner We will be decommissioning the old provisioner #kazoocon14 as soon as possible. We will also be moving to SRV records. Instead of primary/secondary proxies More industry standard at this point Phones are removing primary/secondary options
  38. 38. #kazoocon14 Provisioner Look forward too… Enhanced security More makes and models Advanced firmware support End-user provisioning
  39. 39. #kazoocon14 Project Phonebook
  40. 40. #kazoocon14 Project Phonebook Unifies phone number management Aggregates multiple service providers One API set. All carriers.
  41. 41. #kazoocon14 Project Phonebook Benefits Significantly faster number searches Support for contiguous numbers Much larger number pool Support for vanity numbers
  42. 42. #kazoocon14 Project Phonebook Look forward to… Easy number acquisition The largest number pool in the US Fully automated porting
  43. 43. #kazoocon14 Internationalization
  44. 44. #kazoocon14 Internationalization Supporting Kazoo installs internationally has been a learning experience. Differing Phone Number Formats Both routing and displaying them in the GUI GUI Languages Prompt Languages API errors Differing timezones and changing DST rules
  45. 45. #kazoocon14 Internationalization Still more to be done Date/Time Formats Currency Differences Differing rules for emergency services Differing procedures for Porting But it is now usable outside the United States!
  46. 46. #kazoocon14 Internationalization Kazoo presents some unique challenges. We support multiple zones Zones of a cluster are in different countries Had to find a way to allow different processing mechanisms system-wide This is why E.164 is so important!!! REQUIRES conversions on the way in and out A lot of people are used to cheating here!
  47. 47. Internationalization Google has an awesome library for handling phone #kazoocon14 numbers world-wide. Libphonenumber Used by Android and other tools Erlang port available! We are looking to integrate it into the porject
  48. 48. #kazoocon14 Kazoo PHP SDK
  49. 49. #kazoocon14 Kazoo PHP SDK Easier to use More APIs are supported More efficient Highly extensible
  50. 50. #kazoocon14 Kazoo PHP SDK <?php require_once "vendor/autoload.php"; $options = array('base_url' => 'http://kazoo-crossbar-url:8000'); $authToken = new KazooAuthTokenUser('username', 'password', 'sip.realm'); $sdk = new KazooSDK($authToken, $options); $filter = array('filter_priv_level' => 'admin'); $users = $sdk->Account()->Users($filter); foreach ($users as $element) { $admin = $element->fetch(); $admin->require_password_update = true; $admin->save(); }
  51. 51. #kazoocon14 Kazoo PHP SDK Look forward to… Complete API support Datatype casting from JSON schema Iteratiable validation exceptions Support for realtime events (webhooks/websockets)
  52. 52. #kazoocon14 Screen Pop
  53. 53. #kazoocon14 Screen Pop Big Thanks to Kirill! Support for major platforms Can be linked to any CRM Lots of convenience options A great sample of WebSockets
  54. 54. #kazoocon14 Screen Pop
  55. 55. #kazoocon14 Screen Pop Look forward to… No configuration downloads User profile management Enhanced user customizations
  56. 56. #kazoocon14 What We’ve Done
  57. 57. #kazoocon14 What We’ve Done There’s so much more. We only have so much time Come see me after if you have more questions or specific things of interest!
  58. 58. #kazoocon14 What We’re Working On
  59. 59. #kazoocon14 What We’re Working On Statistics & Performance
  60. 60. #kazoocon14 What We’re Working On Statistics We need deep insight into the system. And so do you. SNMP Support Across the Board Dashboard with call completion statistics For us, and partners, too! In Monster! QA Automation & Simulations Including AUTOMATIC load testing
  61. 61. #kazoocon14 What We’re Working On Federation
  62. 62. #kazoocon14 What We’re Working On Allows separate isolated zones to operate as a single cluster. Loosely coupled highly cohesive Reduces load significantly Increases scalability dramatically Provides isolation
  63. 63. #kazoocon14 What We’re Working On Federation has been code complete for a little while now! It needs testing There will be edge cases We welcome community contributions here
  64. 64. #kazoocon14 What We’re Working On True Class 4 / 5 Hybrid
  65. 65. #kazoocon14 What We’re Working On With our changes to Kamailio, we now can finally achieve a true Class 4 & 5 Hybrid. Class 4 is just “proxy/switching” Class 5 is features and media handling
  66. 66. #kazoocon14 What We’re Working On Build & Release Transparency
  67. 67. #kazoocon14 What We’re Working On Customers and community members want more transparency into changes and features We are working hard to make this a reality, but this is new territory for us Better tickets, better release notes and other automated build mechanisms are in the works!
  68. 68. #kazoocon14 What We’re Working On Database Upgrades & Performance Improvements
  69. 69. #kazoocon14 What We’re Working On Moving to Apache CouchDB 1.7.X Cloudant re-integration code complete No existing migration No apparent zone support Once packages are available kazoo-bigcouch will be deprecated.
  70. 70. #kazoocon14 What We’re Working On
  71. 71. #kazoocon14 What We’re Working On We are looking into replacing CouchBeam This is an internal library that handles all database communication Replacing it would lead to performance increase EVERYWHERE Provide application awareness to database connectors
  72. 72. #kazoocon14 What We’re Working On Look forward to… Overall system performance improvements Many couch improvements Active development Support for R16B+
  73. 73. #kazoocon14
  74. 74. #kazoocon14 Where We’re Going To a pool party!!!
  75. 75. #kazoocon14 Where We’re Going Project Pool Party
  76. 76. #kazoocon14 Where We’re Going Small Computers + Low Power + Massive Distribution = Big Possibilities
  77. 77. #kazoocon14 Where We’re Going Moar Phonebook
  78. 78. #kazoocon14 Where We’re Going We will continue to enhance project phonebook. International Number Inventory Cost control mechanisms Smarter search routines
  79. 79. #kazoocon14 Where We’re Going International Coverage
  80. 80. Where We’re Going We will begin reaching out with all engineering and engagement programs internationally. #kazoocon14 Why? Well, world domination, clearly. (More importantly… because people have asked us to)
  81. 81. #kazoocon14 Kazoo Hosted
  82. 82. #kazoocon14 Kazoo Hosted Hardware updates Monster UI Deploy updated Kamailio Adding email to fax and Google Printer Cluster expansion
  83. 83. #kazoocon14 Kazoo Hosted Look forward to… Monster UI New provisioner Websockets SRV/DNS records Cluster expansion
  84. 84. #kazoocon14 Contributing
  85. 85. #kazoocon14 Contributing Test tools Documentation Fork/pull (github) Community Scripts Build! Couch DB dump
  86. 86. #kazoocon14 ... ........ ......+OO=.. ....IOOOO8?...... .:O,.8OO8OO7...... ..IO.~OOOOO8O.. .. ...O8.OOOOOOO8~... .. . ...I8=,8OOOO8OO=........ ....$O.:8OOOOOOO?....... ... .8O.OOO8OOOOO8...... .....7O8.ZOOOOOO8O8,.... .. ...88I.8OOOOOOOO8:.... ....:OO7,OOOOOOOOOO:... .=OO,$8OOOOOOOO8Z... ..$O8.=OOOOOOOOO8O,....... ...O8O.ZOOOOOOOO8OO,...... ...OO8.$OO8OOOOOO8O:..... ...?OOO.8OOOOOOOOO8O$... .. ....8OOO.OOOOOOOOOOOO$.... . . . .....8OO7,8OOOOOOOOOO88......... . ...OO8:,OOOOOOOOOOO88..... . . ... +8OO++OOOOOOOOOOO88,..... ......~8O8.:OOOOOOOOOOOOO.. .. ...OO88,$OOOOOOOOOOOOO?... ..8OO8.OOOOOOOOOOOO8O+.... ..... ..:88O8.OOOOOOOOOOOOOO+............... ...,OOOO.OOOOOOOOOOOOO88.:O8OO8O:..... ...+OO88.O8OOOOOOOOOO8:Z8OOIIO8O8.... .....OO8O.8OOOOOOOOOZ+:8OO8~...=OOZ.. ....:O88O.8OOOOOOOO?.?8OOO88~...8O:. ......$OOOO.OOOOOOO.O.$O8O8O8O:..~8D. . ..?OOO?.8OOOO~.8,+OOI:OOO8...7O.. . ..ZOOOZ,8OOO..8+,OO...8OO...:O: .. ...7OO8~.8O8,.88.8O:..8O8:..,8+... .. .ZOOO+,OOO.$8~OOOOOOOO~..+8I.. .....8OOO,=88$:88,8O8OO88...8O,. .....OOO8.,OO=8OZ.O8OO8...8O8.. . ......OOO8.I8OZ7O8.8OO?~O8O8,... . . ..$OO8.~OOOOOO.+OO88O?... ...88OZ.=OOOOO88:....,..... ...8OO8.OOOOOOOOOOOOOO... ....ZOO7.?8OOO8OOOOOOO+.. ....?OO$.=8OOOOOOOOOOO~... .......,OO8.,OO8OOOOOOOO8:.. ..... ~OO+.+88OOOOOOOOOO....... ........=8O$.IOOOOOOOOOOOO... .. ....OO=.~8OOOOOOOOOO8. . .....OO,.78OOOOOOOO8O7.... ... .O8+.~OOOOOOOOOO7.... .......D8..+OOOOOOOOO..... . ... .?8~.OOOOO8O8...... ...... .?8:.?8OO8+....... . . ....8..I$........ . .. ............ . ....
  87. 87. Thank You! #kazoocon14

×