Почта Mail.ru должна работать всегда. Письма должны приниматься из интернета, фильтроваться пользовательскими правилами, доставляться в хранилища и скачиваться почтовыми клиентами.
За бесперебойную работу систем, обеспечивающих это, в аппаратном смысле отвечает команда эксплуатации, а в программном — команда системной разработки Почты. Мы разрабатываем SMTP-, IMAP-, POP3-серверы Почты и стремимся грамотно внедрять современные стандарты интернета. Последовательно проводимые изменения внутренней архитектуры Почты открывают простор для новых решений, улучшающих безопасность, стабильность и скорость работы Почты для пользователей.
Множество сервисов у нас пишутся на Go и раскатываются в K8s. Есть Tarantool'ы, с логикой на Lua и C, с данными и без них. Есть многопоточные сервисы на C++. Есть сервисы, раскатывающиеся Puppet'ом на железо. Каждый инструмент хорош для своих задач, а круг задач достаточно разнообразен, как и степень специализации внутри команды.
Задачи:
- декомпозиция, проектирование и разработка компонентов систем доставки Почты, проведение код ревью;
- оптимизация архитектуры почтовых систем для повышения их эффективности и устойчивости к сбоям;
- взаимодействие с другими командами/подразделениями в рамках Почты.
Требования:
- опыт коммерческой разработки с использованием C/C++ от 4 лет. Готовность к изучению Go, Lua;
- опыт проектирования и разработки высоконагруженных распределенных систем, многопоточных сервисов;
- опыт разработки сервисов под Linux (понимание основ работы ядра, опыт использования диагностических утилит, работа с ресурсами);
- опыт работы с сетью (понимание клиент-серверной модели, TCP/IP, сокетов); готовность к изучению почтовых протоколов;
- высокий уровень личной ответственности.
Будет плюсом:
- опыт работы с Redis Cluster, Tarantool, MySQL;
- знание почтовых протоколов (SMTP, IMAP4, POP3);
- опыт работы с Docker, Kubernetes, Puppet;
- опыт разработки с использованием языка Go;
- опыт работы с Protocol Buffers;
- опыт написания spec, умение собирать RPM-пакеты;
- навык выстраивания систем мониторинга и контроля за состоянием системы, опыт работы с syslog, Grafana.