Yoorbit has the latest best practices, reliable, highly available and scalable Technology Stack.
On the backend side, fully dockerized and isolated microservices are developed using Javascript technologies such as Node.js and TypeScript. All the microservices are back of the firewall and not accessible from the public internet. The public gateway which the clients use, also has several security precaution systems. All the microservices and gateways have their own auto scale rules to ensure all parts of the system always live.
MongoDB is used as the main database of the entire system. Beside that, Redis is using for “memory caching purposes, ElasticSearch is using for indexing large amounts of data, Neo4J provides graph relations between the entities of the system.
Python is used for the Data Science side of the project. Predictions, and user based analysis (such as similarity analysis, behavioural analysis) are the centre of the main logic of Yoorbit. AI and common Machine Learning algorithms are used while developing all these systems.
On the mobile applications, native technologies are used, Swift on iOS environment, Kotlin on Android environment.
Whole infrastructure is hosted in AWS (Amazon Web Services). Using ECS (Elastic Container Service), all the microservices run on isolated containers. Continuous Integration and Continuous Deployment (CI/CD) processes are organised with CodePipeline and Blue/Green deployment methods are implemented.
Yoorbit has a Web3 loyalty programme using the blockchain on Avalanche Network. The best practices are used while developing Smart Contracts with Solidity, Token security, and signing processes.
Backend Technologies
Node.js
Node.js is an open-source and cross-platform JavaScript runtime environment. It is a popular tool for almost any kind of project. A Node.js app runs in a single process, without creating a new thread for every request. Node.js provides a set of asynchronous I/O primitives in its standard library that prevent JavaScript code from blocking and generally, libraries in Node.js are written using non-blocking paradigms, making blocking behaviour the exception rather than the norm. This allows Node.js to handle thousands of concurrent connections with a single server without introducing the burden of managing thread concurrency, which could be a significant source of bugs.
Node.js was chosen while developing Yoorbit because Node.js has advantages like easy to scale, steep learning curve, development speed, and compatibility with microservice architecture.
Databases
MongoDB
MongoDB is a document-oriented NoSQL database used for high volume data storage. Instead of using tables and rows as in the traditional relational databases, MongoDB makes use of collections and documents. Documents consist of key-value pairs which are the basic unit of data in MongoDB. Collections contain sets of documents and functions which is the equivalent of relational database tables.
Some features that are important in choosing Mongodb while developing Yoorbit:
- Easy to develop, steep learning curve
- Easy to scale — The MongoDB environments are very scalable. Companies across the world have defined clusters with some of them running 100+ nodes with around millions of documents within the database
- The data model available within MongoDB allows you to represent hierarchical relationships, to store arrays, and other more complex structures more easily.
Neo4j
Neo4j is the world’s leading open source Graph Database which is developed using Java technology. It is highly scalable and schema free (NoSQL).
Relational databases store highly structured data which have several records storing the same type of data so they can be used to store structured data and they do not store the relationships between the data. Unlike other databases, graph databases store relationships and connections as first-class entities.
In Yoorbit, users and their posts and the reactions of the posts are kept in the graph database.
Elasticsearch (ES)
Elasticsearch (ES) is an open-source, broadly-distributable, readily-scalable, enterprise-grade search engine. Accessible through an extensive and elaborate API, Elasticsearch can power extremely fast searches that support your data discovery applications.
In Yoorbit, Elasticsearch is used for searching users, posts, tags and application logs.
Microservices
Microservices is an architectural style that structures an application as a collection of services that are highly maintainable and testable, loosely coupled, independently deployable, organised around business capabilities. Services communicate using either synchronous protocols such as HTTP/REST or asynchronous protocols such as AMQP. Services can be developed and deployed independently of one another. Each service has its own database in order to be decoupled from other services.
There are more than 20 microservices in Yoorbit architecture, such as Authentication Service which is responsible for API authentication and authorization, Post Service which is responsible for posts, likes, and comments of end users, Search Service, Notification Service, etc.
Docker
Docker is an open source containerization platform. It enables developers to package applications into containers — standardised executable components combining application source code with the operating system (OS) libraries and dependencies required to run that code in any environment. Containers simplify delivery of distributed applications, and have become increasingly popular as organisations shift to cloud-native development and hybrid multi cloud environments.
All the microservices in Yoorbit are dockerized and hosted in AWS ECS (AWS Elastic Container Service)
Redis
Redis is an open source, in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams.
Redis is used for caching frequently accessed database queries in Yoorbit.
RabbitMQ
RabbitMQ is one of the most popular open source message brokers. RabbitMQ is used worldwide at small startups and large enterprises. RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements.
In Yoorbit, some microservices don’t need to run realtime such as some data analysis and notification batches. In such cases, an AMQP message is triggered and transmitted to RabbitMQ at certain periods or when an event occurs. The relevant microservices process this message by pulling it from the corresponding queue in RabbitMQ. Thus, the work is completed asynchronously in the background without affecting the live environment.
Data Science
In Yoorbit several machine learning algorithms such as linear regression, Naive Bayes, KNN, K-means are used for different problems such as category prediction, user similarity, post and user suggestion, tag scoring, etc.
Python
Python has become one of the most popular programming languages in the world in recent years. It’s used in everything from machine learning to building websites and software testing.
Python has become a staple in data science, allowing data analysts and other professionals to use the language to conduct complex statistical calculations, create data visualisations, build machine learning algorithms, manipulate and analyse data, and complete other data-related tasks.
Python can build a wide range of different data visualisations, like line and bar graphs, pie charts, histograms, and 3D plots. Python also has a number of libraries that enable coders to write programs for data analysis and machine learning more quickly and efficiently, like TensorFlow and Keras.
Tensorflow
TensorFlow is an open source software library for numerical computation using data-flow graphs. It was originally developed by the Google Brain Team within Google’s Machine Intelligence research organisation for machine learning and deep neural networks research, but the system is general enough to be applicable in a wide variety of other domains as well.
Mobile Technologies
The mobile applications are developed in line with the requirements of their own platform. In iOS environment, Swift language is used, in Android environment Java and Kotlin languages are used, which ensures high performance and speedy response.
Firebase and Appsflyer are used for logging and analysis.
iOS — Swift
Swift combines the best in modern language thinking with wisdom from the wider Apple engineering culture and the diverse contributions from its open-source community. The compiler is optimised for performance and the language is optimised for development, without compromising on either.
Android — Kotlin (Java)
Kotlin is a modern, functional, and statically typed programming language that has been consistently ranked as the most loved language by Android developers. Kotlin is concise, safe, pragmatic and focused on interoperability with Java code. It has been adopted by over 60% of professional Android developers. With features like smart cast, data classes, and lambdas, Kotlin’s ergonomic design makes it easy to build awesome Android applications in less time.
DevOps
Infrastructure
The main infrastructure of Yoorbit is hosted on AWS. The public APIs are totally isolated from private microservices. The public and private networks have their own VPC and Load Balancer.
All other microservices are running on their isolated containers on ECS (Elastic Container Services) with auto scale configuration.
Some asynchronous batch tasks are configured to run on AWS Lambda services. Therefore these tasks are completed fast, scalable and reliable.
The services mentioned above such as MongoDb, Redis, Elasticsearch, and RabbitMq are running as a service or standalone managed cluster on AWS.
All the system logs are tracked on AWS CloudWatch.
CI/CD
Yoorbit as defined CI/CD procedures. There are three different environments on the system. There are development, staging and production environments. Basically, development, unit, automation and integration testing are run on development and staging environments.
After all the tests are passed, the deployment to the production environment is started by an authenticated employee.
All the CI/CD process steps are tracked on Slack channels realtime.
Blockchain Technologies
Yoorbit has its own Web3 loyalty programme on Avalanche Network. There are several smart contracts for the loyalty programme. There is a token contract which is implemented on ERC-20 token standard for YOORB token and NTF contracts which is implemented on ERC 721.
Solidity
Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs which govern the behaviour of accounts within the Ethereum state.
Solidity is a curly-bracket language designed to target the Ethereum Virtual Machine (EVM). It is influenced by C++, Python and JavaScript.
Fraud Detection and Security
All the blockchain and off chain transactions are protected with an advanced security and fraud detection system. All transactions are controlled with the user, IP address, device, wallet address, etc. realtime and periodically. According to the degree of importance of the issue, banning, blacklisting, or opening tickets to fraud team for control procedures are executed. An alerting system is always in live. If a security issue occurs, this security system creates an emergency alert to on-call security personnel using Slack messages, E-mail, SMS or phone call.