Обо мне

I'm Andrei Solovev, the CTO and Full Stack Web Developer (from Frontend to Backend and DevOps). I'm vastly endured, from 2010 to present.
I'm enthusiastic, passionate and diligent with many years of experience gained in different projects and various types of tasks. I know how to be organised, focused and self motivated and able to work as part of a team, independently or a balanced mixture of both. I'm naturally curious and can quickly adapt to new environments. I'm always interested in learning new technologies and I try to stay informed as much as possible.

Профессиональные навыки
Опыт работы
CTO, Team Lead & Full Stack Software Engineer (Full time, at office in Moscow, Russia)
Январь 2019 — Апрель 2019 (4 месяца)

- Proposed lot's of new technics for development environment.
- Rethink roadmap for nearest 3 month.
- Prepare sprints, check execution and report to PM.
- Extend development team by adding 2 new developers.
- Operate with external and inhouse developers in 2 offices in 2 countries.
- Split everything from mono-repo to multi-repo and decouple code.
- Rebuild and extend admin panel (TS+KOA+PUG).
- Implement some parts of OCPP 2.0 protocol.
- Create CI pipeline for PR with tests.
- Prepare Kubernetes cluster (EKS) to switch from ECS.
- Speed up development environment.
- Create DB model validators (sequelize-typescript).

Isina inc.
CTO, Team Lead & Full Stack Software Engineer (Full time, remoted)
Октябрь 2017 — Октябрь 2018 (1 год и 1 месяц)

- Design from scratch the Architecture of isina.com for highload:
- - Totally 16 microservices running in Kubernetes (EKS) cluster, with various resources and replicas depending on service importance with autoscaling.
- - About 80% of user data locates in DynamoDB, and unlimit autoscales depending on traffic. Other 20% locates in Postgres sql, as we need sql query syntax for that data.
- - Lot's of lambda (serverless) functions. To reduce price for common tasks.
- - XMPP (Ejabberd) to handle private users messages and broadcast chat. Custom authorisation flow based on proxying data through GraphQL server. We store user_id in Ejabberd database, but show slugs, names and avatars on front. All convertation magic happens on GraphQL server.
- - GraphQL server as single point of API. Other services hidden from ingress (internet), isolated from each other and accessible only from GraphQL servers by egress (local network). Custom resolvers helps us properly handle and processed data async in several threads and handle all errors. Local inmemory caching for user_id <-> slug converting.
- - Custom OAUTH server with custom JWT tokens. Refresh tokens stores in Redis store (encrypted) and the key is session id. Access tokens has short lifetime, and stores user_id, email, role, and some custom info. We provide half a year sliding session.
- - Custom email service with smart priority queue based on aws SES. Can handle and process unlimited emails. Smart queue rebuilds on each api call, and pass highest priority emails firstly. We can process large email marketing campaign and in the meantime send a "password reset" email.
- - Custom api for Elasticsearch. Post, Put, Delete and Get data as easy as possible. No one can screw up or destroy data.
- - Custom Notification API. We use Redis API to pub/sub message, Websoket API to deliver and browser Notification API to show it.
- - Custom logging. Multilevel extended logging stores in daily indexes at ElasticSearch.
- - Custom image processing based on Sharp js.
- - Custom media processing based on lambda function converter for audio and on aws ElasticTranscoder for video. Special signed url for media from s3.
- We throw out and rewrite all legacy code.
- Frontend development environment: came up with the idea, help with implementation. (React js, mobx, Webpack, Babel, HMR, SSR, custom GraphQL-query-builder, css-hot-loader, node-sass, postcss, eslint, svg4everybody, svg-sprite-loader, jest)
- Backend development environment: came up with the idea, implement.(Node js, Express js, dynamoose, pg, pg-native, redis, Webpack, Babel, eslint, jest). Custom Docker containers with local DynamoDb, Postgres, Redis.
Implement lot's of custom helpers for speed up code writing process.
- Implement custom extended GraphQL API.
- Create CI/CD pipeline with testing and notificating about build status. And of course with blue/green deployment.
Invent 90% of all tasks, reviews code and check final results.
- Found 5 new developers in 2 weeks, but interviewed hundreds.
- Lot's and lot's other things all over the project.

