MARCH 22, 2019
10 min read
One of the biggest mistakes of software engineers on the implementation stage is a lack of understanding of the specific issue they face or lack of will to find the right solution. Moreover, there always exists a narrowly focused knowledge. Thus, the way-out they pick when some issue arises usually do not solve all the existing problems.
Before starting any application, it is crucial to define the goal and answer these questions:
- Why Do Your Clients Need This App?
- What Value Does It Have?
Not cruising for bruising, all crucial things need to be defined from the start, including the targeting audience and possible future scaling.
Ask yourself: why it is so important to define the protocol at the beginning of the project?
_The answer_is not long in coming as you create an architecture of the app on its basis and the specifics of chosen Protocol influences such things as:
- High-Speed Data Exchange Capacity
- Security & Encryption
- Architecture Solutions
- Voice Calls & Video Calls Support (can be different Protocol for first and last)
- Amount of data transmitted through the protocol (For example, a messaging app with 100 users in a group can load a device not less than an audio call)
- Creating chats with more than two members is impossible.
There are several ready-made protocols for messaging applications. These are XMPP, MTProto.
Each of them has its pros and cons. It’s quite tricky to judge any specific technology being better or worse than another. What you choose must always depend upon your business model. The most frequent issues start with the selected system that does not meet the initial requirements.
Cases:
- At the beginning of development, the possible need to implement Android client was not taken into account. Thus, the chosen library was not supported on Android and, as a result, in the future, the client could not scale its application to a new audience without rewriting existing clients for other platforms. Creating chats with more than two members was impossible. Moreover, the server was not adjusted to monitor these sort of things, and it was impossible even to add сencorship or merely create a bot. Therefore, always remember that it is essential to choose the solution wisely in the beginning, as it can lead to significant issues with scalability further.
- The other case is connected with a ready-made protocol that makes impossible providing multiple data, and can’t extend for the growing demands in the future. To change the Protocol — means to redevelop the whole app. It will lead to even changing the UI, although it can look the same visually, the inner structure, requirements will be altered and redeveloped.
- Pain may appear when choosing fee-based systems/libraries, as the decision makers often do not take into account that message delivery, or other interactions within a specific app can result in a drastic financial loss.
Suggestions:
The wisely-chosen solution at the beginning will save you much time and money later. Always keep in mind the fundamental idea of your app when choosing the Protocol.
There is no all-fit solution and choosing the one, that cover your needs depends on the main focus of your app. In any case, there are ways to customize the existing protocol or create your own.
Scalability is about increasing traffic and user activity, the number of requests to the server. With an absolute increase in the number of users within the app, the server stops to cope with the load and shuts down. When you consider scalability from the beginning, you lay the foundation for growth and avoid pitfalls of hitting a dead end and falling behind demand.
Scalability can affect backend. If your application isn’t scalable, adding new features can cause gridlock which means that the code is too convoluted and new features can be a nightmare to incorporate.
Suggestions:
- Implement backend monitoring and health-check system to detect scalability issues.
2. Conduct serious load testing before the release to understand at what period the performance can deteriorate so to ensure that the weak points fixed before thousands of users give you negative reviews.
Localization
Localization is the process of customizing your app to work in other languages other than the default. Localization can include different spoken variations and dialects of the same word, which refer to locales. Essential moments about Localization:
I. Correct Translation
Cases:
- Informal and slang language can be understood in the wrong way by non-native speakers.
- Text in the translated language is longer or shorter than the original one, so the layout looks weird, or the end translation is not perceiving visually.
- Localization for languages with different writing direction (from right to left and left to right) causes users distinct impressions, or confuse them.
- The smallest font sizes are acceptable for the source language (on which the original version of the application created), but the text translated into other languages text can be unreadable.
II. Correct Displaying of Translated Positions:
Cases:
- The word or word combination can be partially translated. But Localization itself may depend on OS settings.
- Troubles with translating the geolocations, thus users can not understand how to get to the desired destination.
Suggestions:
The localization of the app content allows the businesses to reach more markets and deliver a personalized experience to the customers. It assists in maintaining transparency and portability. Moreover, it acts as an aid for a strategic result driven approach to ensure higher revenue and produce higher ROI. As virtually every entrepreneur strives to conduct business to different parts of the world and enjoy its perks, multilingual messaging apps are in trend. Localizing your app for a new locale comes at a cost in terms of time and money, so you need to make sure that you make the right decision to maximize your return on investment.
1. Do market research and see which regions and countries make sense for you to expand. Based on that, localize your app to cover those respective languages or locales.
2. Avoid using concatenated strings since words with same meaning on other languages can occupy more space than English. In such a scenario, you should leave some extra space for text or program expansion.
3. Apply strings in UTF-8 encoding since it is quicker and less error-prone.
4. Test your localized app for all the languages to ensure that there is no untranslated text, wrong interpretation, out-of-context translation or offensive content.
A good cloud storage solution backs up documents, photos, and videos, and also helps keep all your devices in sync. It’s a great way to make sure your desktop, laptop, tablet and phone, all have instant access to your digital content. Cloud storage enables sending files if the receiving user is offline. It also allows to access and edit documents from a web browser and easily share files and folders with the others.
Cases:
- Cloud Storages can face security issues.
- No Internet — no access to your files.
- On Free of Charge Clouds uploaded photos and videos are often pressed with loss of quality, this may be unacceptable to someone.
Suggestions:
1. If you have a meaningful or even confidential data, then it is better to store data encrypted.
2. You can upload files without compression, but they also take space, and free space in the cloud is usually limited, you have to pay.
3. The functional of the Messenger should even foresee possible Problems with Load Balancing:
- Servers can fall if they’re overloaded
- The low speed of loading/Performance decreases
Load Balancing efficiently distributes the incoming network traffic across a group of backend servers, also known as a server farm or server pool, so when the loading increases- additional servers switch on to share all the requests. When the general server load is ok, other servers fall (automatic scaling). Load Balancing can be Server and Web. Depending on messengers, you need to take into account channel width.
Suggestions:
1. Always think several steps ahead. When possible scaling does not take into account from the beginning — all future scalings may be a real pain in the neck.
2. Deploying load balancers between web servers and the clients that are using them makes the design, delivery, and management of web server infrastructure easier.
User Verification, Identification and Compliance Procedure is a reliable and effective way to apply necessary account security measures. For many applications, it is essential to verify the identity of the person, and this procedure is already a must-have for FinTech. In like manner, increasing attention is paid to user verification in the Crypto sphere. This process appeared to be an essential step as now there is a possibility of transferring the crypt to real fiat money and withdrawal to the card. Any actions with real money require confirmation of identity. But verification is needed almost everywhere.
Below are the examples of cases related to user verification:
I. Case:
There was a mistake which made the user verification process completely manual (required a real person to check the documents and data entered). And this mistake could lead to future scalability issues:
- After a certain number of users, the responsible person for verification may not cope with the rising number of requests
- Human factor (they forget to check, can miss something or answer improperly) and further on
II. Case:
A mobile dating app was developed, and a specific category of PRO users needed to be verified. Here comes the pain again as manual verification is not a way out today and requires hours of work.
Suggestions:
- The financial industry went further. **The KYC (Know your customer)**step is currently automated. After a couple of requests, you can find out all the information about the user. Also, KYC accelerates the process of determining whether the person is valid for the services and functionality provided by the app.
- Two-Factor Authentication(2FA) or multi-factor authentication (MFA) is an additional security layer for your business — helping to address the vulnerabilities of a standard password-only approach. When an end-user enters their phone number at account registration or new mobile app download, you can validate that they are who they say are–before they start using your app–by connecting with the mobile device associated with that phone number. Once you have a verified phone number tied to an end-user you have established user’s mobile device as a global trust anchor for secure access throughout the account lifecycle.
- OAuth2 Authenticationand **Login Integration **with Social Networks and Google Accounts.
Oauth2 is the preferred method of authenticating access to the API. It allows authorization without external application getting the user’s email address or password. Instead, the external app receives a token that authorizes access to the user’s account. - **Real-time security intelligence and reputation scoring **can be provided during phone number verification to combat the fraud. Through this analysis of the phone number, you can get valuable data attributes and risk assessment. It enables you to confirm the account registrant is not a bot or spammer bulk registering thousands of fake accounts. Phone verification simplifies the account registration process, as an end-user provides a phone number and, once it’s confirmed, the user can begin running the website or mobile application.
Content Moderation is the practice of monitoring and applying a predetermined set of rules and guidelines to user-generated submissions to define best if the communication (a post, in particular) is permissible or not. The target audience of the app determines content moderation. There are four types of content moderation: Pre-moderation**,** Post moderation, Reactive moderation**,** andUser Moderation**.**
- **Pre-moderation **ensures that inappropriate content never makes it online, so to avoid any offense and the brand’s reputation damages. The downsides to this method of moderation are that the users can become impatient if they’re forced to wait for their comment to appear. What they might not notice or realize is that it’s moving on a virtual moderation queue.
- Post moderation differs from the previous one as UGC(User-Generated Content) appears instantly online and at the same time joining a virtual queue for moderation and allowing users to engage in real-time discussion, so the flow of conversation is not compromised. Inappropriate content is passed onto the relevant team and can be removed soon after it is deemed to break the rules. Your platforms are always at risk of showing inappropriate content to users. However, it is vital to ensure your response is speedy and accurate.
- Reactive moderation relies on users to report inappropriate content. When ‘clicked,’ an internal team of moderators check the review or offending post and remove it if necessary. Reactive moderation shifts the onus of responsibility for abusive or illegal content (although not always) away from the site owner. It may result in a countless number of false positives, meaning users can report things for no good reason. Yes, it is scalable and expands effortlessly with an online community as it grows without increasing the workload or cost of moderating. However, not all is good with this method. Posts remove when reported, which may be too slow in an era of ‘up to the minute news.
- User-only moderation supposes every user can decide how useful and appropriate UGC is. If a post rates as ‘not useful’ or ‘not appropriate’ a certain number of times, it can be automatically hidden. Just like reactive moderation, this type of сheck can be easily scaled as the online community grows, with no added cost or work involved. But user moderation can be riskier than reactive moderation because inappropriate content and negative ratings must be viewed many times before taking any action so that the damaging material will remain online for longer.
Suggestions:
We all understand that no moderation is not an option today.
Thus:
**1.**Always review your primary goals and set the key priorities.
2. Use AI and ML on the backend and inside the mobile applications for the content moderation.
A clear vision of all processes, understanding of how and where we move, foreseeing of possible missteps and avoiding them using the right solutions- all this is not a sudden unintended opening, but gained experience. And thanks to the acquired knowledge, all the methodologies, best practices, and our scientific approach — DashDevs are proud to speak out loud about the force of computer science, AI and machine learning, be game changers and brand voices worth spreading and consider ourselves a Sci-Tech Crew.
Stay hungry! In the next our article we will discuss the specifics of different protocols using the real cases.