A photo by @g.vasilyanov

Photo is taken by @g.vasilyanov


Petrov Vladislav

Practices DevOps

Teaches in Polytechnic University

Master of Science in Computer Information Systems

Summary

One day I found out that things I love and do for living are called "DevOps". By now I'm more than 6 years into it hands-on. But wait, what were those things?!

Being curious, eager to share the knowledge and care about others and myself.

Those three thing led me, the developer, out of the world of green "Run" button, into the world of

  • Caring for the whole product, not a limited scope
  • Taking people over process
  • Brining automation close to developers
  • Establishing & Improving communication channels
  • Making all kinds of things more accessible
  • Shifting culture out of blame and into cooperation
  • Streamlining processes & shortening feedback loops

Strong background in Linux administration and development. Passionate about security. Believes that DevOps is more than tools nevertheless knowing your tools is crucial.

My job title is Platform Owner o.O In real life, I'm leading the development and adoption of an internal platform. It already makes developers' lives easier and considerably lowers Time To Maker. It's achieved by making Software Development Live Circle understandable and easy to manage.

I have a team of wonderful engineers and an internal product. We build up processes to strategically define a new technology stack. Figure out and share best practices. Follow through with teams migrations.

Platform Engineer guarding mesh networks and multi-cloud Kubernetes instances.

I had a chance to become a Documentation Champion. It meant indexing existing documentation, brushing it up, actively sharing my doc writing know-how with the team, and incorporating it into Software Development Life Circle to ensure that it's always maintained by everyone in the team. While bringing documentation into SDLC is good, it also works great the other way. Storing documentation as code in a Version Control System next to source code your developers work on not only makes it more accessible to developers, it allows relatively easy integration with linters and other means of validation. We have not to forget observability! If your documentation is represented as a web site, you can now collect all kind of metrics.

Documentation is playing important role in the onboarding process but practical skills are crucial. I've attempted to improve it by shifting newcomer's first code change to their first day. GitLab is an awesome tool but it becomes difficult to manage when you operate in a company as big as Ocado. Even though we already had some level of GitLabForm integration its coverage was still relatively small and many things had to be tweaked manually. This led to me willing to bring this routing under the GitOps umbrella we valued in a team. After writing some custom tools to monitor GitLab's state I've covered all our team repositories. The process was not as smooth as I would like it to be, but it was definitely a win. Now to get access to all of the team's GitLab based resources newcomer has to make a code change, adding theirself to the group. It's more than just a code change because it also the first encounter with approval and deployment processes.

Here I met the best Team Leader I've ever seen - Marco Delgado. His positivity and energy resonated with those of my own. Working there was a blast!

Unfortunately, due to a death of a close relative, I had to take a step away.

It's a research lab at Peter the Great St.Petersburg Polytechnic University that took me to the interview straight from my bachelor thesis presentation. Next day I was working there. Through the following years of rapid growth I had a chance to be an System Administrator, Developer & DevOps Team Leader.

Amount of projects I took a part is somewhat insane, so here is a list most noticeable ones

Siemens Digital Farm

  • On-premises deployment and maintenance of OpenStack (MAAS + Ubuntu), Gitlab (OmniPackage & Source), Kubernetes
  • Fleet of Gitlab Runners of all sorts (Docker on Linux, Windows, Kubernetes)
  • Creation of CI/CD pipeline for tens of projects
    • written in Java, C(Linux kernel), C++, Rust, Go, WASM, JS, HTML, CSS (preprocessed)
    • deployed as binaries, datasets(ML stuff), packages(tar.xz, deb, rpm), running services (deployed to production/development)
  • Routine automation with Ansible (+AWX), SaltStack, Gitlab CI/CD, self-written stuff
  • Docker-compose for local development deployments (even with unix socket connections)
  • On premises deployment and maintenance of Docker registry (Integrated with Gitlab)
  • AWS deployments (EC2,Lambda, S3 based sites, Kinesis, KVS)
  • Terraform as deployment tool for AWS, libvirt, Digital Ocean
  • NGINX as a reverse proxy for every on-premises web service
  • Let's Encrypt for tls (including wildcard)
  • Zabbix as monitoring tool (not for stuff in k8s though)
  • nspawn as a tool for containerizing some services (for ex. guacamole)
  • Restricting access to Nvidia DGX1 by migrating workflow to Gitlab CI/CD and integration with Nextcloud

