Alternatives to XMPP logo

Alternatives to XMPP

MQTT, Firebase, WebRTC, Socket.IO, and SignalR are the most popular alternatives and competitors to XMPP.
69
0

What is XMPP and what are its top alternatives?

XMPP, also known as Jabber, is an open-source communication protocol that enables real-time messaging, presence information, and contact list maintenance. It is decentralized and federated, allowing users to communicate across different servers. Key features of XMPP include security through end-to-end encryption, multi-platform compatibility, and support for various extensions. However, XMPP has limitations such as a lack of built-in video conferencing capabilities and a complex server setup process.

  1. Matrix: Matrix is an open network for secure, decentralized communication that offers real-time messaging, voice, and video calls. It supports end-to-end encryption, bridging capabilities, and integration with other communication platforms. Compared to XMPP, Matrix provides a more modern and seamless user experience but may require more resources for server infrastructure.
  2. Signal: Signal is a privacy-focused messaging app that offers end-to-end encryption, voice and video calls, and self-destructing messages. It provides a high level of security and privacy compared to XMPP but lacks the decentralization and server customization options of XMPP.
  3. Wire: Wire is a secure messaging platform that offers end-to-end encryption, voice and video calls, and file sharing. It provides a polished user interface and collaboration features but may not be as customizable as XMPP in terms of server setup and extensions.
  4. Rocket.Chat: Rocket.Chat is an open-source team communication platform that offers real-time messaging, video conferencing, and screen sharing. It supports self-hosting options for server deployment and customization but may require more technical knowledge compared to XMPP.
  5. Telegram: Telegram is a cloud-based messaging app with end-to-end encryption, self-destructing messages, and group chats. It provides a user-friendly interface and extensive bot integration but lacks the decentralized and federated nature of XMPP.
  6. Tox: Tox is a peer-to-peer messaging platform that offers end-to-end encryption, voice and video calls, and file sharing. It provides a high level of privacy and security but may not have as many built-in features and extensions as XMPP.
  7. Riot.im: Riot.im is a decentralized, open-source messaging app built on the Matrix protocol. It offers end-to-end encryption, cross-platform support, and integration with other communication platforms. Compared to XMPP, Riot.im provides a more streamlined user experience but may require more server resources.
  8. Zulip: Zulip is an open-source team chat platform that offers threaded conversations, file sharing, and integrations with other tools. It provides a unique conversation threading feature but may not be as customizable as XMPP in terms of server setup and extensions.
  9. Jitsi Meet: Jitsi Meet is an open-source video conferencing platform that supports end-to-end encryption, screen sharing, and chat functionality. It provides a user-friendly interface and integration with various communication platforms but may not offer as many features as XMPP for text messaging.
  10. Keybase: Keybase is a secure messaging and file sharing platform that offers end-to-end encryption, secure group chats, and integration with social media accounts. It provides a high level of security and privacy but may not have the same level of customization and extensibility as XMPP.

Top Alternatives to XMPP

  • MQTT
    MQTT

    It was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium. ...

  • Firebase
    Firebase

    Firebase is a cloud service designed to power real-time, collaborative applications. Simply add the Firebase library to your application to gain access to a shared data structure; any changes you make to that data are automatically synchronized with the Firebase cloud and with other clients within milliseconds. ...

  • WebRTC
    WebRTC

    It is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple JavaScript APIs. The WebRTC components have been optimized to best serve this purpose. ...

  • Socket.IO
    Socket.IO

    It enables real-time bidirectional event-based communication. It works on every platform, browser or device, focusing equally on reliability and speed. ...

  • SignalR
    SignalR

    SignalR allows bi-directional communication between server and client. Servers can now push content to connected clients instantly as it becomes available. SignalR supports Web Sockets, and falls back to other compatible techniques for older browsers. SignalR includes APIs for connection management (for instance, connect and disconnect events), grouping connections, and authorization. ...

  • Slack
    Slack

    Imagine all your team communication in one place, instantly searchable, available wherever you go. That’s Slack. All your messages. All your files. And everything from Twitter, Dropbox, Google Docs, Asana, Trello, GitHub and dozens of other services. All together. ...

  • MySQL
    MySQL

    The MySQL software delivers a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. MySQL Server is intended for mission-critical, heavy-load production systems as well as for embedding into mass-deployed software. ...

  • PostgreSQL
    PostgreSQL

    PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. ...

XMPP alternatives & related posts

MQTT logo

MQTT

