Nursat+ LLC (part of Kazakhtelecom)
Team player, have experience with high-loaded and enterprise projects. I find these books interesting and useful for my career: Toby Segaran "programming collective intelligence", “5-phase project management” Robert K. Wysocki, “building microservices” Sam Newman, “Design Patterns” The Gang of four, Adrian Mouat “Using Docker”, Bruce Eckel “Thinking in java”, Joshua Bloch “Effective java” etc.
In this company I am responsible for developing business logic on the server side, in particular the order, products, search and file storage services. Also I am responsible for processes and methodology of the dev team. It includes control of the releases and task priority and all kind of engineering stages like: product requirements researching, code implementation, testing and delivering to production. I supervise the code quality, code conventions, documentation and design. Also I am responsible for the stack of technology. So i often do the code review, check queries to data storages and optimize them. As well I do the coding interview with the new candidates.
We configured a continuous deployment with a Docker, Jenkins and gitlab. If the spring-boot application passes all tests, then the artefact is going to Docker container and then it delivers to the production. We use the MYSQL for storing a main valuable entities because MYSQL provides ACID specifications. Another data which is not important but requires to be persistent is stored in Redis. And we use Elasticsearch for searching the documents.
I am really inspired by the Eric Evans’ DDD book therefore my team at Nursat+ uses his approach everywhere.
Spring-MVC; Spring-boot; MYSQL; Elastic Search; Redis; DDD; Jenkins; Docker
I developed a billing service which passed a high load more than 2500 rps. It was a 800k DAU. And load of the platform was more than million rpm on the peak. I wrote code on PHP, and I used all of my experience to do my best. In particular, design patterns, OOD specifications and methodologies like SOLID and DRY, knowledges of the MYSQL InnoDB Engine and its indexes. Everywhere in the project I tried to write code with the best asymptotics. We had a lot of logs and metrics to check our solutions on production. Time after time I had successfully improved the performance of my services and used Memcached to store the cache and it included useful tactics to work with cache. For example, multiget, invalidation, focus on finding the most demanded data.
Apart from Memcached, we used lots of inhouse tools which actually are the programs written on C++. For instance if we needed to persist some data such as RB-tree, HashMap or Queue we used the C++ programs which provided it. There was many sharded and replicated data. So as I was a member of the billing group I made a lot of reports which helped to increase company’s earnings. So it was tricky to collect data which was under the load and divided by the difference servers.
Spring-MVC; MYSQL; Apache Solr; Redis; Jenkins; Vagrant; Yii Framework; Tornado Framework;
I was invited to this company to develop a new car classified platform. They had a legacy site which was very popular in the country (TOP-20). So company got me a little group of two coders and fixed deadlines. We had to develop a new service based on a lot of legacy data. So the plan was to use MongoDB everywhere because we could make the migrations simple. First of all we did the migrations. We got tables one by one and tried to transfer it to new schema. Secondly, we had to develop decomposited modules, which we divided by each member of the developing group. I was responsible for developing search and news modules. I stored news in MongoDB and cached a top of them to Memcached. Every advert was stored in mongodb. And every change of advert went through RabbitMQ and processed by consumer workers. I developed a search core for adverts based on Apache Solr which provided the Russian morphology, stemming and difficult kinds of aggregations.
Yii Framework; RabbitMQ; Apache Solr; MongoDB; Memcached
It was subsidiary company of “Choco-family”. They already had a success projects like chocolife.me and chocotravel.kz and then they planned to create the biggest marketplace in Kazakhstan. Their team lead was a former twitter software engineer so I decided to work for them very fast. I developed ordering module which included admin panel and business logic like order state machine, logistics and warehouse inventorisation. I was involved in e-commerce domain model and helped our operations director to automise a lot of things. I loved the project so much that I stayed in the office for three days until we released our product. Within the first 5 minutes after launching the website, we saw 1000 visitors. And everything was fine, we had no downtime. I got a good bonus. So then started routine without overtimes. On the way I had read a Toby Segaran’s “Programming collective intelligence” and proposed my manager to write a recommending system-based on my own algorithm based on collaborative filtering algorithm.This brought the company some extra money.
yvision is blog platform and when I worked there it was at the top of kaznet.
My responsibilities were:
- Optimization of requests.
- Adding more caches
- Migration of data from Postgres to Mongodb cluster (Master-Slave)
- Refactoring the existing code
- Development of a new functionality
Zend Framework; Mongodb; PostgreSQL; Memcached;
It was my first contract job because before I was a freelancer.
There most of the time I was an only one developer. So I was responsible for email-marketing service.
It was a lot of SMTP self-hosted services, and MYSQL base where I stored statistics. It included email campaigns, CTR, click rate, and bounces. I chose a Centos and first MTA was a Qmail, then exim, then postfix. Postfix showed the best performance. I chose a MyIsam engine because the number of inserts was more than 3 millions a day. I had a lot of problems with MYSQL and MTA’s. MYSQL went down a lot of times and I wrote a lot of hacks to fix it. MTA’s were often crowded because the antispam “gray list” algorithm of the mailing services as gmail, yahoo, mail.ru rejected a lot of mails then returned them back and crowded my mailing queues. So it was tricky and very interesting to solve problems like that.
Linux; Java; PHP; MYSQL; Kohana Framework; Sendmail; Qmail; exim; postfix; DKIM