Описание должности
Как инженер по разработке на Golang, вы будете отвечать за проектирование и реализацию высокопроизводительных систем, поддерживающих основные функции сервера обмена. Эта роль требует глубокого понимания принципов системной архитектуры, включая масштабируемость, параллелизм, доступность и оптимизацию задержек. Вы будете тесно сотрудничать с кросс-функциональными командами, чтобы преобразовать бизнес-требования в технические решения, обеспечивая соответствие системы функциональным и нефункциональным спецификациям.
Идеальный кандидат сосредоточится на постоянном улучшении существующих систем, выявляя возможности для оптимизации и реструктуризации в соответствии с изменяющимися бизнес-потребностями. Это включает проведение углубленного анализа узких мест системы, разработку инновационных решений для сложных технических задач и внедрение улучшений производительности, повышающих эффективность и надежность системы.
Вы также будете участвовать в полном жизненном цикле разработки программного обеспечения, от сбора требований до развертывания и сопровождения. Это требует сильных аналитических навыков для оценки бизнес-потребностей, проектирования масштабируемых архитектур и создания технической документации, которая направляет команды разработки и эксплуатации.
Ключевые обязанности
- Разрабатывать и поддерживать высокопроизводительные системы сервера обмена на Golang, обеспечивая их соответствие требованиям масштабируемости, высокой параллельной нагрузки и низкой задержки.
- Проектировать и реализовывать архитектуры распределенных систем, поддерживающие высокую доступность и бесперебойную интеграцию с существующими платформами.
- Проводить анализ производительности существующих систем, выявлять узкие места и внедрять стратегии оптимизации для повышения эффективности и надежности системы.
- Сотрудничать с менеджерами продуктов и заинтересованными сторонами для преобразования бизнес-требований в технические спецификации и проекты систем.
- Составлять и поддерживать техническую документацию, включая спецификации API, диаграммы архитектуры системы и руководства по развертыванию.
- Участвовать в проверках кода, обеспечивая соблюдение лучших практик и поддержание качества кода на протяжении всего жизненного цикла разработки.
- Мониторить производительность системы после развертывания, устранять неполадки и предоставлять рекомендации для постоянного улучшения.
- Быть в курсе новых технологий и тенденций отрасли, чтобы команда внедряла инновационные решения для разработки систем.
Требования к должности
- Степень бакалавра или выше в области компьютерных наук, программной инженерии или смежной дисциплине.
- Минимум 3 года практического опыта разработки на Golang с подтвержденным опытом создания масштабируемых и высокопроизводительных систем.
- Глубокое понимание распределенных систем, архитектуры микросервисов и облачных платформ (например, AWS, Azure, GCP).
- Владение проектированием и оптимизацией баз данных, включая SQL и NoSQL технологии, для обеспечения эффективной обработки и хранения данных.
- Опыт применения методов настройки производительности, таких как балансировка нагрузки, стратегии кэширования и асинхронная обработка, для достижения низкой задержки и высокой параллельной нагрузки.
- Отличные навыки решения проблем с возможностью анализа сложных технических задач и разработки инновационных решений.
- Сильные коммуникативные навыки для эффективного сотрудничества с кросс-функциональными командами, включая менеджеров продуктов, инженеров QA и специалистов DevOps.
- Знание CI/CD-процессов, контейнеризации (Docker) и инструментов оркестрации (Kubernetes) для эффективной доставки и развертывания программного обеспечения.
- Подтвержденная способность работать в среде гибкой разработки с опытом итеративной разработки и планирования спринтов.
- Знание инструментов мониторинга и наблюдаемости систем (например, Prometheus, Grafana, ELK stack) для обеспечения надежности системы и отслеживания производительности.
- Опыт разработки и интеграции API, включая RESTful API и gRPC, для обеспечения бесперебойного взаимодействия между системами.
- Внимание к деталям и способность писать чистый, поддерживаемый код, соответствующий лучшим отраслевым практикам.
- Готовность учиться и адаптироваться к новым технологиям с проактивным подходом к развитию навыков и инновациям.
- Способность работать как самостоятельно, так и в команде, с коллаборативным мышлением для достижения целей проекта.
Предпочтительные квалификации
- Опыт работы с системами высокочастотной торговли или платформами обработки данных в реальном времени.
- Знание технологий блокчейна или распределенных реестров для продвинутой разработки серверов обмена.
- Знание протоколов безопасности и стандартов шифрования для обеспечения целостности системы и защиты данных.
- Владение практиками DevOps, включая инфраструктуру как код (IaC) и инструменты автоматизации (Ansible, Terraform).
- Опыт работы с инструментами тестирования производительности (например, JMeter, Locust) для проверки масштабируемости и надежности системы.
- Понимание оркестрации контейнеров и шаблонов развертывания микросервисов для облачных приложений.
- Способность проектировать и реализовывать отказоустойчивые системы с требованиями высокой доступности.
- Опыт работы с системами контроля версий (например, Git) и практиками совместного написания кода.
- Знание шаблонов проектирования систем и лучших практик для создания масштабируемых, поддерживаемых архитектур.
- Сильные аналитические навыки для оценки метрик производительности системы и соответствующей оптимизации.