613
571
7
A machine-to-machine Internet of Things connectivity protocol
613
571
+ 1
7
PROS OF MQTT
  • 3
    Varying levels of Quality of Service to fit a range of
  • 2
    Lightweight with a relatively small data footprint
  • 2
    Very easy to configure and use with open source tools
CONS OF MQTT
  • 1
    Easy to configure in an unsecure manner

related MQTT posts

Kindly suggest the best tool for generating 10Mn+ concurrent user load. The tool must support MQTT traffic, REST API, support to interfaces such as Kafka, websockets, persistence HTTP connection, auth type support to assess the support /coverage.

The tool can be integrated into CI pipelines like Azure Pipelines, GitHub, and Jenkins.

See more
Shared insights
on
MQTTMQTTReductStoreReductStore

You can use ReductStore to keep a history of MQTT messages by using its Client SDKs. This can be useful if you use a binary format for your data and it can be recorded in a classical TSDB. You can set a FIFO quota for a bucket in your ReductStore instance so that the database removes old MQTT messages when the limit is reached.

See more
Firebase logo

Firebase

41K
35.1K
2K
The Realtime App Platform
41K
35.1K
+ 1
2K
PROS OF FIREBASE
  • 371
    Realtime backend made easy
  • 270
    Fast and responsive
  • 242
    Easy setup
  • 215
    Real-time
  • 191
    JSON
  • 134
    Free
  • 128
    Backed by google
  • 83
    Angular adaptor
  • 68
    Reliable
  • 36
    Great customer support
  • 32
    Great documentation
  • 25
    Real-time synchronization
  • 21
    Mobile friendly
  • 19
    Rapid prototyping
  • 14
    Great security
  • 12
    Automatic scaling
  • 11
    Freakingly awesome
  • 8
    Super fast development
  • 8
    Angularfire is an amazing addition!
  • 8
    Chat
  • 6
    Firebase hosting
  • 6
    Built in user auth/oauth
  • 6
    Awesome next-gen backend
  • 6
    Ios adaptor
  • 4
    Speed of light
  • 4
    Very easy to use
  • 3
    Great
  • 3
    It's made development super fast
  • 3
    Brilliant for startups
  • 2
    Free hosting
  • 2
    Cloud functions
  • 2
    JS Offline and Sync suport
  • 2
    Low battery consumption
  • 2
    .net
  • 2
    The concurrent updates create a great experience
  • 2
    Push notification
  • 2
    I can quickly create static web apps with no backend
  • 2
    Great all-round functionality
  • 2
    Free authentication solution
  • 1
    Easy Reactjs integration
  • 1
    Google's support
  • 1
    Free SSL
  • 1
    CDN & cache out of the box
  • 1
    Easy to use
  • 1
    Large
  • 1
    Faster workflow
  • 1
    Serverless
  • 1
    Good Free Limits
  • 1
    Simple and easy
CONS OF FIREBASE
  • 31
    Can become expensive
  • 16
    No open source, you depend on external company
  • 15
    Scalability is not infinite
  • 9
    Not Flexible Enough
  • 7
    Cant filter queries
  • 3
    Very unstable server
  • 3
    No Relational Data
  • 2
    Too many errors
  • 2
    No offline sync

related Firebase posts

Stephen Gheysens
Lead Solutions Engineer at Inscribe · | 14 upvotes · 1.8M views

Hi Otensia! I'd definitely recommend using the skills you've already got and building with JavaScript is a smart way to go these days. Most platform services have JavaScript/Node SDKs or NPM packages, many serverless platforms support Node in case you need to write any backend logic, and JavaScript is incredibly popular - meaning it will be easy to hire for, should you ever need to.

My advice would be "don't reinvent the wheel". If you already have a skill set that will work well to solve the problem at hand, and you don't need it for any other projects, don't spend the time jumping into a new language. If you're looking for an excuse to learn something new, it would be better to invest that time in learning a new platform/tool that compliments your knowledge of JavaScript. For this project, I might recommend using Netlify, Vercel, or Google Firebase to quickly and easily deploy your web app. If you need to add user authentication, there are great examples out there for Firebase Authentication, Auth0, or even Magic (a newcomer on the Auth scene, but very user friendly). All of these services work very well with a JavaScript-based application.

See more
Eugene Cheah

For inboxkitten.com, an opensource disposable email service;

We migrated our serverless workload from Cloud Functions for Firebase to CloudFlare workers, taking advantage of the lower cost and faster-performing edge computing of Cloudflare network. Made possible due to our extremely low CPU and RAM overhead of our serverless functions.

