Gerasimchuk Mikhail

Software Engineer

About Me

About me

Gerasimchuk Mikhail Grigor'evich

Web developer from Novosibirsk


In the ShelterZoom, I'm Improving Golang codebase quality of our DocuWalk product by creating a new services layouts and adopting the clean architecture style. I'm improving CI/CD processes with GitLab, developing monitoring based on the Prometheus, Grafana and Alertmanager, improving database performance by queries, index optimize after stress testing sessions and try to make better our AWS Kubernetes based technical ecosystem.

For the past few years, I've been working on my own project in my spare time — teamcoding.ru.

These repos show some of my skills:
- github.com/mgerasimchuk/space-trouble (business app)
- github.com/mgerasimchuk/protty (cloud native app)


Download Printable Resume

Technical Skills

I can say i'm quite good at

SQL, PL/SQL

Index usage, сomplex queries, virtual tables, views, stored procedure, triggers. MySQL, PostgreSQL.

PHP8, PHP7, PHP5.6, Yii 2, Kohana 3, Slim, Silex, Cilex

JRPC/REST API, PHPUnit, Threads, pcntl, XDebug, XDebug profiling.
Yii2: Advanced template, Миграции, Active Record, table input, widgets, routing, RBAC.
Kohana3: ORM, mmp migrations, Smarty, Minions Task.

Testing (Unit, Integration, Stress, Acceptance)

Unit: TDD, BDD testing, PHPUnit(MockBuilder, ReflectionClass, Coverage), Codeception frameworks. Fixtures and Faker extensions to generate mock data, Golang test(gomock and gounit packages, HTTP recorders)
Integration: docker-compose based with infrastructure/svc mocks by Wiremock(for HTTP APIs), Gripmock(for gRPC API), Localstack(for AWS)
Stress: Tsung, Yandex tank, JMeter, BlazeMeter, recording and reproduced users' sessions with Nginx access logs and Tsung sessions.
Acceptance and Smoke: Codeception, Selenium, Selenoid for UI testing(with session video recording)

DevOps, Tooling, SRE

Cloud platforms (AWS, GCP, Digital Ocean, Hetzner): Configuring Kubernetes(self-hosted and as a service), Load balancing, virtual network, S3, CDN, configuring LAMP/LEMP stack on VPS. Configuring and interacting with AWS services - EKS/ECR/XRay/SNS/MSK
Kube Prometheus stack: PromQL, SLI/SLO metrics/budgets/alerts, Alertmanager API, Grafana dashboards creating and delivering through the CI/CD with Grafana API / helm charts, Prometheus push-gateway configuration, Prometheus record rules, product and infrastructure alerts, Alertmanager receivers customization
Helm: Creating templates for business apps, Grafana dashboards, Prometheus rules/alerts, infrastructure apps
Terraform: Using 3rd party providers for describing infrastructure as a code
GitLab, GitHub: Creating pipelines and workflows from scratch for testing(unit+integration), linting, building business applications and delivering to the production through the dev and stage environments. Creating and configuring self-hosted gitlab shell runners. Creating custom integrations(review reminder bots, developers mention mechanisms, metric exporters to the ES and Grafana) with the GitLab API

Mongo DB

Indexes, optimizations with explain, aggregation framework.
Certifications:
MongoDB Basics
MongoDB for Developers
MongoDB Aggregation Framework
MongoDB Basic Cluster Administration
MongoDB Diagnostics and Debugging

OpenAPI/Swagger Specification

With the "API Design First" approach, using OpenAPI/Swagger Specification and Swagger-UI. Writing specification for GET, POST, PUT, PATCH, DELETE requests with definitions. Using specification to runtime requests validation. Using swagger interceptor to generate documentation based on existing API

K8S

DigitalOcean k8s(+DO LoadBalancer and persistent volumes), GKE k8s, AWS k8s, self-hosted k8s cloud, Rancher k8s, kubectl, helm charts, autoscaling, ingress controllers (traefik, ingress-nginx, voyager, multiple ingress-nginx controllers in the cluster), network policy (namespace isolation), NodePorts, SSL installation / cert-manager, Linkerd, istio, k8s HTTP API, troubleshooting, traffic sniffing by ksniff, tcp-dump and wireshark

GoLang

golang-standards/project-layout, The Clean Architecture, go app for k8s, goroutines, channels, generics, grpc, protobuf, amqp, kafka, graceful shutdown, gowrap(custom templates), etc.

In the process of work I also use

WORK EXPERIENCE

My previous associations

Nov, 2021
Present

Tech Lead

ShelterZoom · New York, United States · Remote

In the ShelterZoom, I'm Improving Golang codebase quality of our DocuWalk product by creating a new services layouts and adopting the clean architecture style. I'm improving CI/CD processes with GitLab, developing monitoring based on the Prometheus and Grafana, improving database performance by queries, index optimize after stress testing sessions and try to make better our AWS Kubernetes based technical ecosystem.

Roles: Lead Golang developer, Tech Lead

Used languages, technologies, and tools: GoLang, gRPC, protobuf, WebSockets, REST, Prometheus, Prometheus Alertmanager, Docker, K8S, MongoDB, Elasticsearch(AWS OpenSearch), Kafka, BlazeMeter, JMeter, Grafana, Kibana, GitLab, Microservices, AWS(X-Ray, CloudWatch, VPC, MSK, EKS), Hyperledger.

Aug, 2022
Aug, 2022

Software Development Engineer

Amazon Web Services (AWS Shield) · Vancouver, Canada · On-site

I've written 0 lines of code for AWS, but my inbox contains over 300 email correspondences with my AWS Shield development team manager and employees of the immigration service.

