User Tools

Site Tools


Олег Бородин, программный инженер, разработчик

2022/10

Опыт разработки программного обеспечения более 10 лет, общий опыт работы значительно больше. Так или иначе фактичеcки работал по всему жизненному циклу продуктов: в ролях системного аналитика, архитектора, непосредственно разработчика, интегратора, эксплуатанта, сопровождающего продукт. Работал с компаниями различного профиля деятельности (банками, авиакомпаниями, прозводствами, перевозчиками, etc).

Основное направление деятельности это создание сетевых приложений, сервисов и их комплексов для обработки данных. Использовал микросервисный дизайн еще до того, как это получило название (2002, система сбора данных и управлением оборудованием различных классов). Создавал корпоративные/промышленные комплексы сбора, обработки и анализа данных, с высокой степенью ответственности/надежности.

Для разработки преимущественно использовал компиляторы С, Golang, С++, интерпретаторы Perl, Javascript, с необходимыми библиотеками и фреймворками. Менее, в силу необходимости использовал в разработке Java, PHP, Ruby, Schema, Python и далее, включая различные domain-specific language.

В основном в последние годы использую Golang, по причине действительно более высокой скорости разработки и отладки при его использовании, продуманной концепции и развитой базовой библиотеки.

Естественно, знаком и использую различные средства сборки, отладки, репозитарии кода, и прочее.

Отдельно отмечу, в силу большого диапазона продуктов, концепций, библиотек более детально изучаю их по мере практической необходимости и/или интереса. Изучаю достаточно быстро, в силу высокой повторяемости и общности индустриальных концепций. В состоянии самостоятельно найти готовые библиотеки, решения, фреймворки и оценить их качество и возможность их использования. Имею практические навыки преподавания и подачи материала.

Изучал и практикую как некий рабочий шаблон проектное управление от PM Institute. Изучал в оригинале. В 2013 сдал экзамен на знание основ проектного управления.

Практикую объектно-ориентрированный анализ и разработку. Считаю ясный, разумно продуманный дизайн приложений и их компонент условием качественного жизненного цикла этих приложений, качественной совместной работы, разумных сроков разработки и усилий по сопровожению. При этом понимаю что реальное течение дел может складываться некоторым компромисным образом.

Для создания небольших сетевых приложений изучил front-end фреймворки Angular, Vue, React. Делал небольшие корпоративные full stack приложения. То есть, я умею создавать full stack приложения и понимаю как они работают, в вариантах.

Есть опыт анализа и переноса/переработки логики унаследованных приложений и кода, на различных языках, с различным дизайном, стилями, и различным их качеством.

Знаком с криптографией , методами аутентификации и авторизации. К примеру, создал приложение, обеспечивающее полный цикл эксплуатации X509 сертификата, начиная с запроса на создание, и заканчивая отзывом сертификата. Самостоятельно создавал протоколы и логику авторизации и аутентификации в различных вариантах.

Знаком с реляционными базами данных. В основном использовал в проектах PostgreSQL, MySQL, встраиваемый SQLite и их диалекты языка. Знаком с PLSQL. Использую различные key-value DB. Экспериментировал с различными no-SQL DBMS, но не использовал из-за того что просто не попадались в проектах.

В достаточной степени знаю операционные системы класса Unix, их системные компоненты и принципы построения комплексов на их базе. В основном использую варианты Linux OS, FreeBSD OS, изредка попадались варианты SunOS.

Достаточно знаком с разработкой встраиваемых приложений, из давнего интереса к компактным системам и real time OS. Cоздавал код шин, драйверов устройств исходя только из datasheets descriptions. Примеры также есть на https://github.com/kindsoldier

В качестве примера проект opensource распределенной системы хранения данных

  1. второй вариант, находящийся в разработке https://github.com/kindsoldier/dstore
  2. первый вариант, экспериментальный, с некоторыми ограничениями по производительности и консистентности https://github.com/kindsoldier/ndstore
  3. компактный RPC фреймворк, созданный для RPC + передачи больших бинарных объектов https://pkg.go.dev/github.com/kindsoldier/dsrpc

