SlideShare a Scribd company logo
1 of 28
Stringee - Communication APIs
for Voice, Video, Chat, SMS and Customer Service Software
Dau Ngoc Huy
Founder & CEO
huy@stringee.com
ARCHITECTURE & TECHNOLOGY
#1 Overview
Stringee is a Communication Platform
which provides:
✓ APIs for Voice, Video, Chat, SMS and
Contact Center
✓ Customer service software
About us
Stringee
Call APIs
Stringee
Chat APIs
Stringee
SMS APIs
Stringee
Video Conference
APIs
Stringee Programmable Contact Center APIs
StringeeX - Contact Center platform
APIs
Complete
Software
#2 Technology Technologies in use
Programing languages
• Server: C/C++, Java, PHP
• Client: Objective-C, C/C++, Java, HTML 5, JavaScript (Vuejs)
Protocols
• SIP 2.0, RTP
• Signaling: custom protocol
Database
• MySQL
• Solr (Apache Lucene), Redis, Memcached,…
Message broker
• RabbitMQ, Apache Kafka
#4 Kiến trúc
#3 System Architecture
#3.1 Stringee Call API Architecture
Outbound call flow
#4 Luồng callout
Stringee Call API Architecture
#4 Luồng callout
1. Stringee Server: Run Stringee's main functions:
• Authenticate
• Process call scenarios by processing SCCO (record call, play file, connect app-to-app/app-to-phone/..., record
voicemail)
• Run chat functions (chat 1-1, chat group)
• Write CDR/reporting
• Send events to event_url
• …
2. Push Server: Wakes apps up to receive calls
3. Daemon Server: Run periodic tasks: Block accounts after trial expired, send emails, task remind,…
4. Charging Server: Realtime billing, monitor limits, block/stop calls due to invalid account balance
5. Media Server: Communicate with Telcos, process transcoding media,…
6. api.stringee.com: Receive REST API requests from developers to run: stop call, transfer call, download recorded file,...
7. ICE Server: Connect client-apps using STUN/TURN protocol, for client-apps to make App-to-App calls(get public IP, NAT
traversal)
#7 Năng lực
#3.2 Stringee PCC API Architecture
PCC modules
PCC modules
1. ICC Server:
• Process IVR tree: Play messages in nodes accordingly, connect to Queue,…
• Process Queues, find available Agent to receive calls
• Bring callers back to Queue when assigned Agent does not pick up the call
• …
2. icc-api.stringee.com:
• Allow developers creating IVR trees/nodes/keypresses..., Queue,… through REST APIs
• Empty cache on ICC Server
• …
#4 High Availability/Load Balancing
#4 HA/LB
High Availability
• The design has no dead spots, all modules run at least on 2 different physical nodes
• The modules have a PING mechanism allow them to Ping each other, ensuring that
when one node dies, the call will not be distributes to dead node
Load balancing
• Modules are designed to expand horizontally easily
• Adding/deleting nodes does not require system restart
We designed our system to be an Active-Active Cluster for High Availability
Client connect
Stringee Server
node_1
Stringee Server
node_2
Stringee Server
node_3
DNS Server
Client
A DNS query n1.stringee.com
n1.stringee.com=6.6.6.1
n1.stringee.com=6.6.6.1
n2.stringee.com=6.6.6.2
Try connect and authenticate
Response
{list_servers: ["n1.stringee.com:6789", "n2.stringee.com:6789"]}
Client connect to failed node
Stringee Server
node_1
Stringee Server
node_2
Stringee Server
node_3
DNS Server
Client
A DNS query n1.stringee.com
n1.stringee.com=6.6.6.1
n1.stringee.com=6.6.6.1
n2.stringee.com=6.6.6.2
Try connect and authenticate
{list_servers: ["n1.stringee.com:6789", "n2.stringee.com:6789"]}
X
A DNS query n2.stringee.com
n2.stringee.com=6.6.6.2
Try connect and authenticate
Authentication flow
Stringee Server
node_1
Stringee Server
node_2
Client 1 Client 2
Redis Server
client_1: node_1
client_2: node_2
Handle connections
from multiple devices
Stringee Server
node_1
Stringee Server
node_2
Client 1
(device 1)
Client 1
(device 2)
Redis Server
client_1: node_1
checkAndSet(client_1, node_1)
result(“OK”, “node_1”)
checkAndSet(client_1, node_2)
result(“FAIL”, “node_1”)
https://redis.io/topics/transactions#cas
X
Call/Chat flow
Stringee Server
node_1
Stringee Server
node_2
Client 1 Client 2
Redis Server
client_1: node_1
client_2: node_2
getUserLocation(client_2)
node_2
Stringee Server <==> Charging Server
Stringee Server
node_1
Stringee Server
node_2
Charging Server
node_1
Charging Server
node_2
Physical server 1 Physical server 2
Ping Stringee Servers
Ping Concurrent Calls
Ping Charging Servers
#4 HA/LB
Same configuration for other server pairs
• Stringee Server <> Push Server
• Stringee Server <> Media Server
• Stringee Server <> ICC Server
REST & HTTP Servers
HAProxy
node_1
api.stringee.com
node_1
Physical server 1 Physical server 2
api.stringee.com
node_2
HAProxy
node_2
keepalived
node_1
Developer Server
VIP IP: 6.6.6.3 keepalived
node_2
DNS Server
api.stringee.com = 6.6.6.3
Thank you!
#7 Năng lực

