With over 13 years of experience in both individual contributor and leadership roles,
I specialize in designing and building distributed, cloud-native systems and leading
company-wide initiatives. I have a strong background in managing the full project
life cycle, from requirements analysis through to launch and ongoing evolution,
consistently delivering high-impact solutions that drive organizational success.
Areas of Expertise
Java, Spring
Java 8-21. Various parts of the Spring framework: Boot, Core, Data,
Security, AMQP.
Maven
Company wide multi-module Maven project structure facilitating
centralized dependency management.
Python, Behave
Mostly in the context of BDD, but also built CLI tools in Python.
RabbitMQ
Have experience as both a user and operator of the broker.
PostgreSQL
Used to write complex analytical queries including CTEs, recursive
queries, and window functions.
Kubernetes, Docker
Developing and operating distributed containerized applications on
Kubernetes.
Helm, Helmfile
Experience both building and consuming Helm charts to package and deploy
complex applications.
Terraform, Ansible, Packer
Infrastructure as code; Building custom AMI images for self-hosted CI
infrastructure.
Prometheus stack
Developing of domain-specific alerting rules and dashboards.
TeamCity
Designing and rolling a highly customized self-hosted CI solution across
entire company.
Fault Tolerance
Ensuring continuous operation of RabbitMQ in presence of various network
and hardware failures.
Scalability
Building cloud native REST services capable of seamless horizontal
automated scalability to accommodate required loads.
Reliability
Leveraging liveness and health checks to ensure availability of the
services. Incorporating automated retry policies with reasonable backoff strategies. Using
automated continuous monitoring and alerting to reduce incident detection and recovery time.
Replication
Defining and implementing replication strategies to ensure data
consistency and availability in case of partial unavailability of RabbitMQ cluster.
Professional Experience
Staff Software Engineer at Picnic Technologies
Enhancing Stability, Reliability, and Fault Tolerance of RabbitMQ Broker Integration
Conducted a comprehensive analysis of RabbitMQ usage patterns to identify best practices
allowing a more robust integration.
Designed a new messaging topology to significantly improve the scalability of the broker.
Led the adoption of the latest best practices, enhancing overall system reliability by
preventing loss of messages.
Enhanced observability by implementing metrics collection for key integration
components, enabling proactive alerting and faster issue resolution.
Comprehensive CI ecosystem modernization
Performed long and short-list selection of the potential CI vendors. Implemented 3 PoCs and
led technical evaluation of the results along with the final selection.
Designed and implemented new CI solution including infrastructure and a DSL for standard
pipeline definition.
Productionized Nexus Repository Manager setup: Migrated deployment from Amazon ECS
to Kubernetes and artifact storage from Disk to AWS S3.
Combined, it enabled average speedup of the build pipelines by 50%. The largest project build
time was reduced from 1 hour down to 15 minutes.
Technologies:
Kotlin
Built opinionated DSL for defining standardized CI pipelines
adhering to
the industry best practices.
, Maven,
Python
Built CLI tool for managing dependency cache persistent across build
agents.
, Kubernetes, Docker containers,
Terraform
Designing and provisioning CI infrastructure adhering IaC principles.
,
Packer, Ansible
Fully automated creation of a custom AMI image for TeamCity CI agents.
,
AWS [EC2, S3]
Provisioning CI agents on demand. Storing artifacts and dependency cache
on S3.
, TeamCity,
Prometheus
Continuous monitoring and alerting for the CI infrastructure.
.
Tech Lead at Picnic Technologies
Warehouse Management Systems
A suite of services with multiple client applications providing automation for the key processes
in the warehouses.
Leading team of 12 engineers to design, develop and launch new features.
Introduced following practices to streamline development productivity and improve service
stability.
Mitigated performance degradation of DB layer by limiting operational data retention.
Spearheaded adoption of custom business metrics and alerting.
Successfully implemented a new team structure: Squads.
Adopted BDD technique for both backend and frontend.
Technologies:
Java 11, Maven, Spring Boot, Kubernetes, Helm,
PostgreSQL (AWS RDS), Hibernate, jOOQ
RDBMS to ensure consistency in across all operations. Hibernate is used
initially as main ORM, but replaced with jOOQ due to performance issues.
,
RabbitMQ
Used mainly as a messaging bus to asynchronously inform loosely coupled
services about changes in the state of the warehouse.
,
Python, Behave, Allure
Automated E2E BDD tests. Comprehensive suite of business scenarios
verifies the correctness of the whole system. Only 3rd party services are mocked. Allure is
used to visualize results along with deep details of the test execution, including captured
video.
,
Prometheus
Continuous monitoring, visualizing and alerting for the key infra and
business metrics.
.
Software Engineer at Google, through EPAM Systems
Platform for automated analysis, manual review and tracking of content gaps in Google Play
store
Improved runtime of automated matching by 45% by tuning caching strategies.
Reduced average partner onboarding time from 10 days to 3 days by implementing API for
self-service validation of books catalog format used for integration.
Reduced review time of potentially unlicensed books by 30% by showing the most similar
items and degree of similarity.
Designed, developed and launched workflow based application for review of books with
potentially adult content.
Led team of 5 engineers to develop and deliver new features.
Technologies:
Java 8,
Bazel
Build automation toolkit.
,
Guice
Lightweight dependency injection framework.
,
GWT
Definition of Web interface for manual match verification done in
Java.
,
Spanner
Distributed SQL database was used to keep track of the automated content
matching as well as QA of the matching results.
,
gRPC, Protobuf
Language agnostic definition of APIs and models for communication
between the backend and the frontend. As well as code generation of the basic boilerplate.
I managed Ivan for almost 2 years and he was a key part of our engineering team. Great s/w engineer
w/ amazing coding skills and ability to pickup any new technology or platform. What sets him apart
from others I've worked w/ or managed is that he's exceptionally good at design and architecture and
has always shown the ability to think about long term aspects of the project. He's also a solid team
player and there isn't anyone he can't get along with.
I definitely recommend Ivan to anyone looking for a great senior engineer or architect.
Andrew Howell
Ivan is a sharp and very skilled developer and team leader. He and I worked together developing
internal operations tools at Google where Ivan managed a team of globally-distributed software
engineers. He always made sure we were asking the questions, solving the right problems, and
prioritizing the right work. I highly recommend Ivan to any prospective future employer and hope to
have the privilege of working with him again the future!
Ariel Tolkachov
It is my big pleasure to recommend a highly skilled and motivated developer.
Ivan has been a big asset for my team. His continues efforts to provide the best code, with the
best documentation that benefits the business stakeholders is highly impressing.
As a product owner I can admit that Ivan's work made my life easier more than once.
I am confident that Ivan's technical and soft skills will be a tremendous benefit for anyone working
with him.