My Work

Software Architecture

I've been honing my skill of software design for two decades now, discovering new facets of it every day. Clean Code, Functional Programming, traditional OOP are essential tools in my toolbelt.

System Design

Designing complex system and their interactions is something I spend a lot of time thinking about and doing.

Coding

I wrote code in more than 20 programming languages on very different platforms. I love to find better algorithms, track down bugs, disassemble things and optimize for performance.

DevOps

I wrote code, I've deployed code, I've developed internal deployment pipeline, I've built systems that deployed customer's code 50,000 times a day. I'm a fan of Kubernetes and Docker, but I've done it all.

Lead and Mentor

I know how to lead, remove obstacles, and help people reach their true potential.

Learn New Things

Learning is a life-long passion for me. If I have some free time — I'm always learning something new or getting more in-depth in the things I've known.

Postmark — Transactional Email Delivery Service.
2020

Data Science
Postmark is a large email services provider that generates an extensive amount of data that needs to be analyzed.
2020

Data Analytics Pipeline for Anomaly Detection and Suppression Based on Apache Spark
Technical Lead.

Apache Spark
Scala
Apache Kafka
Databricks
Statistics

    Conveyor — Version control meets task management.
    2017 — 2020

    Continuous Integration and Deployment  Engine
    A CI/CD service tightly integrated with Conveyor application for customer's use.
    2017

    Deployment Engine Capable of Custom Script Execution for Conveyor Customers
    Technical Lead, DevOps.

    Scala
    Play Framework
    Akka
    Docker
    AWS
    WebSockets
    JavaScript
    • Highly-available, fault-tolerant actor based design.
    • Microservice architecture, integrated through HTTP API.
    • Real-time log streaming.
    • Docker-based execution environment.
    Desktop Client
    Conveyor is a version control system integrated very tightly with its desktop application.

    That integration allows Conveyor to be more useful but puts much pressure on the client, making it the piece of the system that users use the most.
    2017

    macOS-only Desktop Application
    Senior Software Engineer.

    Cocoa
    Swift
    SQLite
    Core Data
    Git
    libgit2
    2018 — 2020

    Cross-platform Desktop Application
    Technical Lead, DevOps, Training.

    Electron
    TypeScript
    React
    JavaScript
    CouchDB
    PouchDB
    Git
    Cloudant
    MobX
    NodeJS
    • Implemented 50K LOC desktop client from scratch, based on Electron, TypeScript, and React.
    • Successful training of Ruby and JavaScript developers and designers for TypeScript, Electron, and React.
    • Created offline-first desktop client architecture, handling network failures transparently and with minimal effect on the user.
    • Designed and implemented entirely reactive UI architecture, instantly responding to changes in the shared data from other clients.
    2018 – 2019

    Distributed, Offline First Data Pipeline for Desktop Client
    Technical Lead, DevOps.

    CouchDB
    Cloudant
    PouchDB
    MySQL
    NodeJS
    • Created network failure resistant, offline first, Cloudant ↔︎ PouchDB synchronization service.
    • Designed and lead the development of two-way MySQL and Cloudant synchronization service.
    • Designed and created high-throughput, low-latency Cloudant to MySQL change following service in NodeJS.
    Google Cloud Migration
    Development started on dedicated hosting servers in ServerCentral, but due to the capacity planning needed to move to a separate environment.

    Google Kubernetes Engine was chosen as one of the leaders  to ensure future scalability and other deployment efforts.
    2018

    Migrating Conveyor from Dedicated Hosting to Google Cloud and Google Kubernetes Engine
    Technical Lead, DevOps, Training.

    Google Cloud Platform
    Kubernetes
    Docker
    MySQL
    ObjectiveFS
    • Migration from custom ServerCentral hosting environment to Google Cloud Platform.
    • Containerized all the services using Docker and Kubernetes.
    • Creating completely software-defined, auto-scaling, and auto-recovering infrastructure with Kubernetes.
    • Automated deployments and Docker image building procedures.
    • Deployed and validated the performance of the ObjectiveFS storage system for repository storage.

    Wildcloud — Internal Resource Provisioning Service.
    2016 — 2017

    Internal Server Provisioning
    At that moment, a lot of Wildbit servers resided on dedicated physical machines running XenServer. We wanted a system that provisions the machines based on the requirements balances them across hypervisors and registers them in Infoblox for DHCP configuration and inventory keeping.
    2016 — 2017

    Web Console and Backend for Provisioning Servers
    Technical Lead, DevOps.

    Scala
    Play Framework
    Akka
    XenServer
    Infoblox
    ActiveDirectory
    CentOS
    • Created a backend system for provisioning, controlling, and balancing VMs through XenServer API.
    • Created web application in Play Framework for provisioning and monitoring the instances. The user has a choice of predefined resource types and a list of supported images.
    • Created a backend and an API for connecting to the Infoblox system for automatic provisioning of IPs, storing service details, and keeping inventory.

    DeployBot — Continuous Deployments as a Service.
    2013 — 2017

    Standalone Deployments Service
    With deployments being one of the most successful features of Beanstalk, it was decided to create a separate product just for deployments, originally called dploy.io, and later renamed into DeployBot.
    2013 — 2017

    Separate Deployment SaaS Product Based on Beanstalk
    Project and Technical Lead, DevOps, Customer Support Engineer.

    Ruby on Rails
    MySQL
    Linux
    Redis
    Nginx
    Passenger
    NewRelic
    Docker
    Clojure
    ServerCentral
    Customer Support
    • Extracted and re-imagined the code from Beanstalk codebase into a separate product.
    • Designed and implemented significant upgrades to deployment experience from Beanstalk, like Docker-based environments with custom container support. Customizable build steps, and many more.
    • Lead development and project roadmap with a second developer on the team.
    • Designed, built, and maintained underlying server infrastructure.
    2016

    Acquisition
    Project and Technical Lead, DevOps, Training.

    AWS
    Stripe
    • After the acquisition offer, I was in charge of the preparation of the product for sale.
    • Onboarded the new development team, which involved documentation, personal training, and pre-sale code preparations.
    • Migrated from the custom Chase Paymentech billing system to Stripe.
    • Migrated the server infrastructure from ServerCentral to AWS.

    Beanstalk — Version Control with Human Face
    2007 — 2015

    Web Application
    Beanstalk is a version control hosting that one of the first combined the VCS hosting service and a useful web application for collaborating on the code hosted in the repositories.

    Beanstalk web application is a high traffic service, with more than 2-3m views per month, with stringent requirements for availability.
    2007 — 2012

    Main Web Application
    Original
    Technical Lead, DevOps, Customer Support Engineer.

    Ruby on Rails
    MySQL
    Linux
    Redis
    Nginx
    Passenger
    NewRelic
    Chef
    Ansible
    AWS
    ServerCentral
    Rackspace
    EngineYard
    Chase Paymentech
    Sphinx
    Monit
    Git
    Subversion
    Mercurial
    Customer Support
    • Architected and implemented the Ruby on Rails application.
    • Architected and implemented the backend infrastructure.
    • Designed, built, and maintained underlying server infrastructure.
    • Developed and extended Git, Subversion, and Mercurial support libraries.
    • Oversaw scaling for growth from 0 to millions of page views a month.
    2012 — 2014

    Commit Caching Pipeline
    Technical Lead, DevOps.

    Clojure
    JGit
    SVNKit
    MySQL
    Redis
    JVM
    • Architected and implemented a robust commit caching pipeline, processing 50,000 to 100,000 incoming commits.
    • Pipeline implementation resulted in a 30x increase in performance in critical areas, and dramatically reduced service interruptions for customers.
    2013

    Version Control RPC Service
    Technical Lead.

    Clojure
    JGit
    SVNKit
    MySQL
    Redis
    JVM
    • Architected and implemented a service that performed a lot of expensive operations on JVM-backed JGit and SVNKit, using Clojure. That helped offload some tasks from the Ruby application and resolve both the performance issues in critical areas and open up possibilities for new features.
    2013 — 2015

    Code and Commit Search Pipeline
    Technical Lead.

    ElasticSearch
    Clojure
    JGit
    SVNKit
    MySQL
    Redis
    JVM
    • Architected and implemented a Clojure-based indexer for ElasticSearch for commits, deployments, and other data structures of Beanstalk.
    • Designed, built, and maintained underlying server infrastructure.
    • ElasticSearch cluster configuration and maintenance.
    Version Control Hosting
    A critical part of Beanstalk's functionality is hosting Git, Subversion, and, at one point, Mercurial repositories and providing fast, uninterrupted access to those for the users.

    On an average day, Beanstalk can be processing from tens, to hundreds of thousands of incoming commits.
    2007 — 2014

    Git and Subversion Hosting Platform
    Technical Lead.

    Git Hosting
    SVN Hosting
    MySQL
    Linux
    Ruby
    C
    Redis
    Lua
    Apache
    mod_svn
    NFS
    ZFS
    Monit
    Chef
    Ansible
    AWS
    ServerCentral
    Rackspace
    EngineYard
    • Designed, implemented, and maintained the highly available Git and Subversion hosting backends.
    • Designed, built, and maintained underlying server infrastructure.
    • Implemented and maintained various custom patches for SVN modules, Apache, OpenSSH, Git HTTPS that were necessary because of the nuances of mass-hosting version control repositories.
    2013 — 2014

    Geographically Distributed Git Delivery Service
    Technical Lead, DevOps.

    DynDNS
    Ruby
    Git
    MySQL
    Percona
    Redis
    • Architected and implemented a novel solution for synchronization of multiple read/write mirrors of a single repository across regions.
    • Architected and created a solution for transparent and automatic mirror discovery for customers depending on their region.
    • Designed, built, and maintained underlying server infrastructure.
    Deployments
    Automated deployments feature is a staple for Beanstalk users. Due to its nature, it's very sensitive to any interruptions or correctness issues.

    I was in charge of the architecture, implementation, maintenance, and advanced customer support for the deployments feature throughout all my years on Beanstalk.

    On an average day, Beanstalk would run up to 50,000 customers' deployments.
    2008 — 2014

    Continuous Deployment Service
    Technical Lead, DevOps.

    Ruby
    Git
    SVN
    MySQL
    Redis
    MongoDB
    Clojure
    NodeJS
    WebSockets
    • Architected and implemented a highly available deployment engine, serving up to 50,000 customers' deployments daily.
    • Provided ongoing technical day-to-day support for a pool of hundreds of thousands of users.
    • Designed, built, and maintained underlying server infrastructure.
    • Evolved the engine through a series of rehauls to meet the demands of changing time.
    2014

    Continuous Integration Service
    Technical Lead, DevOps.

    Erlang
    Dialyzer
    Docker
    Git
    SVN
    MySQL
    Redis
    JavaScript
    NodeJS
    • Architected and implemented a CI/CD system using Erlang and Docker to create a highly-available and performant service for the customers.