Comment se déroule le développement chez United Traders

Bonjour à tous!


Je m'appelle Alik Kurdyukov, je suis CTO de United Traders . Vous pouvez en savoir un peu plus sur moi dans mon profil. Récemment, nous avons augmenté le rythme de recrutement des informaticiens dans l'entreprise et nous sommes confrontés à un problème: beaucoup de gens nous connaissent en tant qu'entreprise «Fin», mais très peu de gens savent comment «Tech». Par conséquent, nous avons maintenant un blog sur Habré.


Dans cet article, je veux parler de la façon dont nous sommes organisés du côté du développement. Et avec plaisir, je répondrai aux questions dans les commentaires.


À propos de la société


United Traders est une société fintech qui crée des produits numériques pour le trading boursier (NYSE, NASDAQ, CME) et l'investissement (IPO, OTC et ses propres produits d'investissement). Nous développons des logiciels pour les commerçants, des plateformes Web, des applications mobiles, des algorithmes financiers et notre échange de crypto-monnaie.


L'équipe informatique est responsable du code des produits numériques suivants de l'écosystème United Traders:


  • UTEX est un échange de crypto-monnaie avec une interface adaptative (débutants / professionnels).
  • UT Investment est une plateforme web d'investissement avec une vitrine d'idées exclusives.
  • Aurora est une plateforme de trading sur divers échanges.
  • UT Magazine est un portail d'information sur le trading et la finance.
  • Answr - une encyclopédie avec paiement pour le travail des auteurs dans la crypto-monnaie.

Développement


Nous travaillons dans un marché dynamique. Par conséquent, les équipes produits sont «affinées» pour une approche itérative flexible. Cycle d'itération Scrum et cycle de cadence Kanban - 1 semaine.


Le développement est étroitement lié aux affaires. Les développeurs sont impliqués dans les décisions concernant les produits. Les équipes produits travaillent dans le cadre des cycles HADI. L'essentiel est le résultat, donc pour les produits formés, nous faisons un examen détaillé de tout le code, même des mises en page et essayons d'allouer du temps pour le refactoring et les améliorations techniques.


Équipe distribuée


Notre entreprise a une structure plate, CTO est maintenant le gestionnaire direct de tous les informaticiens. L'équipe travaille à distance, répartie dans toute la Russie et les pays voisins:


  • Moscou
  • Saint-Pétersbourg
  • Komsomolsk-on-Amur
  • Kaliningrad
  • Taganrog
  • Chisinau
  • Ryazan
  • Kolomna
  • Cherepovets
  • Mourmansk
  • Tallinn
  • Vilnius
  • Minsk
  • Vitebsk
  • Istra

Les communications sont effectuées en utilisant:


  • Slack comme un chat d'entreprise,
  • JIRA et Trello en tant que trackers.
  • Sococo comme outil de communication voix et vidéo, un bureau virtuel.

L'entreprise finance le développement des salariés, accueille les discours lors des conférences et réunions (JPoint, Joker, HighLoad, RIT ++).


Équipes de développement


Nous avons plus de 30 développeurs professionnels, testeurs, ingénieurs OPS, concepteurs, concepteurs de mise en page. Tous nos informaticiens interagissent quotidiennement les uns avec les autres en petites équipes:


Plateforme
Développe les services généraux de l'entreprise: réception des paiements, comptabilité interne, programme d'affiliation, etc. Java et Kotlin sont les plus utilisés.


Utex
Développe un échange pour échanger des crypto-monnaies. Deux équipes travaillent sur le produit: Team Back, Team Front. Utilisé par Kotlin, Java, Erlang, Rust, React, Redux, Apollo.


Déclarations
Améliore le système de notification des échanges et la gestion des paramètres commerciaux. Utilisé par Kotlin et Java.


Aurora
Il travaille sur le développement de la plateforme de trading client Aurora, qui est représentée par des serveurs à des fins diverses, ainsi que des terminaux clients et gestionnaires. Utilisé par C #.


Les opérations
La tâche principale des ingénieurs OPS est d'aider les équipes DEV en matière de:
fonctionnement des environnements de test et de combat,
configuration et support du pipeline de développement de l'organisation de l'environnement de développement au déploiement.
Les principes de DevOps sont utilisés. Outils: Ansible, OpenShift, PostgreSQL, Prometheus, Docker, CentOS.


Autotest
Aidez les équipes de développement à maintenir un haut niveau de qualité. Travaillez avec les tests automatiques d'intégration. Outils: Spock, Spek, Allure.


Concepteurs UX / UI
Explorez les préférences des utilisateurs, créez une conception pour tous les projets de développement en UT, travaillez sur la convivialité.


Capital humain
Ils contribuent à attirer des personnes avec qui nous partageons les mêmes valeurs et contribuent au développement des équipes de développement.


Architecture, empilements technologiques, pratiques


L'architecture de l'ensemble de notre écosystème est construite sur des microservices avec tous leurs avantages et inconvénients. Pour l'interaction des microservices, nous utilisons REST, gRPC, Kafka. Nous avons la découverte, le service de configuration. Nous utilisons un disjoncteur et d'autres modèles.


Nos piles de développement:


  • JVM - Kotlin, Java8, Spring Boot2, Hibername, PostgeSQL
  • Frontend - TypeScript, React, Redux, ReduxSaga, Apollo GraphQL
  • .NET - C # 7, .NET Framework 4.7.1, WPF, Castle Windsor
  • Rouille - Tokio, Actix
  • Erlang

Pratiques d'ingénierie:


  • CI / CD est basé sur Jenkins et Ansible,
  • Pour toutes les langues, il existe un style de code, généralement vérifié automatiquement,
  • Il y a une révision de code obligatoire pour tous les projets sauf MVP rapide,

La plupart des projets ont 3 niveaux de tests automatiques:


  • tests unitaires de code,
  • tests d'intégration pour les artefacts déclenchés de manière isolée,
  • tests système pour des groupes d'artefacts - les testeurs et les développeurs travaillent sur ces tests.

Nous essayons d'utiliser de nouvelles technologies si elles peuvent nous aider à résoudre des problèmes, mais il est de coutume de «vendre» la nouvelle technologie à l'équipe. Par exemple, au cours de la dernière année, nous avons commencé à utiliser Rust, GraphQL, ClickHouse.


Style de travail


En UT, nous sommes habitués non seulement à scier des tâches, mais à proposer des améliorations en cours de route et à poser des questions. Nous avons la «règle des 30 minutes»: si vous rencontrez un problème qui ne peut pas être résolu en une demi-heure, il est logique de poser une question dans l'équipe de chat Slack, quelqu'un vous aidera avec la solution ou vous dira où creuser. Et nous sommes sûrs que ceux qui ont entrepris la tâche l'achèveront certainement.


En général, nous avons une excellente équipe, nous serons heureux si un jour vous vous y trouvez, et à partir d'aujourd'hui nous vous dirons comment nous faisons de United Traders non seulement une entreprise financière, mais une fintech.

Source: https://habr.com/ru/post/fr443300/


All Articles