Jobleads Releases Review (254 - 256)
Infrastructure Team
Workation!
Distributed data storage in Cloudflare KV
Problem: Thanks to Cloudflare, the SSR app is distributed to multiple regions, but all necessary endpoints are located in Europe only. This creates an unwanted network delay.
Solution: Cloudflare provides various distributed data storage. One of them is KV (key - value). We made a prototype and measured potential gains.
Effect: Reduced number of calls to the backend service leads to faster response.
USA - Portland
India - Mumbai
PHPStan violations solved by AI
Problem: Years of development without static code analysis have led to weak compatibility with PHPStan. To achieve a reasonable compatibility level, we must solve thousands of violations.
Solution: We tested Claude Sonet 3.7 and other models to solve violations without developer interactions.
Effect: In most cases, AI provides an accurate solution. Unfortunately, in 5 - 10% of cases, proposed solutions lead to a decrease in code quality or even errors. AI speedup work on the topic, but even the best current model must be under control.
Integration with User History Service
Problem: We have numerous user-related events stored by a monolith, which were utilized solely by BI. We need them as the primary data set in the User History Service.
Solution: We made background processing (batchjob) to move the existing data and extend the processing of new events to store them in real time.
Effect: All existing events will be available for AI tools.
Code cleanup
Problem: Some functionalities are handled currently by microservices, and the related code becomes obsolete in the Monolith, e.g. frontend application loader, old batchjobs.
Solution: Refactoring!
Effect: Less confusion for developers and no need to support dead code in future updates.
Job export statistics
Problem: The number of jobs exported was difficult to verify, particularly the new ones. It was problematic for PO and hard to monitor in case of problems.
Solution: Metrics about the total number of exported jobs and the number of new jobs were added.
Effect: Better business decisions and stronger monitoring.
EMS as service
Problem: We would like to move out the EMS from Monolith to a dedicated service, but it is quite a big part of the application and uses data from many parts of Monolith. We must be careful during that operation.
Solution: We begin the process with data replication, which we perform using Debezium. To evaluate the effectiveness of replication, we implemented a dual connection for EMS and a feature toggle that allows switching in case of a problem.
Effect: Separation will be safer.
New services deployment
Problem: New services (JL Assistant, Job Interaction Center, VDB Search) need to be deployed to QA, stage, and production environments.
Solution: We provide pipelines and Helm deployments.
Effect: All services could be released.
Other
Investigating batchjobs out of memory issues
Investigating piling up RabbitMQ queues
Troubleshooting the EMS campaign processing slowdown