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 and Grafana, 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 (infrastructure app)

CV .PDF

Skills_

General

GoLang

golang-standards/project-layout, The Clean Architecture, goroutines, go app for k8s, channels, grpc, protobuf, amqp, 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

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

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

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

SQL, PL/SQL

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

HTML, CSS, jQuery, JavaScript

Twitter Bootstrap framework, bootstrap templates. HTML templates integration.
AJAX, jstree, FullCalendar, C3.JS charts, D3.JS charts, chart.js, jquery.rest, jquery.terminal e.t.c.

git

Pull request, merge, rebase, commit rollback. Forks, auto-deploy. Creation of the releases, extensions. Gitlab, Bitbucket, GitHub, code review, a lot of code review.

I also use

In the process of work I also use


Work experience (9 years, 5 months)_

Shelter Zoom (Remotely)

Tech Lead

11.2021 - Present (1 year, 6 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.

Pushwoosh (Novosibirsk city / Remotely)

Golang Developer

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.

NGS Technologies(N1.RU) (Novosibirsk city)

PHP Developer

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 continuous delivery system, Silex Framework, Cilex CLI Framework, Sentry, Grafana, Jira, Tsung.

VipParcel (Novosibirsk city)

PHP Developer

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.

YarCode (Krasnoyarsk city)

PHP Developer

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.

Communal Information Systems (Krasnoyarsk city)

Java desktop application developer

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.

Sitall-soft (Krasnoyarsk city)

C# desktop application developer

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_

SibFU The institute of space and information technology

Informatics and computing machines (master's degree)

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.

SibFU The institute of space and information technology

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

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.05.2023y.

Go to Russian version

mgerasimchuk.dev