Начал opensource проект распределенной и “многоцентристкой” системы архивирования/резервирования данных https://pkg.go.dev/github.com/kindsoldier/fdump Архитектура этого проекта подобна сделанной мной несколько лет назад основной системы для архивирования-резервирования дампов баз данных, успешно используемой на предприятии для более сотни баз данных, общим объемом порядка 4ТБ.

Последние коммерческие проекты, компании

  1. 2017-2020 Производственно-торговая компания Лазурит, фабрика, логистическая и сеть продаж до сборки продуктов у клиента от Калининграда до Владивостока. Суммарный штат около 2000 сотрудников. Ведущий IT инженер компании. Множество проектов с различной степенью участия и ролями, включая непосредственную разработку (сети сервисов сбора данных, трансляторы данных, драйвера устройств, обработчики данных, автоматы мониторинга, небольшие full stack приложения для управления инфраструктурой, сетевые приложения для архивирования и резервирования данных, прочее).
    1. Langs: Golang, С, С++, Node.Js (Express, Koa2), Perl, PHP, Pg/PlSQL, Ruby, Shell, Javascript/Typescript, some DSL;
    2. DBMS: PostgreSQL, MySQL;
    3. RPC: HTTP, SOAP, JSON RPC;
    4. Frontend: Plain HTML/CSS/SCSS, Angular, React;
    5. Network protocols: IPv4/IPv6, SIP & Co, BGP, OSPF, HTTP, etc;
    6. Security: X509, OpenSSl, SSL/TLS, SSH, IPSec;
    7. OS: Linux Debian & KVM, FreeBSD (~10% hosts) & bhive
  2. 2020-2021 Компания Инносети, Россия, поставщик решений и B2B брокер между страховыми и транспортными компаниями. Полностью новое подразделение бизнес-анализа из трех человек (продуктовый менеджер, инженер по базам данных, я как full stack разрабочик), создание и интеграция сервисов для сбора, анализа и представления данных. Создание системы аутентификации, реконструкция имеющихся сервисов. Создали, запустили.
    1. Langs: Golang (main), Java, Javascrypt (browser & Node.js), Python, Shell;
    2. Message Broker Apache Kafka;
    3. Frontend: Vue.js, HTML/CSS/SCSS;
    4. Docker Composer;
    5. DBMS: PostgreSQL, Vertica, Clickhouse
  3. 2021 Компания Pixel Networks Ltd, Гонконг. Дистрибьютор IoT продуктов и решений на их базе. Проект-стартап новой версии универсальной системы управления сетями IoT устройств.
    1. Coздал ряд сервисов и драйверов, утилит, фрейворки и библиотеки для коммуникации
    2. Langs: Golang, Pg/PLSQL, Shell; DBMS: PostgreSQL; RPC: GraphQL, gRPC, Protocols: MQTT; Docker composer
  4. 2021-2022 Компания Rabata Technologies LP, Великобритания, небольшой поставщик сервиса хранения данных. Проект-стартап распределенной сетевой системы хранения данных с интерфейсом-api S3, группа в 3 разработчика.
    1. С нуля под цели проекта создал протокол и фреймворк коммуникации-передачи данных, каркас сервисов, провел ряд исследований, создал часть рабочих сервисов.
    2. Прервал работу над проектом из-за заболевания COVID в тяжелой форме (сейчас полностью посстановился). По идеям в ходе проекта работаю над легком opensource варианте системы (без противоречий с коммерческим вариантом).
    3. Langs: Golang;
    4. DBMS: Redis, embedded key-value DB;
    5. RPC: HTTP for S3, и моя разработка с рабочим названием BINPROTO, с возможностью передачи больших бинарных данных

Женат, два сына. Путешествуем, коммуникабелен. В последние годы увлечен малыми летными системами. Для примера, веду небольшие исследования в отношении создания летного программного обеспечения, некоторые стендовые наброски в репозитарии https://github.com/kindsoldier/flightdrafts

Исходя из опыта, могу начать работу по проекту в короткий срок. В зависимости от сложности, необходимо некоторое время для анализа и осмысления уже сделанного, целиком и в частности, понимания компетенций группы, и как оптимально действовать дальше, в соотвествии с общим планом деятельности.

С уважением,

Олег Бородин
skype, email: onborodin@gmail.com
whatsapp, telegram, phone: 7-952-058-72-64