Hello,
Clarification: As I don't know as to where to post this question I am posting it here. I hope it is not posted in wrong forum...
I am in discussion with a client who is selling a range of software for image/photo processing, easy and instant photo cutting, wedding album creating, etc.
This client has 1 million+ users of their products.
Now the client wants to start giving support to their customers through mobile apps because around 50% of their customers are Android based smart phones users.
For this they want to build a full featured chatting software something similar to Telegram.
The broad list of features are:
I do not have any experience in instant messaging ( IM ) and its back end so I am sort of blank regarding this technology.
I have researched a bit though. Here is what I have understood.
I think I have four approaches from which to choose from:
In the case of approach 1: I can use some good implementation of XAMPP like MongooseIM platform (https://mongooseim.readthedocs.io/en/latest/) and build all the other back end features in PHP as per clients requirements.
In the case of approach 2: I have to use NodeJS with Socket IO the base system that I have looked up is: Node.js-based-Instant-Messenger (https://github.com/valx90/Node.js-based-Instant-Messenger). But I feel using this would be chore and very daunting.
In the case of approach 3: After a bit of study and after reading a few posts in this forum I feel it would be better to go with Google's Firebase. I tried a ready to use mobile app and it works really very smoothly and instantly. One that I noticed is that this software has to always be connected to Firebase constantly. But the problem is that the Firebase server support only 100K simultaneous connections to supporting such a huge number of users would not be possible unless Google has some way to increase the number of simultaneous connections!
I checked out Layers (https://layer.com/) but it pricing policy seems to be very unclear. I have started communication with them let us see what turns up.
In the case of approach 4: I use B4J with ABM to build messaging server as well as backed and various web services that the mobile app will call. But I don't know as to how well it will scale to be able to handle such a large number of users and the amount of data load.
Let me try and explain as to what my client is expecting in terms of data transfer. If say one user uploads just 10 MB of video(s) a day then we would require about 1 TB of space to handle them on server, on daily basis. So in one month the size would amount to 30 TB.
As for second phase (Video/Audio Calling) I will have to use WebRTC. Again something that I will have to research deeply (in future).
Now my question: What does the expert developers in this forums think that I should do? Please suggest or give ideas.
Finally looking at the amount of data bandwidth that will be required for handle such a large user base what kind of hosting should I take up for approaches 1, 2 and 4?
What kind of infrastructure I choose? Should I go with AWS, Google Cloud, Digital Ocean or something better. Here monthly overheads or charges have to be also taken into consideration looking at the bandwidth and storage required because the client's currently has a budge of US $500 per month for recurring infrastructure cost.
I hope I have managed to explain my requirements and problems properly.
If there is anything that I have missed please ask me and I will try to clarify to the best of my knowledge.
Regards,
Yogesh
Clarification: As I don't know as to where to post this question I am posting it here. I hope it is not posted in wrong forum...
I am in discussion with a client who is selling a range of software for image/photo processing, easy and instant photo cutting, wedding album creating, etc.
This client has 1 million+ users of their products.
Now the client wants to start giving support to their customers through mobile apps because around 50% of their customers are Android based smart phones users.
For this they want to build a full featured chatting software something similar to Telegram.
The broad list of features are:
- Instant Messaging which should be as smooth as Telegram
- Push notification when a message arrives
- Ability to send media files (images, audios, videos) to users with features similar toTelegram
- Ability to send documents (PDFs, Office documents, etc.) to users
- Create Groups of users
- Allow for private chat between two users
- Broadcast messages
- A powerful back end from where they can send update notifications, etc. along with complete user management
- In second phase they also want to add support for Video and Audio calling
I do not have any experience in instant messaging ( IM ) and its back end so I am sort of blank regarding this technology.
I have researched a bit though. Here is what I have understood.
I think I have four approaches from which to choose from:
- Use XAMPP
- Use NoteJS
- Use any ready third party API like Firebase, Layer, etc.
- Use B4J with ABMaterial
In the case of approach 1: I can use some good implementation of XAMPP like MongooseIM platform (https://mongooseim.readthedocs.io/en/latest/) and build all the other back end features in PHP as per clients requirements.
In the case of approach 2: I have to use NodeJS with Socket IO the base system that I have looked up is: Node.js-based-Instant-Messenger (https://github.com/valx90/Node.js-based-Instant-Messenger). But I feel using this would be chore and very daunting.
In the case of approach 3: After a bit of study and after reading a few posts in this forum I feel it would be better to go with Google's Firebase. I tried a ready to use mobile app and it works really very smoothly and instantly. One that I noticed is that this software has to always be connected to Firebase constantly. But the problem is that the Firebase server support only 100K simultaneous connections to supporting such a huge number of users would not be possible unless Google has some way to increase the number of simultaneous connections!
I checked out Layers (https://layer.com/) but it pricing policy seems to be very unclear. I have started communication with them let us see what turns up.
In the case of approach 4: I use B4J with ABM to build messaging server as well as backed and various web services that the mobile app will call. But I don't know as to how well it will scale to be able to handle such a large number of users and the amount of data load.
Let me try and explain as to what my client is expecting in terms of data transfer. If say one user uploads just 10 MB of video(s) a day then we would require about 1 TB of space to handle them on server, on daily basis. So in one month the size would amount to 30 TB.
As for second phase (Video/Audio Calling) I will have to use WebRTC. Again something that I will have to research deeply (in future).
Now my question: What does the expert developers in this forums think that I should do? Please suggest or give ideas.
Finally looking at the amount of data bandwidth that will be required for handle such a large user base what kind of hosting should I take up for approaches 1, 2 and 4?
What kind of infrastructure I choose? Should I go with AWS, Google Cloud, Digital Ocean or something better. Here monthly overheads or charges have to be also taken into consideration looking at the bandwidth and storage required because the client's currently has a budge of US $500 per month for recurring infrastructure cost.
I hope I have managed to explain my requirements and problems properly.
If there is anything that I have missed please ask me and I will try to clarify to the best of my knowledge.
Regards,
Yogesh