Unfortunately, due to circumstances beyond my control and those of Amazon, I was unable to start working on the AWS Shield project because the Canadian immigration agency did not approve my work visa within the specified timeframe.

Nevertheless, I still decided to reflect this experience into my career path, as I consider it an authoritative confirmation of some of my skills.

  • I successfully completed all three rounds of interviews, including the loop, and received the final job offer on August 16, 2022, to join the AWS Shield team, which I accepted.
  • I traveled to Kazakhstan to take the IELTS language exam and prepare numerous other documents for immigration to Canada.
  • I submitted the entire immigration document package.
  • I signed numerous papers and contracts from AWS and even reserved internal mail and a badge.
  • However, after six months of active collaboration with the Canadian immigration agency and the immigration assistance outsourcing agency Vialto, my documents stalled at the very last stage of the review.
  • Amazon extended the offer several times, and the immigration application issue escalated to Canada IRCC, involving both Amazon and parliamentarians working with Vialto.
  • After a year and a half since receiving the offer, unfortunately, a happy ending did not occur, and all I have left is this long journey that did not conclude as I had hoped.
  • On January 4, 2023, my documents were still in the final review stage at Canada IRCC, and Amazon did not approve further offer extensions.

  • This marks the end of my FAANG and Canada immigration story, but unfortunately, not in my favor.

    Nov, 2018
    Nov, 2021

    Golang Developer

    Pushwoosh · Novosibirsk, Russia · Hybrid

    Writing microservices for pushwoosh.com in Go, according to the clean architecture style, configure them with Consul, cover Prometheus's metrics, wrap it in Docker, and deploy/watch/scale in K8S. I lead and develop new products in the company - was making key decisions connected with the Facebook Messaging technology which was integrating for the new Abandoned Cart Recovery product. I write Go microservices of the platform with a load of up to ~15000 RPS(from ~40K RPS to ~110K RPS total in the cluster).

    Roles: Middle Backend Engineer L1, Middle Backend Engineer L2, Middle Backend Engineer L3, Senior Backend Engineer L1
    Teams: Strategy, Abandoned cart sub-product, Customer Data Platform sub-product, Core, Production, SRE

    Used languages, technologies, and tools: GoLang, gRPC, protobuf, Prometheus, Consul, Docker, K8S, PHP7(+daemons in php), PostgreSQL, MongoDB, ClickHouse, Cassandra, Kafka, RabbitMQ, Redis, Tsung, Yandex tank, Grafana, Redash, Gitlab, Microservices, REST API.

    Jun, 2017
    Nov, 2018

    PHP Developer

    NGS Technologies (N1.RU) · Novosibirsk, Russia · On-site

    Real Estate Project Group N1.RU
    API development, with ~500 RPS load, for vue.js webapp and for Android, iOS mobile applications.

    Roles: Middle PHP developer
    Teams: Desktop Web App API, Mobile Apps API

    Used languages, technologies, and tools: PHP5.6, PHPUnit, MongoDB, Elastic Search, Redis, Swagger/OpenAPI, XDebug, RabbitMQ, Docker, Drone CI/CD, Foreman, Silex Framework, Cilex CLI Framework, Sentry, Grafana, Jira, Tsung.

    Sep, 2016
    May, 2017

    PHP Developer

    VipParcel · Krasnoyarsk, Russia · On-site

    Work on VipParcel and ExpressFromUS projects. Modules development, integration with post services(Aramex, DHL), ebay integration etc.

    Used languages, technologies, and tools: PHP5.6, jQuery, JS, HTML, CSS, Kohana 3 framework, twitter bootstrap framework, Smarty, mercurial(Bitbucket), composer, MySQL, phpStorm, Docker, RabbitMQ.

    Sep, 2015
    Sep, 2016

    PHP Developer

    YarCode · Krasnoyarsk, Russia · On-site

    Outsource development - CRM system, RESTfull API, ordering services, etc.

    Used languages, technologies, and tools: PHP5.4, jQuery, JS, HTML, CSS, Yii2, framework, twitter bootstrap framework, swagger framework, codeception framework, git (Bitbucket, GitHub), composer, MySQL, dbForge, phpStorm, LEMP stack.

    Jan, 2015
    Jun, 2015

    Java desktop application developer

    Communal Information Systems · Krasnoyarsk, Russia · On-site

    Support for the automation of business processes, companies providing energy.

    Used languages, technologies, and tools: Java, SQL / Eclipse, Aqua data studio, iReport, SVN, CVS, Lotus / MS SQL Server.

    Oct, 2012
    Jan, 2014

    C# desktop application developer

    Sitall-soft · Krasnoyarsk, Russia · On-site

    Support of the business process automation system for the printing company CJSC Sitall.

    Used languages, technologies, and tools: C#, Delphi, XML, SQL / MS Visual Studio, Delphi 7, SVN, SQL Navigator, Crystal Report / Oracle.

    Education

    What I have done in my academic career

    Sep, 2015
    Jun, 2017

    Informatics and computing machines (master's degree)

    SibFU The institute of space and information technology · Krasnoyarsk, Russia

    After defending the diploma project "Laboratory complex, for development and control of practical skills of working with the command interface of operating systems" was awarded a master qualification and awarded a diploma with honors.

    Sep, 2010
    Jun, 2015

    Computing machines, complexes, systems and networks (engineer degree)

    SibFU The institute of space and information technology · Krasnoyarsk, Russia

    After defending the diploma project "Development of the command interface simulator for teaching and controlling students' knowledge of the subject Operating systems. Logic of the application server" was awarded an engineer qualification and awarded a diploma with honors.

    Portfolio

    showcase of my latest works

    GET IN TOUCH

    Please feel free if you would like to have a chat.

    Last change: 22.03.2024y.