Valentin Kovalenko

Server-side software engineer

Concurrency and distributed systems

Technical skills

Main language Java
Frameworks/libraries Netty, Protocol Buffers, JMH, Spring Framework, Hibernate ORM, JUnit, Mockito
DBMSs PostgreSQL, Redis + Sentinel, Cassandra
Distributed coordination ZooKeeper + Curator
Other Maven, Git, Docker, basic front-end knowledge, good understanding of the Java memory model (this presentation may back the claim)

Work experience

Logo MongoDB / Calgary, Canada (remote)

Senior Java driver engineer / Jan 2021–current

Logo Synopsys / Calgary, Canada

Senior software engineer / Apr 2018–Nov 2020

  • Coverity Connect server (Tomcat, PostgreSQL, Hibernate ORM)—stores and manages issues detected by code analysis tools
    • designed and developed export/import functionality (the technical side is more complex than it sounds) in pair with a colleague, designed and implemented support of this functionality in a cluster environment on my own;

    • migrated from JDK 8 to JDK 11, took me about 1.5 months in case you are curious;
    • cluster—identified and fixed/mitigated multiple bugs, including replication failures caused by
      • incorrect inference of the order of replicated changes, here is my related blog post;
      • broken transaction isolation due to incorrect cache strategy;
    • incremental updates functionality—allows automatically updating client applications; fixed a number of bugs, optimized the process of downloading updates so that updates that are not needed or have been cached would not be downloaded.
Logo ZeptoLab / Moscow, Russia

Senior server-side developer / Jan 2016–Mar 2018
Server-side developer / Dec 2014–Dec 2015

  • King of Thieves server (Netty, ZooKeeper + Curator, Protocol Buffers, Redis + Sentinel, Cassandra, Docker, Ansible, Datadog, Mixpanel)
    • joined this project in Aug 2015, 7 months after the global release, and supported it / developed new features until resigning;
    • implemented validation and processing of in-app purchases and subscriptions, here is my related blog post;
    • implemented automatic data extraction/grouping from Mixpanel and sending it to partners.
  • Server and client homegrown frameworks (Netty)
    • developed from scratch;
    • the server framework is similar to my server project, which is based on it.
  • Configuration server (Netty, Hibernate ORM, JGroups, PostgreSQL, Tapestry)—manages and delivers game configurations to game clients, supports having configurations for split-testing
    • redeveloped;
    • a couple of dozen projects started using it compared to only a single one before redevelopment.
  • Notifications server/client (Netty, ZooKeeper + Curator, JGroups, Protocol Buffers, PostgreSQL)—provides unified access to major push notification services, e.g., Amazon Device Messaging, Apple Push Notification Service
    • refactored the design as inappropriate usage of ActiveMQ and Quartz Scheduler was causing performance bottlenecks;
    • improved the throughput by an order of magnitude;
    • when I resigned, this server was used by all ZeptoLab games.
Logo Netcracker / Moscow, Russia

Senior software programmer / Aug 2013–Dec 2014
Software programmer / Apr 2010–Aug 2013

  • TELUS Self Service Portal (JMS, WebLogic Server, Oracle Database)
    • integrated with Oracle OpenSSO;
    • availability—developed functionality allowing front-end servers to persist and later initiate asynchronous execution of tasks on back-ends. This allowed users to use some features of the portal even when back-end servers are temporarily unavailable.
  • Data objects, a homegrown persistence library—developed various concurrent caches.
  • Implemented OpenID authentication.
  • Data migration (Oracle Database, Oracle PL/SQL).
Logo I.T. Information Technology / Moscow, Russia

Implementation engineer / Jul 2008–Apr 2010

Logo IRE RAS / Moscow, Russia

Student / Sep 2006–Jun 2009

Formal education

Logo Moscow Institute of Physics and Technology / Dolgoprudny, Moscow Region, Russia

MSc in applied mathematics and physics / Sep 2007–Jun 2009
BSc in applied mathematics and physics / Sep 2003–Jun 2007