We built it today, ready for the future and based on the best software infrastructure technology
Based on the best Software Infrastructure Technology- We built it today, ready for the future. Our team of professionals set out to create business management solutions for service providers with the best technology on the market. Our goal was to make sure our clients can update their systems from old legacy solutions to new ones without the hassle of in-house development and hardware. Each component of the BD Innovations Stack was chosen to suit its purpose perfectly. We bring the best of the best and make sure it works together seamlessly.
Today’s Tesla is a state of the art machine built with the technological genius that simultaneously disrupts and innovates the car industry. The idea is simple, yet sophisticated; to create an electric automobile that is accessible to the masses and is both affordable and environmentally friendly. This is done with the rare combination of genius technology, social responsibility, and innovation.
With the Tesla strategy in mind, we believe that we must be creative in building software for our solutions using top technology while keeping costs to a minimum and maintaining an active role of being socially responsible. We know that our passion for being the best will ensure we are continuously leading innovators in the market.
All Service providers with large IT departments spend years deliberating the build vs. buy dilemma. When we built our software stack, we invested in R&D taking the best from all the top solutions out there.
We prove to our customers day in and day out that they do not want to pay for in-house development of solutions that are already working seamlessly elsewhere.
Our Telecom Technology Stack solves the following issues:
- The costs of a customized development by a Legacy Telco IT solution vendor.
- The mistake many companies make, of trying to save money in the short term. They often end up spending far more when they are unable to launch a new service or create new revenue streams. Regularly, quick wins create terrible liabilities, no reliability, no security, can you afford this?
- The business of Service Providers is to sell services and connectivity to their customers and not to focus on IT software development. The IT technology and infrastructure should support your services and your customers.
- Development and maintenance of software and IT infrastructure should not be your responsibility.
- Our Stack will support your company to be at the top of the IT infrastructure game.
We chose the best developers in the industry and created a robust, reliable, cost-effective solution. Our software stack delivers flexible solutions – we attempted to solve both the limitations of Legacy BSS Providers and the Aspirations of In-house Development. To those who claim that they can create a Stack with a solution like ours, we say, let’s open it up and compare! All big corporations/ enterprises trust the solutions we use to create our state of the art Stack.
Our Stack includes each of the building blocks you will need to support the services you plan to offer. We chose the ideal technological advantage for each building block.
Why we chose our STACK – let’s start with the basics;
Non-Relational AND Relational Databases
We decided our Stack should include both database technologies, so we can choose the one that will perform best for the specific application.
As an example, Mongo database does not have a rigid schema, so it allows for natural changes. It is flexible and ideal for storing dynamic data like in the case of a CRM solution. Cassandra database, on the other hand, is capable of handling extreme volumes of Data (Facebook developed it for their vast amounts of data)– it is ideal for storing data such as Telco CDRs. Also, when dealing with Wallet transactions, we need to implement relational databases that manage transaction sequences.
Non-Relational Databases – Mongo and Cassandra
Non-relational databases do not incorporate the table/key model that relational database management systems (RDBMS) promote. These kinds of databases require data manipulation techniques and processes designed to provide solutions to Big data problems that big companies face. Popular non-relational databases are NoSQL, Mongo, and Cassandra. Most non-relational databases are incorporated into websites such as Google, Yahoo!, Amazon and Facebook. These websites introduce many new applications every single day with millions and millions of users; they cannot handle large traffic spikes with existing Relational databases solutions. Non-relational databases are capable of handling Web-scale data in a non-relational way.
Importantly, non-relational databases facilitate scalability. To enable fast throughput of vast amounts of data the option it uses is “in memory” and not reading and writing from disks.
The advantages of non-relational databases are their ability to deal with Large volumes of structured, semi-structured, and unstructured data. They are efficient, scale-out an architecture that is less expensive than the monolithic architecture. When the data model is very complicated, non-relational databases like Mongo may be the best way to go.
All monetary operations require transactional and atomicity which ensure correct financial process – the only way to do accurate billing. In database systems, atomicity is one of the ACID transaction properties. (Atomicity, Consistency, Isolation, Durability) An atomic transaction is an indivisible and irreducible series of database operations such that either all occur, or nothing happens. A guarantee of atomicity prevents updates to the database occurring only partially, which can cause more significant problems than rejecting the whole series outright. Therefore, the transaction cannot be in progress by another database client. It should not be visible before it happened, and it has to visible in whole the next moment after it occurred.
An example of an atomic transaction is a monetary transfer from bank account A to account B.
The transaction is two operations:
– withdrawing the money from account A
– saving the money in account B
Using the atomic transaction process ensures that the database remains in a consistent state, money is neither lost nor created if either of those two operations fails.
Mongo DB is a very flexible tool to use to build databases. However, one issue remains in the underlying technology, non-relational databases do not manage transactions well, they do not include a sequence of operations – We realized that no relational databases have an order process in them. Applications that include monetary operations need the course that exits in relational databases such as PostgreSQL, so we made sure our Stack contains both Non-Relational Databases and Relational Databases.
Database Version Management Automation
Liquibase is a platform for automation of database version management. It is included in our stack since it allows for more natural upgrades of the modules and complete platforms we deployed. Liquibase technology manages structure, metadata, and updates. Our upgrade process makes sure that the new or updated code of the modules and application run on the correct database version.
Liquibase genius technology means that regardless of the version of the microservice, the appropriate version of the database is matched up. Liquibase allows us to work with any Database by utilizing a unified structure for all the Databases and then translating it to the correct syntax.
Liquibase allows for our solution to work on ANY database you choose because Liquibase is the translator and connector. It creates the required interoperability between code and database (relational or non-relational)
We know that there is a big difference between managing code versions and database versions and syncing code versions with database versions. On legacy applications, IT solution versions were not synced, and new business problems were created because the database was not in sync and the service did not perform over non-synced databases.
Furthermore, since upgrades are essential to keep up with the service development, each upgrade process on the legacy. IT is a long and complicated process including problems, rollbacks, and excruciatingly slow results. We realized that the best tools are the NEW AGE tools.
LiquiBase is a Database Change Management solution. It is an open source, database-independent library for tracking, managing and applying database changes. Database changes are stored in an XML file and (optionally) checked into source control. LiquiBase executes modifications based on an XML file to handle different revisions of database structures and data.
LiquiBase is essential when there are consistent database changes to stay on top. It is even more critical when you need to manage databases in different states, keep a history of changes, offer automatic rollback support. It helps you provide automation, and efficiently operate variable change with less human resources and errors.
The Liquibase XML file makes it easier to read changes and see a history of changes. It also includes support for multiple Changelogs.
DB Caching – Injecting Speed and High Functionality
DB Caching is an additional IT infrastructure component we have added to our Stack – It makes working with databases more efficient. With DB Caching, we do not depend on database processing speed that is ultimately on a disk that has its own process time. The applications work on the RAM using caching technology and at the same time update the databases behind the scenes. This approach allows for quick processing of REAL-TIME applications and transaction-heavy services. This feature is especially relevant when rating and heavy billing traffic of tens of millions of users. When an IT solution does not have DB caching – it will not work.
The Hazelcast is in-memory data grid computing platform that manages data and distributes processing using in-memory storage and parallel execution for speed and scale of applications. Hazelcast is easy to work with. It has a resilient and elastic memory resource for applications. Hazelcast is the most popular in-memory data grid with hundreds of thousands of installed clusters.
Hazelcast gives us the results we need, the IMDG transforms and ingests data in microseconds to it provides the required throughput. It requires no maintenance windows for upgrading or new application deployments, and it is highly secure.
The Structure of Microservices
The Microservice Architecture Philosophy – We must be able to manage using a small and simple solution. We cannot offer complex applications – microservices need to have small functional parts so that they are easy to develop and maintain. Microservice programming is involved in thinking about and develop but easy to manage. It is the foundation of scalability that increases the number of services.
Thanks to this setup concept we can offer real unified BSS that allows you to add services quickly to the same BSS platform. We believe in these values to create Scalability, additional services, and the growth and variability of subscribers.
In monolithic software, three-tier architecture is used – Presentation layer, Business layer, Data access layer
In a traditional web application client (a browser) posts a request –
- The business tier executes the business logic,
- The database collects and stores application-specific data, and
- The UI is the visualization of the data to the user.
In this setup, all the code is deployed as a single unit. Even when the project has many modules, one module is dependent on another and, moreover, the module needs dependent modules in its classpath. Although you use a distributed environment, it runs under single process context.
The problems of the monolithic application:
There is one codebase that keeps growing. Every programmer, (UI Developer or a business layer developer) uses the same codebase, and it becomes very inefficient to manage.
As there is one codebase and modules are dependent on each other, minimal change in one module needs to generate all artifacts and needs to deploy in each server pool in a distributed environment.
As monolithic software uses a three-tier architecture, three cross-functional teams are involved in developing a feature. Even though a three-tier architecture allows for separation of responsibility, in the long-run, the boundaries are crossed, and the layers lose their fluidity and become rigid.
Netflix and Amazon use MICRO SERVICES as the solution
Microservice architecture breaks projects into independent services so that they can be deployed and managed solely without depending on other services. Projects are broken down by function. A complete feature and its functionality may consist of UI, Business, and logging. The feature is not divisible and not dependent on other functions.
Each part of the software has its maintenance and monitoring, its application servers, and database. When setting up microservices, there is no centralized database — each module has its database. With microservices, each service communicates through API/remote calls. Microservices function through separation of responsibility.
The Advantages of Microservices Architecture
- Each module is independent so that you can choose the best programming language for the module
- Each module has its database so that you can select NOSQL or Relational
- Developers build and maintain microservices and have expert knowledge of their modules
The Spring Framework Advantages
We adopted the Spring Framework as it has many benefits when writing web applications. Specifically, the framework for Java applications development does not bind us to any containers lifecycle. It also provides unique tags and validation and model mapping.
The Spring framework is an application development framework used for Enterprise Java. It is a complete framework. Spring is used for all layer implementations of real-time applications.
The Spring features we wanted to include in our stack:
- Lightness – Its light concerning size and transparency
- Inversion of Control – Gives us loose coupling. The objects give their dependencies instead of creating or looking for dependent objects.
- Aspect Orientated Programming – By separating application business logic from system services, we then use Aspect Oriented Programming that enables cohesive development.
- Container – We create and manage the lifecycle and configuration of application objects
- MVC Framework – We get an MVC web application framework that is configurable via interfaces and accommodates multiple view technologies
- Transaction Management – There is a generic abstraction layer. It is not tied to J2EE environments, and it can be used in container-less environments.
- JDBC Exception Handling – The JDBC abstraction layer of offers an exception hierarchy, which simplifies the error handling strategy.
Spring Security provides authentication as well as authorization. The security intercepts web URLs and annotations on the Java methods make them secure.
Spring security simplifies work process with most of the security standards
Why do we care about reactive programming?
Reactive programming is programming with asynchronous data streams.
When we want to create and filter streams, we also have a toolbox to do this. This is the functionality part of reactive programming. A stream can be used as an input to another one. Even multiple streams can be used as inputs to other streams. You can merge two streams. You can filter a stream to get another one that has only those events you are interested in. You can map data values from one stream to another new one.
A stream is a sequence of ongoing events ordered in time.
It can emit three different things:
- a value (of some type),
- an error, or
- a “completed” signal
These emitted events are caught asynchronously, by defining a function that will execute when a value is emitted, another function when an error is emitted, and another function when ‘completed’ is emitted. Sometimes these last two can be omitted, and you can focus on defining the function for values. The “listening” to the stream is called subscribing. The functions we are defining are observers. The stream is the subject being observed. This is the Observer Design Pattern, and we need it to create the best billing solutions out there!
Full rest API
Agnostic to external interfaces Full rest API allows us to connect to existing solutions with full integration and without being dependent on our customers IT. This way BD Innovations can provide answers to operators regardless of their current IT solutions for the Call Center, their CRM, or Billing System.
The REST system is a protocol for data exchange and management in Internet services. Almost every company or application has a REST API for business creation.
REST API is used globally for the creation of professional services based on this software. Twitter, YouTube, Facebook identification systems. Hundreds of companies generate business thanks to REST and REST APIs. Without them, any horizontal growth would be practically impossible. This is because REST is the most logical, efficient and widespread standard in the creation of APIs for Internet services.
REST interfaces between systems using HTTP to obtain data and generate operations on the data in all possible formats, including XML and JSON. This is a favorite tool relative to other standard data exchange protocols such as SOAP (Simple Object Access Protocol), which is high capacity but also very complicated. Sometimes it is preferable to use a simpler data-processing solution such as REST.
The REST protocol entirely separates the user interface from the server and the data storage. It allows to move the interface to other platforms; it increases the scalability of the projects. Also, the different components of the development can evolve independently.
Angular is our framework for the front end
The consistency found in Angular components, services, pipes, directives and more allows our team to get things done. Making the consistency greater give the added benefit of productivity. After writing one component, you can write another with similar guidelines and code structure.
Angular allows quick customization of UI, in a matter of days. You get flexibility and adjustment for each Service Provider’s business processes. It includes built-in responsive tools that adjust to any device, and a hidden advantage – it makes the BSS available on the go for senior management. The CTO can manage the system via a tablet or a smartphone while on the move.
Docker for the deployment process
Docker allows applications to be isolated into containers with instructions for exactly what they need to do and can be easily ported from machine to machine. Virtual machines also allow the same thing, and Chef and Puppet already exist to make rebuilding these configurations portable and reproducible.
Docker has tight integration with the Linux kernel. It makes for significant efficiency at a low level, and because of that, Docker is not (currently) a replacement for virtual machines for Windows, OS X. when running Docker containers on a non-Linux computer.
Docker has a more simplified structure, the real area where it causes disruption is resource efficiency. Docker is a huge help in enabling continuous integration, delivery, and deployment pipelines.
The BD Innovations Stack is built to serve your business with a quick, scalable, flexible architecture.
The Result of Building the Right Stack
BD Innovations solutions can be customized in days and not months, deployments of modules can be achieved in hours and not weeks, Cybersecurity was built in by the giants and not patched on later.
BD Innovations can integrate solutions with hardly any effort, unlike traditional solutions where integration can be very complicated. The scalable solutions are ready for big data and don’t require additional budget. Hardware utilization brings more performance with less hardware, and the virtualization support is complete from end to end.
With the customers legacy systems in mind, the solutions run on any OS and customers are not requested to update this. The database type used is PostgreSQL that is free and modern and not Oracle DB that is limiting and expensive (see more).