For whom it is intended: developers, testers
How and for what it is used: allows you to run a real database, MQ, Selenium Web browser inside a Docker container. It is used for writing integration/UI/DB tests in any of the JVM languages.
What is useful in the work: when writing integration tests, the question often arises — what to do with an external resource, such as DB or message queue (MQ). You can make a stub/mock or use the embedded version.
But, unfortunately, these options cannot always completely replace the resource that we are trying to simulate in this way. And then testcontainers comes to the rescue. With its help, you can easily recreate the working environment when running tests (up to a minor version of the required service).
However, there are also disadvantages: the startup time slows down and configuration difficulties may arise, which is not so critical, since it is done once.
Where to get: https://www.testcontainers.org
For whom it is intended: developers, analysts, testers
How and for what it is used: allows you to create automatic documentation on the database schema — creates a website (locally) that has a description of tables with all columns and specified constraints, as well as an ER-like schema with relationships between tables.
What is useful in the work: will help to get acquainted with the scheme DB on a new project, in the generation and publication of database documentation for interested team members (testers, analysts).
Where to get: http://schemaspy.org
Software Engineer Bell Integrator
For whom it is intended: Java developers
How and for what it is used: it is impossible to do without it when developing and running both highly loaded services and simple projects on a Java Virtual Machine (JVM).
What is useful in the workVVM is a tool that provides a visual interface for displaying information about a Java application running in real time on a JVM.
It allows you to monitor the amount of memory consumed by the application, the load on the processor, dump the application when it “crashes” for further analysis, and much more. It is possible to profile applications not only locally, but also remotely. By analyzing the data obtained, we can “tune” the application or identify the problem.
An example from personal experience: VVM helped to cope with the “floating” problem of falling service due to a rapid memory leak. How it was: when developing a highly loaded service that receives a market date from the stock exchange, processes it and gives it via web socket channels to other services, the process began to fail at different times with an error.
Using VVM, I connected to our service on a remote server, watched several parameters for several hours, such as:
1. CPU load:
2. Memory consumption:
Already at the first observations, it became clear that the memory and the number of processors needed to be increased. It helped, but the problem remained. Later, with different cases of the application, namely, disconnecting the associated service, I discovered a sharp memory leak, which terminated our application with an error.
After identifying the symptoms, the problem was immediately sorted out. And this was far from the only example when VVM came to my rescue.
Where to get: VVM is freely available, and also comes with the Java Developer Kit with basic settings and modules. It is possible to add modules, for example, to monitor the operation of garbage collector.
Automated and Load Testing Engineer Bell Integrator
For whom it is intended: testers (NT).
How and for what it is used: allows you to write scripts of different levels of complexity, perform load testing and get visualized data on the results of NT (tables, graphs).
What is useful in the work: helps to solve not only the main tasks (conducting tests), but also auxiliary ones. For example, filling DB with test data directly, SQL queries, using different levels of parameterization (including reading parameters from a file). The screenshots below show the graphical interface of the tool and an example of a report generated in html format by the tool itself:
Advantages: this tool is available for free, it is universal and meets all the requirements imposed by the NT. There are many possibilities for tuning both the tool itself and individual scripts. Allows you to save the received data (of interest to us) both in files of different formats, and directly to the database.
Disadvantages: less intuitive than the paid Loadrunner analog. For different tasks, it is necessary to use certain plug-ins, which may be outdated (only the main functionality is supported by the manufacturer of this tool).
An example from personal experience: it is worth considering that during the operation of Apache JMeter, you may encounter several problems. One of them is related to an outdated plugin for sending messages to Kafka, the second is related to the message format for opening a websocket connection. The first problem was solved by me by independently modifying the plugin (part of the code) using Java. The second problem was solved by creating messages in the required format in the JSR 223 pre-processor tool using groovy.
Where to get: https://jmeter.apache.org/
Software Engineer Bell Integrator
How and for what it is used: quick access panel to frequently used directories, files, scripts, snippets, VS Code commands
What is useful in the work: the plugin was developed about a year ago to simplify working with a large project. It is used to access frequently used directories, to launch programs, to quickly open favorite files, to search in certain directories.
Allows you to quickly run js scripts to make changes to project files in order to facilitate development, testing and enabling functionality. Solves such a problem as frequent changes to the code that should not get into the repository, but are required for local development.
Where to get: https://marketplace.visualstudio.com/items?itemName=sabitovvt.favorites-panel
Lead Software Engineer of Bell Integrator
For whom it is intended: for developers of mobile and Web applications, as well as any other applications using a cloud database.
How and for what it is used: allows you to implement repetitive tasks like CRUD, REST, RPC, etc. in a few clicks.
What is useful in the work: is an environment for executing GraphQL queries to databases and belongs to the “backend as a service (BaaS)” class of products. The main advantage of using Hasura is the speed with which you can develop web applications.
It is possible to work with tables of external databases, external services, there is authorization and authentication. And all this without the need to write code.
An example from personal experience: the first time I heard about this tool at a hackathon, I subsequently used it in a project. I believe that such technologies are the future of development, as they allow us to accelerate the introduction of new services to the market, encapsulate technical implementation, and reduce the development time of repetitive operations.
Where to get: https://hasura.io / (there is everything you need here: documentation, a YouTube channel with a lot of lessons)