More Related Content

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

The Architecture and Technologies backed Stringee - a system serving 40 million users

  • 1. Stringee - Communication APIs for Voice, Video, Chat, SMS and Customer Service Software Dau Ngoc Huy Founder & CEO huy@stringee.com ARCHITECTURE & TECHNOLOGY
  • 2. #1 Overview Stringee is a Communication Platform which provides: ✓ APIs for Voice, Video, Chat, SMS and Contact Center ✓ Customer service software About us
  • 3. Stringee Call APIs Stringee Chat APIs Stringee SMS APIs Stringee Video Conference APIs Stringee Programmable Contact Center APIs StringeeX - Contact Center platform APIs Complete Software
  • 4. #2 Technology Technologies in use Programing languages • Server: C/C++, Java, PHP • Client: Objective-C, C/C++, Java, HTML 5, JavaScript (Vuejs) Protocols • SIP 2.0, RTP • Signaling: custom protocol Database • MySQL • Solr (Apache Lucene), Redis, Memcached,… Message broker • RabbitMQ, Apache Kafka
  • 5. #4 Kiến trúc #3 System Architecture
  • 6. #3.1 Stringee Call API Architecture
  • 9. Stringee Call API Architecture
  • 11. 1. Stringee Server: Run Stringee's main functions: • Authenticate • Process call scenarios by processing SCCO (record call, play file, connect app-to-app/app-to-phone/..., record voicemail) • Run chat functions (chat 1-1, chat group) • Write CDR/reporting • Send events to event_url • … 2. Push Server: Wakes apps up to receive calls 3. Daemon Server: Run periodic tasks: Block accounts after trial expired, send emails, task remind,… 4. Charging Server: Realtime billing, monitor limits, block/stop calls due to invalid account balance 5. Media Server: Communicate with Telcos, process transcoding media,… 6. api.stringee.com: Receive REST API requests from developers to run: stop call, transfer call, download recorded file,... 7. ICE Server: Connect client-apps using STUN/TURN protocol, for client-apps to make App-to-App calls(get public IP, NAT traversal)
  • 13. #3.2 Stringee PCC API Architecture
  • 16. 1. ICC Server: • Process IVR tree: Play messages in nodes accordingly, connect to Queue,… • Process Queues, find available Agent to receive calls • Bring callers back to Queue when assigned Agent does not pick up the call • … 2. icc-api.stringee.com: • Allow developers creating IVR trees/nodes/keypresses..., Queue,… through REST APIs • Empty cache on ICC Server • …
  • 18. #4 HA/LB High Availability • The design has no dead spots, all modules run at least on 2 different physical nodes • The modules have a PING mechanism allow them to Ping each other, ensuring that when one node dies, the call will not be distributes to dead node Load balancing • Modules are designed to expand horizontally easily • Adding/deleting nodes does not require system restart We designed our system to be an Active-Active Cluster for High Availability
  • 19. Client connect Stringee Server node_1 Stringee Server node_2 Stringee Server node_3 DNS Server Client A DNS query n1.stringee.com n1.stringee.com=6.6.6.1 n1.stringee.com=6.6.6.1 n2.stringee.com=6.6.6.2 Try connect and authenticate Response {list_servers: ["n1.stringee.com:6789", "n2.stringee.com:6789"]}
  • 20. Client connect to failed node Stringee Server node_1 Stringee Server node_2 Stringee Server node_3 DNS Server Client A DNS query n1.stringee.com n1.stringee.com=6.6.6.1 n1.stringee.com=6.6.6.1 n2.stringee.com=6.6.6.2 Try connect and authenticate {list_servers: ["n1.stringee.com:6789", "n2.stringee.com:6789"]} X A DNS query n2.stringee.com n2.stringee.com=6.6.6.2 Try connect and authenticate
  • 21. Authentication flow Stringee Server node_1 Stringee Server node_2 Client 1 Client 2 Redis Server client_1: node_1 client_2: node_2
  • 22. Handle connections from multiple devices Stringee Server node_1 Stringee Server node_2 Client 1 (device 1) Client 1 (device 2) Redis Server client_1: node_1 checkAndSet(client_1, node_1) result(“OK”, “node_1”) checkAndSet(client_1, node_2) result(“FAIL”, “node_1”) https://redis.io/topics/transactions#cas X
  • 23. Call/Chat flow Stringee Server node_1 Stringee Server node_2 Client 1 Client 2 Redis Server client_1: node_1 client_2: node_2 getUserLocation(client_2) node_2
  • 24. Stringee Server <==> Charging Server Stringee Server node_1 Stringee Server node_2 Charging Server node_1 Charging Server node_2 Physical server 1 Physical server 2 Ping Stringee Servers Ping Concurrent Calls Ping Charging Servers
  • 25. #4 HA/LB Same configuration for other server pairs • Stringee Server <> Push Server • Stringee Server <> Media Server • Stringee Server <> ICC Server
  • 26. REST & HTTP Servers HAProxy node_1 api.stringee.com node_1 Physical server 1 Physical server 2 api.stringee.com node_2 HAProxy node_2 keepalived node_1 Developer Server VIP IP: 6.6.6.3 keepalived node_2 DNS Server api.stringee.com = 6.6.6.3
  • 27.