Full Stack Software Engineer (Full time, at office in Munchen, Germany)
Декабрь 2016 — Сентябрь 2017 (10 месяцев)

- UI library ShowCar-UI:
- - UI library documentation generator from .md and .html files (Node js).
- - Built from scratch dozens of components and refactor old ones (jQuery, Zepto) => Vanilla JS (ES6).
- - UI and UNIT testing tool for CSS and JS (unit and integration).
- - This UI library helps with avoiding code duplicate across company.
- - About 90% of JS bugs and errors was solved.
- - AutoScout24 and all subsidiaries projects looks and feels the same on 80% browsers (world usage statistic).
- - Total size of main scripts was 400kb reduced.
- Public/admin pages and GraphQL API for AutoScout24 dealers (as an example https://www.autoscout24.de/haendler/audi-zentrum-regensburg):
- - (Preact JS (React JS), Redux, GraphQL, Node js, Webpack, Jest, Docker, AWS (EC2 containers, Dynamo DB, S3))
- - Rewrite from scratch legacy code.
- - Architect GraphQL API.
- - Create lot's of helpers and related components.
- - Help with AWS integration.
- - Help with old (legacy) API integration.
- - CI/CD, testing.
- Frontend develop and build pipeline with CI/CD (Travis) and tests for all AutoScout24 frontend developers:
- - Blue/green deployment.
- - Rejects current build when new code comes.
- - Simultaneous unit and integration tests (css, js) for 9 major browsers.
- - Slack notifications of build status.
- Assistance with bug fixes and refactoring for all web affected teams in AutoScout24:
- - Was the man who can solve lot's of JS problems. Often came to other teams for help.
- - Ones in 2 weeks came to diffrent team and help with refactoring legacy js code.
- Contribute to dozens of frontend related projects by AutoScout24.
- UI Form autocomplete library (spend lot's of time on it):
- - Works the same across all major browsers and devices (that was the main challenge).
- - Two lists in one. First for common items, secound for others.
Handle and show errors.
- - Tests on deploy.

Speen Inc.
Full Stack Software Engineer and DevOps (Part time, remoted)
Октябрь 2016 — Август 2017 (11 месяцев)

- Assistance with core architecture (Frontend, Backend, Server side).
- SocketIO with NodeJS like a fast web transport for auction - Implement realtime auction with maximum 200ms delay before bid comes to db and returns back. Time till the end of auction comes directly from server, at helps to synchronise all the bidders around the world. Small server (around 40$) can handle 500 simultaneous bids.
- Docker integration - local and production environments are the same.
- CI with CircleCI - Deploy was developed in the way, that it can be processed harmless directly in auction time.
- Auto creation server environment based on Ansible.
- Fine tune NGINX, Mysql, PHP-FPM, Fail2ban - Blocking bots, preventing DDoS and speed up all the server tasks. Apps are faster for at least 10 times.

Instant Mage LLC
Frontend web developer (Part time, remoted)
Август 2015 — Ноябрь 2015 (4 месяца)

- Main front template rebuild
- Admin backend template integration with YII
- Users Magento template integration

Self employed
Февраль 2010 — Август 2015 (5 лет и 7 месяцев)

- Conclusion of contracts with customers
- Helping designers make better styles or making together psd layouts
- Template creating for popular CMS
- Developing modules, plugins, calculators, galleries
- Rebuild typical behaviors of CMS core for customers needs
- Making custom admin part without any CMS
- SEO optimization
- Mobile optimization
- Speed optimization
- Responsive adaptive design integration
- Server tune-up for higher performans with lower costs
- Phonegap integration

Высшее образование
Международный институт экономики и права
Факультет: Экономики и управления
Сентябрь 2004—Июнь 2009 (4 года и 9 месяцев)