Gerasimchuk Mikhail

Software Engineer

About me_

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)

CV .PDF

Skills_

General

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.

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

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

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)

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

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.

Mongo DB

SQL, PL/SQL

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

I also use

In the process of work I also use


Work experience (10 years, 1 month)_

Tech Lead

ShelterZoom · New York, United States · Remote

11.2021 - Present (2 years, 3 months)

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.

Software Development Engineer

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

08.2022 - 08.2022

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 to be an authoritative confirmation of my skills and competencies.

  • 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.

    Golang Developer

    Pushwoosh · Novosibirsk, Russia · Hybrid

    11.2018 - 11.2021 (3 years)

    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.

    PHP Developer

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

    06.2017 - 11.2018 (1 year, 5 months)

    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.

    PHP Developer

    VipParcel · Krasnoyarsk, Russia · On-site

    09.2016 - 05.2017 (8 months)

    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.

    PHP Developer

    YarCode · Krasnoyarsk, Russia · On-site

    09.2015 - 09.2016 (1 year)

    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.

    Java desktop application developer

    Communal Information Systems · Krasnoyarsk, Russia · On-site

    01.2015 - 06.2015 (5 months)

    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.

    C# desktop application developer

    Sitall-soft · Krasnoyarsk, Russia · On-site

    10.2012 - 01.2014 (1 year, 3 months)

    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_

    Informatics and computing machines (master's degree)

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

    09.2015 - 06.2017

    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.

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

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

    09.2010 - 06.2015

    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.

    Last change: 27.02.2024y.

    Go to Russian version

    mgerasimchuk.dev