Position: Senior Java Developer
Category: Java
Experience: 9 years | English: upper

Memory leak problem

We had a memory leak problem. We managed to find out that issue was holding a big number of references to JPA entities.  From the performance point of view code also worked far from ideal since a lot of entities were loaded into memory to calculate some condition. We have rewritten that part to use a custom query that calculated everything that we needed and returned a single result.

Microservice performance

We have faced an issue that microservice under a significant load was stopping at some point in time accepting new requests for a long period of time. After that, there were short periods of time when the microservice was able to accept a small number of new requests. Requests were received via a simple REST endpoint.

The main issue was with a Disruptor EIP in Apache Camel. That EIP allows processing exchanges asynchronously. It has an internal buffer with a default capacity of 1024 exchanges. When that buffer becomes full - the microservice stopped processing new incoming requests.

As a solution, we have added 10 concurrent consumers in Disruptor EIP and increased the size of the buffer to 2048 exchanges. Another implicit thing that helped to increase microservice general performance over HTTP was switching from Tomcat to Jetty (about 10% boost). For a case when those improvements will reach their limits in the future we suggested using any kind of queueing system in front of that microservice.
2020 May – 2022 Dec.
Senior Java developer (Intellias for Bluecode).

Description:
Intellias helped to create reporting solution that will support generating
reports from the previous day in a few seconds. The developed micro-service
architecture helps to receive data from different sources in different formats,
transform them and generate required reports in different formats and send
them to recipients with agreed schedules by different methods.

Responsibilities:
1. Collecting requirements about a new project during a meeting with the customer or as a result of reverse engineering a legacy project, documenting requirements, splitting that information into tasks, and estimating them.
2. Developing a service from scratch (only back-end, from designing
database structure to writing REST API documentation)
3. Developing micro-service architecture-based solutions from scratch.
4. Developing best practices for Apache Camel Framework-based projects,
code conventions and code review.
5. Responsible project testing (unit tests, integration Camel test, performance
and load test, manual tests)
6. Solving performance and load issues.

Technologies and tools:
Spring Boot, Spring Data, Spring Web, Spring Security, Apache Camel,
JUnit 5, Mockito, AssertJ, CouchDb, Postresql, Liquibase, Maven, Docker,
Kubernetes, Git

2016 Jul. – 2020 Apr.
Middle Java developer (EG Team Online)

Description:
Developed solutions for the health care / social care domain. The system allowed orchestrating patient treatment or rehabilitation. The system had several entries
points (for the doctor, patient, patient's relatives, and third-party healthcare
institutions) with advanced user rights and user tracking features.

Responsibilities:
1. Implement new features involving all layers - from DB level to UI.
2. RESTful web services implementation.
3. Legacy code refactoring.
4. Data migrations implementation.
5. Code review

Technologies and tools:
Spring, Hibernate, Spring Web, Spring Security, JUnit 4, Mockito, AssertJ,
MySql, Liquibase, Gradle, Git, Mercurial, JSP, Angular
I prefer back-end projects or projects with a little amount of front-end development.