If I were to summarize the limitation of Cloudflare (as oppose to firebase/gcp functions), it would be ...

  1. <5ms CPU time limit
  2. Incompatible with express.js
  3. one script limitation per domain

Limitations our workload is able to conform with (YMMV)

For hosting of static files, we migrated from Firebase to CommonsHost

More details on the trade-off in between both serverless providers is in the article

See more
WebRTC logo

WebRTC

322
531
6
A free, open project that provides browsers and mobile applications with Real-Time Communications
322
531
+ 1
6
PROS OF WEBRTC
  • 3
    OpenSource
  • 2
    No Download
  • 1
    You can write anything around it, because it's a protoc
CONS OF WEBRTC
    Be the first to leave a con

    related WebRTC posts

    Hello. So, I wanted to make a decision on whether to use WebRTC or Amazon Chime for a conference call (meeting). My plan is to build an app with features like video broadcasting, and the ability for all the participants to talk and chat. I have used Agora's web SDK for video broadcasting, and Socket.IO for chat features. As I read the comparison between Amazon Chime and WebRTC, it further intrigues me on what I should use given my scenario? Is there any way that so many related technologies could be a hindrance to the other? Any advice would be appreciated. Thanks. Ritwik Neema

    See more
    joseph zeiad

    I am trying to implement video calling in a React Native app through Amazon Kinesis. But I was unlucky to find anything related to this on the web. Do you have any example code I can use? or any tutorial? If not, how easy is it to bridge the native library to RN? And what should I use WebRTC or Amazon Chime?? Thanks

    See more
    Socket.IO logo

    Socket.IO

    13.2K
    10.8K
    776
    Realtime application framework (Node.JS server)
    13.2K
    10.8K
    + 1
    776
    PROS OF SOCKET.IO
    • 219
      Real-time
    • 143
      Node.js
    • 141
      Event-based communication
    • 102
      Open source
    • 102
      WebSockets
    • 26
      Binary streaming
    • 21
      No internet dependency
    • 10
      Large community
    • 6
      Push notification
    • 5
      Ease of access and setup
    • 1
      Test
    CONS OF SOCKET.IO
    • 12
      Bad documentation
    • 4
      Githubs that complement it are mostly deprecated
    • 3
      Doesn't work on React Native
    • 2
      Small community
    • 2
      Websocket Errors

    related Socket.IO posts

    dagim debebe

    Hi,

    I am a student and a junior developer who is a graduating candidate in comp sci major. I am about to start building my final year project which is a real-time messaging application for software developers to Enhance Knowledge Exchange and Problem Solving. It is mainly a chat application with more enhanced features. I am planning to use React and React Native for the frontend and cross-platform mobile apps, Node.js and ExpressJS for the backend, GraphQL for fetching and manipulating data from the backend and PostgreSQL for the database, and finally Socket.IO for the real-time chatting and communication. I would highly appreciate it if anyone here with experience in building similar apps to tell me if I made a good choice or suggest better tech stacks.

    Thanks in advance.

    See more
    across_the_grid
    Full-stack web developer · | 10 upvotes · 422K views
    Shared insights
    on
    Socket.IOSocket.IONode.jsNode.jsExpressJSExpressJS

    I use Socket.IO because the application has 2 frontend clients, which need to communicate in real-time. The backend-server handles the communication between these two clients via websockets. Socket.io is very easy to set up in Node.js and ExpressJS.

    In the research project, the 1st client shows panoramic videos in a so called cave system (it is the VR setup of our research lab, which consists of three big screens, which are specially arranged, so the user experience the videos more immersive), the 2nd client controls the videos/locations of the 1st client.

    See more
    SignalR logo

    SignalR

    494
    1.2K
    146
    A new library for ASP.NET developers that makes developing real-time web functionality easy.
    494
    1.2K
    + 1
    146
    PROS OF SIGNALR
    • 32
      Supports .NET server
    • 25
      Real-time
    • 18
      Free
    • 16
      Fallback to SSE, forever frame, long polling
    • 15
      WebSockets
    • 10
      Simple
    • 9
      Open source
    • 8
      Ease of use
    • 8
      JSON
    • 5
      Cool
    • 0
      Azure
    CONS OF SIGNALR
    • 2
      Expertise hard to get
    • 2
      Requires jQuery
    • 1
      Weak iOS and Android support
    • 1
      Big differences between ASP.NET and Core versions

    related SignalR posts

    Shared insights
    on
    gRPCgRPCSignalRSignalR.NET.NET

    We need to interact from several different Web applications (remote) to a client-side application (.exe in .NET Framework, Windows.Console under our controlled environment). From the web applications, we need to send and receive data and invoke methods to client-side .exe on javascript events like users onclick. SignalR is one of the .Net alternatives to do that, but it adds overhead for what we need. Is it better to add SignalR at both client-side application and remote web application, or use gRPC as it sounds lightest and is multilingual?

    SignalR or gRPC are always sending and receiving data on the client-side (from browser to .exe and back to browser). And web application is used for graphical visualization of data to the user. There is no need for local .exe to send or interact with remote web API. Which architecture or framework do you suggest to use in this case?

    See more
    Slack logo

    Slack

    119.5K
    96K
    6K
    Bring all your communication together in one place
    119.5K
    96K
    + 1
    6K
    PROS OF SLACK
    • 1.2K
      Easy to integrate with
    • 876
      Excellent interface on multiple platforms
    • 849
      Free
    • 694
      Mobile friendly
    • 690
      People really enjoy using it
    • 331
      Great integrations
    • 315
      Flexible notification preferences
    • 198
      Unlimited users
    • 184
      Strong search and data archiving
    • 155
      Multi domain switching support
    • 82
      Easy to use
    • 40
      Beautiful
    • 27
      Hubot support
    • 22
      Unread/read control
    • 21
      Slackbot
    • 19
      Permalink for each messages
    • 17
      Text snippet with highlighting
    • 15
      Quote message easily
    • 14
      Per-room notification
    • 13
      Awesome integration support
    • 12
      Star for each message / attached files
    • 12
      IRC gateway
    • 11
      Good communication within a team
    • 11
      Dropbox Integration
    • 10
      Slick, search is great
    • 10
      Jira Integration
    • 9
      New Relic Integration
    • 8
      Great communication tool
    • 8
      Combine All Services Quickly
    • 8
      Asana Integration
    • 7
      This tool understands developers
    • 7
      XMPP gateway
    • 7
      Google Drive Integration
    • 7
      Awesomeness
    • 6
      Replaces email
    • 6
      Twitter Integration
    • 6
      Google Docs Integration
    • 6
      BitBucket integration
    • 5
      Jenkins Integration
    • 5
      GREAT Customer Support / Quick Response to Feedback
    • 5
      Guest and Restricted user control
    • 4
      Clean UI
    • 4
      Excellent multi platform internal communication tool
    • 4
      GitHub integration
    • 4
      Mention list view
    • 4
      Gathers all my communications in one place
    • 3
      Perfect implementation of chat + integrations
    • 3
      Easy
    • 3
      Easy to add a reaction
    • 3
      Timely while non intrusive
    • 3
      Great on-boarding
    • 3
      Threaded chat
    • 3
      Visual Studio Integration
    • 3
      Easy to start working with
    • 3
      Android app
    • 2
      Simplicity
    • 2
      Message Actions
    • 2
      It's basically an improved (although closed) IRC
    • 2
      So much better than email
    • 2
      Eases collaboration for geographically dispersed teams
    • 2
      Great interface
    • 2
      Great Channel Customization
    • 2
      Markdown
    • 2
      Intuitive, easy to use, great integrations
    • 1
      Great Support Team
    • 1
      Watch
    • 1
      Multi work-space support
    • 1
      Flexible and Accessible
    • 1
      Better User Experience
    • 1
      Archive Importing
    • 1
      Travis CI integration
    • 1
      It's the coolest IM ever
    • 1
      Community
    • 1
      Great API
    • 1
      Easy remote communication
    • 1
      Get less busy
    • 1
      API
    • 1
      Zapier integration
    • 1
      Targetprocess integration
    • 1
      Finally with terrible "threading"—I miss Flowdock
    • 1
      Complete with plenty of Electron BLOAT
    • 1
      I was 666 star :D
    • 1
      Dev communication Made Easy
    • 1
      Integrates with just about everything
    • 1
      Very customizable
    • 0
      Platforms
    • 0
      Easy to useL
    CONS OF SLACK
    • 13
      Can be distracting depending on how you use it
    • 6
      Requires some management for large teams
    • 6
      Limit messages history
    • 5
      Too expensive
    • 5
      You don't really own your messages
    • 4
      Too many notifications by default

    related Slack posts

    Lucas Litton
    Founder & CEO at Macombey · | 24 upvotes · 317.2K views

    Sentry has been essential to our development approach. Nobody likes errors or apps that crash. We use Sentry heavily during Node.js and React development. Our developers are able to see error reports, crashes, user's browsers, and more, all in one place. Sentry also seamlessly integrates with Asana, Slack, and GitHub.

    See more
    Jakub Olan
    Node.js Software Engineer · | 17 upvotes · 440.8K views

    Last time we shared there information about our decision about using YouTrack over Jira actually we found much better solution that our team have loved. Linear is a minimalistic issue tracker that integrates well with Sentry, GitHub, Slack and Figma which are our basic tools. I would like to recommend checking out Linear as a potential alternative to "heavy" issue trackers, maybe at enterprises that may not work but when we're a startup that works awesome!

    See more
    MySQL logo

    MySQL

    125.3K
    106K
    3.8K
    The world's most popular open source database
    125.3K
    106K
    + 1
    3.8K
    PROS OF MYSQL
    • 800
      Sql
    • 679
      Free
    • 562
      Easy
    • 528
      Widely used
    • 490
      Open source
    • 180
      High availability
    • 160
      Cross-platform support
    • 104
      Great community
    • 79
      Secure
    • 75
      Full-text indexing and searching
    • 26
      Fast, open, available
    • 16
      Reliable
    • 16
      SSL support
    • 15
      Robust
    • 9
      Enterprise Version
    • 7
      Easy to set up on all platforms
    • 3
      NoSQL access to JSON data type
    • 1
      Relational database
    • 1
      Easy, light, scalable
    • 1
      Sequel Pro (best SQL GUI)
    • 1
      Replica Support
    CONS OF MYSQL
    • 16
      Owned by a company with their own agenda
    • 3
      Can't roll back schema changes

    related MySQL posts

    Nick Rockwell
    SVP, Engineering at Fastly · | 46 upvotes · 4.1M views

    When I joined NYT there was already broad dissatisfaction with the LAMP (Linux Apache HTTP Server MySQL PHP) Stack and the front end framework, in particular. So, I wasn't passing judgment on it. I mean, LAMP's fine, you can do good work in LAMP. It's a little dated at this point, but it's not ... I didn't want to rip it out for its own sake, but everyone else was like, "We don't like this, it's really inflexible." And I remember from being outside the company when that was called MIT FIVE when it had launched. And been observing it from the outside, and I was like, you guys took so long to do that and you did it so carefully, and yet you're not happy with your decisions. Why is that? That was more the impetus. If we're going to do this again, how are we going to do it in a way that we're gonna get a better result?

    So we're moving quickly away from LAMP, I would say. So, right now, the new front end is React based and using Apollo. And we've been in a long, protracted, gradual rollout of the core experiences.

    React is now talking to GraphQL as a primary API. There's a Node.js back end, to the front end, which is mainly for server-side rendering, as well.

    Behind there, the main repository for the GraphQL server is a big table repository, that we call Bodega because it's a convenience store. And that reads off of a Kafka pipeline.

    See more
    Tim Abbott

    We've been using PostgreSQL since the very early days of Zulip, but we actually didn't use it from the beginning. Zulip started out as a MySQL project back in 2012, because we'd heard it was a good choice for a startup with a wide community. However, we found that even though we were using the Django ORM for most of our database access, we spent a lot of time fighting with MySQL. Issues ranged from bad collation defaults, to bad query plans which required a lot of manual query tweaks.

    We ended up getting so frustrated that we tried out PostgresQL, and the results were fantastic. We didn't have to do any real customization (just some tuning settings for how big a server we had), and all of our most important queries were faster out of the box. As a result, we were able to delete a bunch of custom queries escaping the ORM that we'd written to make the MySQL query planner happy (because postgres just did the right thing automatically).

    And then after that, we've just gotten a ton of value out of postgres. We use its excellent built-in full-text search, which has helped us avoid needing to bring in a tool like Elasticsearch, and we've really enjoyed features like its partial indexes, which saved us a lot of work adding unnecessary extra tables to get good performance for things like our "unread messages" and "starred messages" indexes.

    I can't recommend it highly enough.

    See more
    PostgreSQL logo

    PostgreSQL

    98.2K
    82.2K
    3.5K
    A powerful, open source object-relational database system
    98.2K
    82.2K
    + 1
    3.5K
    PROS OF POSTGRESQL
    • 763
      Relational database
    • 510
      High availability
    • 439
      Enterprise class database
    • 383
      Sql
    • 304
      Sql + nosql
    • 173
      Great community
    • 147
      Easy to setup
    • 131
      Heroku
    • 130
      Secure by default
    • 113
      Postgis
    • 50
      Supports Key-Value
    • 48
      Great JSON support
    • 34
      Cross platform
    • 33
      Extensible
    • 28
      Replication
    • 26
      Triggers
    • 23
      Multiversion concurrency control
    • 23
      Rollback
    • 21
      Open source
    • 18
      Heroku Add-on
    • 17
      Stable, Simple and Good Performance
    • 15
      Powerful
    • 13
      Lets be serious, what other SQL DB would you go for?
    • 11
      Good documentation
    • 9
      Scalable
    • 8
      Free
    • 8
      Reliable
    • 8
      Intelligent optimizer
    • 7
      Transactional DDL
    • 7
      Modern
    • 6
      One stop solution for all things sql no matter the os
    • 5
      Relational database with MVCC
    • 5
      Faster Development
    • 4
      Full-Text Search
    • 4
      Developer friendly
    • 3
      Excellent source code
    • 3
      Free version
    • 3
      Great DB for Transactional system or Application
    • 3
      Relational datanbase
    • 3
      search
    • 3
      Open-source
    • 2
      Text
    • 2
      Full-text
    • 1
      Can handle up to petabytes worth of size
    • 1
      Composability
    • 1
      Multiple procedural languages supported
    • 0
      Native
    CONS OF POSTGRESQL
    • 10
      Table/index bloatings

    related PostgreSQL posts

    Simon Reymann
    Senior Fullstack Developer at QUANTUSflow Software GmbH · | 30 upvotes · 11.2M views

    Our whole DevOps stack consists of the following tools:

    • GitHub (incl. GitHub Pages/Markdown for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool
    • Respectively Git as revision control system
    • SourceTree as Git GUI
    • Visual Studio Code as IDE
    • CircleCI for continuous integration (automatize development process)
    • Prettier / TSLint / ESLint as code linter
    • SonarQube as quality gate
    • Docker as container management (incl. Docker Compose for multi-container application management)
    • VirtualBox for operating system simulation tests
    • Kubernetes as cluster management for docker containers
    • Heroku for deploying in test environments
    • nginx as web server (preferably used as facade server in production environment)
    • SSLMate (using OpenSSL) for certificate management
    • Amazon EC2 (incl. Amazon S3) for deploying in stage (production-like) and production environments
    • PostgreSQL as preferred database system
    • Redis as preferred in-memory database/store (great for caching)

    The main reason we have chosen Kubernetes over Docker Swarm is related to the following artifacts:

    • Key features: Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.
    • Applications: An application can be deployed using a combination of pods, deployments, and services (or micro-services).
    • Functionality: Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.
    • Monitoring: It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).
    • Scalability: All-in-one framework for distributed systems.
    • Other Benefits: Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.
    See more
    Jeyabalaji Subramanian

    Recently we were looking at a few robust and cost-effective ways of replicating the data that resides in our production MongoDB to a PostgreSQL database for data warehousing and business intelligence.

    We set ourselves the following criteria for the optimal tool that would do this job: - The data replication must be near real-time, yet it should NOT impact the production database - The data replication must be horizontally scalable (based on the load), asynchronous & crash-resilient

    Based on the above criteria, we selected the following tools to perform the end to end data replication:

    We chose MongoDB Stitch for picking up the changes in the source database. It is the serverless platform from MongoDB. One of the services offered by MongoDB Stitch is Stitch Triggers. Using stitch triggers, you can execute a serverless function (in Node.js) in real time in response to changes in the database. When there are a lot of database changes, Stitch automatically "feeds forward" these changes through an asynchronous queue.

    We chose Amazon SQS as the pipe / message backbone for communicating the changes from MongoDB to our own replication service. Interestingly enough, MongoDB stitch offers integration with AWS services.

    In the Node.js function, we wrote minimal functionality to communicate the database changes (insert / update / delete / replace) to Amazon SQS.

    Next we wrote a minimal micro-service in Python to listen to the message events on SQS, pickup the data payload & mirror the DB changes on to the target Data warehouse. We implemented source data to target data translation by modelling target table structures through SQLAlchemy . We deployed this micro-service as AWS Lambda with Zappa. With Zappa, deploying your services as event-driven & horizontally scalable Lambda service is dumb-easy.

    In the end, we got to implement a highly scalable near realtime Change Data Replication service that "works" and deployed to production in a matter of few days!

    See more