Not DevOps activities:

  • PostgreSQL as preferred DB applications
  • On-premises deployment and maintenance of Nextcloud, ONLYOFFICE, Calabora Online
  • Network Management:
    • Linux routers/boxes
      • IPTables
      • firewalld
      • ufw (user boxes)
      • named
      • dhcpd
      • networkd
      • NetworkManager
      • netplan
    • cisco, microtik routers
    • HP, ubnt Access Points management
    • LACP Bonds (802.3ad)
    • V(X)LANS
    • OpenVPN, WireGuard tunnels
    • Restricting ssh jumpboxes
  • On-premises deployment and maintenance of ZoneMinder
  • Mail server deployment and maintenance (tls, DKIM, SPF)
  • Racks, servers, UPS and storage installation
  • Cables management
  • AppArmor profiles creation
  • Got charters for creating labs logo and being positively involved in almost every hard problem accruing in lab
  • Won fights over Konica Minolta configuration

Development activities:

Common frameworks/libs:

  • darknet
  • OpenCV
  • Spring
  • Liferay
  • TensorFlow
  • Angular (single app applications accessing data via REST API)

Languages:

  • C (linux kernel modules)
  • C++ (embedded software, ML, video processing, native Linux GUI)
  • Rust (supportive tooling, embedded software)
  • Go (web services, data processing, Gitlab fixes)
  • Java (web services, ML)
  • Python (ML)
  • JS (web frontends)
  • PHP (Nextcloud fixes)

Novell stack integration for close to government and space company in Moscow:

  • Squid as proxy to limit and scan traffic by integrating Squid with Antivirus
  • VMWare as a tool to separate services in instances and provide HA
  • SUSE Linux Enterprise Server as an OS for s Novell and other services
  • Zabbix as a monitoring solution
  • Novell stuff:
    • GroupWise
    • Vibe
    • ZENworks
    • iPrint
    • and other marvelous products I've for the first time in this project

Since primary school I was surprisingly sure that I have to go to Polytechnic University in my city to go deeper into IT world. Right after school I got myself into Faculty of Technical Cybernetics within Peter the Great St.Petersburg Polytechnic University.

I just can't resist from mentioning FPGA related education here. It's plain awesome. From Physics to VHDL, Veriolog & actually getting results out of Gerber files.

Algorithms and software development for solving a problem of distributed monitoring of Data Storage

  • Written in Go
  • Relies on PaceMaker and etcd
  • Uses TCP as transport
  • Boring

Application for teaching intonation in English by pitch visualization

  • Android App (Java)
  • JNI to use C++ pitch detection library
  • Database of native audio examples

Also known as PhonePi, XXPhone & phone3141592

It's a project that started during course work in university but far too passionate to be restricted by it. Unfortunately not all members of the team were as involved as software team. Even though this project died a horrible death, it was an awesome experience!

Mission was to create a phone from parts not designed to be used in a phone. This constrained moved us away from existing android ready Chinese boards.

Software

  • Out of the tree vc4 driver
  • 3D printed body and buttons
  • Archlinux ARM
  • Custom Window Manager
  • Custom Boot Animation (Plymouth)
  • Custom Suite of Phone applications (GTK at first, but Qt later)
  • Hosted Archlinux repository to destribute updates

Hardware

  • RaspberryPi Zero W
  • SIM808
  • Ready to go screen, battery, charge controllers
  • Power and buttons controller (Digispark)
  • Manually wired motherboard
  • Jenkins (without pipelines)
  • Nagios as a monitoring solution
  • Git workflow trainer (GitHub based)
  • Scrum master

In front of computer since 2000 starting with MS Dos and Norton Commander on an Intel 286 based machine. Eight years later found out what Linux is and fell in love with it.

Lives in command line.