The project represents a system for telecommunications data processing via dedicated protocols over TCP/IP stack. It consists of various products that interact closely with each other and are designed to receive, transcode and store metadata and content. Users can quickly get the necessary information about the content: duration, creation time, source, etc., as well as play and analyze the content.
The essence of the project is to make it possible for a distributed team to delve into the specifics of the work of this ecosystem within a short time, as well as identify the most problematic areas, develop a plan on how to expand the functionality, fix critical bugs, and implement planned changes on time.
The products that make up the described system have a large codebase, complex integration logic and multiple cases for working with various types of data with many combinations.
The system is aimed at processing and encoding telecommunications data. Data can be conditionally divided into service data (data source, time, etc.) and the content itself. We were focused on the following three main components that interact with each other.
Its purpose is to receive packets (data blocks), parse and decode them. Due to the implemented multithreading, the component can simultaneously process data from different sources, create requests for transcoding and saving service data in the database. Then the content gets to the next link of the system.
More specifically, a media server. Its task is to process data according to certain algorithms. Next, you need to transcode data and analyze the content for additional information. After transcoding, the content is stored in the repository.
A complex subsystem that uses a large technology stack. It consists of a frontend and a large backend. The frontend is partly responsible for visualizing all information on incoming telecommunications data. The backend performs many functions: from working with the database to building entire web elements that are transferred to the frontend part. This is where the primary telecommunications data processing component sends requests to save metadata in the database. The path to the future file in the repository, where the content will be recorded later, is created here. All work with the database is concentrated in this component of the system. Also here is a module that can render and play content from the repository using technologies such as WebSocket and Java Script.
Backend Stack: Java 8, JSON, Spring, Gradle, GWT, JUnit, WebSocket.
Infrastructure: Git, Bitbucket, Jira, Confluence, Jenkins, AWS, IntelliJ IDEA.
Frameworks: Apache Kafka, Docker, gRPC.
Test Automation libraries: Groovy + Java, Selenium WebDriver, Selenium Grid, ActiveMQ, TestNG, REST API.
Other libraries: Slf4j, Lombok.
The main feature of the project was a large amount of documentation. But unfortunately some documentation was outdated or missing. There was no clear description of the main cases and the logic of the system. We managed knowledge transfer. Our team had to delve into the project and understand what information was missing, arrange its receipt. While maintaining a focus on commercially important deliveries, it had to start the development of the system architecture and simultaneously work on product quality assurance.
Here is another one distinctive feature of the project. The team must have been highly qualified in solving various problems. System failures could be caused by bugs in the source code / functionality of the application, incorrect configuration of the servers and the third-party product that was integrated into the system.