ejabberd

What is ejabberd?

Ejabberd is an open-source XMPP server/messaging platform written in the Erlang language. It is used to power real-time applications and also used to provide communication services such as instant messaging, group chat, presence, multi-user chat, and file transfer.

What are the typical use cases?

The most common use cases include:

  • Instant Messaging Applications: Enabling users to communicate in real-time within corporate networks or between two or more remote systems.
  • Presence Status Updates: Providing an interface for users to update their availability and see their contacts’ status.
  • Group Chat: Allowing users to participate in group conversations with multiple-user chatrooms.
  • File Transfer: Allowing users to send and receive securely

Architecture

Source: https://docs.ejabberd.im/developer/extending-ejabberd/architecture/

Alternatives:

Alternatives include Openfire, Prosody, Tigase, and Matrix.

History of ejabberd

Alexis Moura developed it in 2002 and continued to lead the project until 2009 when ProcessOne took over. Since then, it has become one of the most popular and widely used messaging platforms in the world. It has been used in various projects, from small-scale private messaging applications to large-scale deployments with millions of users.

Usage of ejabberd:

Many leading organizations and companies, including Facebook, Microsoft, Google, WhatsApp, Apple, Amazon, and Twitter use ejabberd. Additionally, many open-source projects and products, such as Openfire, Prosody, Tigase, and Matrix, are built on top of this platform. The primary reasons for its usage are:

  • Scalability: It allows for horizontal and vertical scalability and can support up to one million concurrent connections.
  • Security: It includes a range of security measures to ensure data integrity and user privacy.
  • Reliability: It is a robust and reliable platform that is resistant to excessive load and can remain operational 24

Related Links

Related Keywords

AMQP, Kafka

K8ssandra

Folks working with Kubernetes would be able to relate to the word “K8ssandra” very quickly. Something related to Kubernetes (more fondly called K8s). Yes, that is right.

Apache Cassandra is a preferred database for many large-scale applications. Kubernetes has been providing orchestration tooling and infra for several of these applications. Combining these two under a single umbrella helps enterprises to meet their requirements easily.

What is K8ssandra?

It is a cloud-native distribution of Apache Cassandra that runs on Kubernetes. Pronounced as “kate”+”Sandra”, this is an open source project licensed under Apache Software License v2. This project provides a plethora of tools to provide data APIs and automated operations for Cassandra. This includes tools for monitoring, services for site reliability, and backup/restore tools.

Cassandra is a distributed database management system. It is a free and open source project that provides a scalable, highly available, fault-tolerant, column-oriented database to support large amounts of data across many commodity servers.

Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available. (Source)

Creating, deploying managing various components of Kubernetes structure such pods, deployments and ConfigMaps could be time intensive and complex. As your architecture grows, this becomes all the more difficult. However, K8ssandra does the heavylifting for you. And as a infrastructure engineer or even a developer, it is always better if you have a reliable tool who does that job for you.

Components

K8ssandra components
Image source: https://docs-v2.k8ssandra.io/components/

It provides a set of components which are glued together as part of the installation process itself. The following components are packaged and installed:

  • Apache Cassandra
  • Stargate
  • Cass Operator
  • Reaper for Cassandra
  • Medusa for backup/restoration
  • Metrics collector with Prometheus integration and visuals via Grafana

Resources:

AngularJS

HTML i.e. HyperText Markup Language was designed for static websites. When it was devised, we didn’t visualize the internet the way it is today. And hence HTML carries a lot of shortcomings for current web application development where displayed information is dynamic in nature. To overcome this shortcoming quite a few frameworks were developed. AngularJS is such a framework for dynamic web applications.

Continue reading “AngularJS”

AMP – Accelerated Mobile Pages

In last 5 to 10 years, mobile penetration has grown by about 25% across the globe. This was also accompanied by increased usage of mobile internet resulting in people spending more time on their smartphones. Since it is easy for mobile users to get distracted, it became absolutely important for websites to be really fast. This gave rise to a framework called AMP – Accelerated Mobile Pages.

Continue reading “AMP – Accelerated Mobile Pages”

Hadoop

Big Data – the buzzword making rounds for last few years! Big Data refers to data sets so voluminous and complex that traditional data processing applications become inadequate. The data needs special provisioning for storage, analysis, sharing, and querying etc. This is where Apache Hadoop, Apache Spark come to your rescue.

Continue reading “Hadoop”