Skip to content
An instant messaging system supporting cross-platforms
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE
README.md

README.md

IM-Architecture-Design

An instant messaging system supporting cross-platforms.

XMPP (also known as Jabber) is the leading open standard for instant messaging (IM) and is an open XML technology for real-time communication. Since 2004, it's been an approved standard of the IETF (the same organization that standardized email and World Wide Web protocols). A rich set of extensions to the protocol are maintained by the Jabber Software Foundation, by which anyone may implement an XMPP service and interoperate with other organizations' implementations. Today, XMPP is used by leading companies, millions of users worldwide and is the best choice for open real-time collaboration. Although many server, client, and library implementations are distributed as free and open-source software, numerous freeware and commercial software implementations also exist.

  1. eJabberd is the most famous open source Jabber server written in Erlang and is used by Whatsapp, some other tech giants such as Facebook and Google went away from it because it was difficult to find qualified developers.

  2. Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). It is easy to setup and administer, but offers enterprise level security and performance.

However XMPP is a heavyweight protocol (streaming XML message) with high overhead in the network, which cause long latency when sending a message (long-polling technique) and also battery draining issue on mobile devices. Companies such as Facebook uses MQTT protocol at the client-side to improve connection performance and battery life. MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. MQTT is being standardized by OASIS as a communication protocol for Internet of Things (IoT) and Machine-to-Macine (M2M) applications.

References:

Full-Stack

Alt text

References:

Disk Storage

References:

OS and Virtualization

References:

Web and Application Server

References:

Database

References:

OAuth

References:

Push Notification

Due to the fact that every Google service is blocked in China by the government firewall, to send and receive push notification for device in China region we must use other push service such as Baidu.

References:

Architecture Considerations (Key Design Principle)

To avoid the risk of depending only to single vendor significantly, the architecture should be loosely coupled with the vendor's infrastructure. This consideration is not just from a cost standpoint, but also from an operations standpoint. This include a need to keep operating costs down by always using the most efficient software on the market, a need for fast expansion with limited funds, which could be made difficult if every new CPU represented thousands of dollars of licensing fees, or ease-of-development concerns.

For companies that are just starting out, and are unsure of how much complexity their architecture will require in the future, open source product is a safe bet because it allows them to get a very stable iteration of their infrastructure up and running for a very small initial investment. This leaves them plenty of breathing room to expand their network as needed, either by paying developers and architects to build a lightweight customized solution precisely matched to their needs, which can be expanded in response to the company's growth, or even just by saving them enough money that it's possible to migrate to a proprietary solution if their company reaches a stage where this is the most prudent decision. While for companies who are loaded with developers who like to use the latest and greatest in technology, an open source infrastructure can mean that there's enough money left over to try out other products, and because they are are so widely adopted, it's often very simple to integrate that work into the existing network if it proves successful. Avoiding the weight of massive annual license charges is important for these companies to maintain the sense that they are agile and will be able to respond to changes in the marketplace without making money the default deciding factor.

Conclusion
The cost of using free and open source product will only be as expensive as the hardware to run it and the developer hours to configure it, and apart from all these cost concerns, open source product comes out looking pretty good. Free, lightweight, and simple, yet powerful, efficient, and proven in both production and development environments contributes to a major factor in the decision making process.

You can’t perform that action at this time.