Le 28 juillet, notre compte Instagram et YouTube ont organisé une diffusion en direct avec Alexander Vysotsky, l'un des principaux développeurs PHP du bureau de Badoo à Londres, qui travaille dans l'équipe anti-spam. Sasha a parlé de la création de projets Highload en PHP, de sa vie à Londres et, bien sûr, de Badoo.
Je m'appelle Alexander Vysotsky, je travaille en tant que développeur PHP de premier plan chez Badoo. Nous développons des applications de rencontres Badoo et Bumble, qui comptent plus de 500 millions d'utilisateurs dans le monde.
Nous avons plusieurs bureaux dans différents pays, mais la plupart des développeurs sont situés à Moscou et à Londres. Au total, l'équipe de développement de Badoo compte environ 300 personnes. Nous avons 20 projets open source et de nombreux outils internes dont nous parlons souvent dans notre blog sur Habré.
Aujourd'hui je veux vous dire ce que c'est que de travailler en tant que développeur backend chez Badoo dans les conditions de deux versions par jour, une vraie charge et un million de lignes de code, comment s'adapter à la vie et travailler à l'étranger et garder sa famille ensemble.
Comment je suis arrivé à Badoo
Ma ville natale est Saratov, où j'ai également reçu une formation spécialisée: je suis diplômé de la spécialité et des études supérieures à la Faculté d'informatique et des technologies de l'information de SSU. À la fin de ses études supérieures, il avait travaillé en tant que développeur backend dans divers domaines: du secteur du tourisme aux jeux.
À la mi-2017, le projet principal en cours s'est terminé et la question s'est posée devant moi, que faire ensuite: chercher quelque chose de nouveau à Saratov, déménager à Moscou ou Saint-Pétersbourg, ou aller dans des entreprises étrangères? À ce stade, je connaissais déjà Badoo et j'ai postulé pour un poste vacant au bureau de Londres. Certes, je n'avais pas assez d'expérience et de connaissances pour obtenir une offre. Mais en même temps, j'ai reçu deux offres d'emploi d'Allemagne et des Pays-Bas. Avec ma femme, nous avons décidé de déménager et de travailler pour une entreprise allemande. Pendant un an et demi, nous avons vécu à Leipzig - l'une des plus grandes villes d'Allemagne - où j'ai travaillé sur des solutions touristiques.
Cependant, l'envie de travailler chez Badoo n'a pas disparu et j'ai postulé à nouveau pour un poste vacant, un an plus tard. Après plusieurs entretiens téléphoniques et un entretien en face à face, j'ai reçu une offre. Alors début 2019, j'ai déménagé à Londres.
Les deux déménagements - à Leipzig et à Londres - étaient un test sérieux. Je me suis retrouvé en dehors de l'environnement habituel: il n'y avait pas d'amis, de parents, de parents avec lesquels j'avais l'habitude de communiquer tous les jours. Cela n'a pas été facile pour moi, et pour ma femme, notre famille dans son ensemble. Nous cherchions un moyen de sortir de cet état et avons essayé de nous intégrer dans la nouvelle société le plus rapidement possible.
En Allemagne, la barrière évidente était la langue: nous avons toujours appris l'anglais, mais ici nous devions nous attaquer à l'allemand. Cela a demandé beaucoup d'efforts, mais après 1,5 an de vie à Leipzig, nous avons bien appris la langue, pratiquant tous les jours. A Londres, ce problème ne s'est pas posé, d'ailleurs, nous avions déjà l'expérience de vivre dans un pays étranger. Badoo a fourni un accompagnement maximal lors du déménagement en matière de recherche d'un appartement, en communiquant avec les autorités fiscales. Cela a aidé à s'intégrer dans la vie locale.
Les impôts sont l'un des moments les plus difficiles pour un Russe lorsqu'il déménage. En Angleterre, une échelle progressive est utilisée: le taux d'imposition augmente en fonction du niveau de revenu. La médecine est un autre problème problématique. Quelqu'un dit que tout est en ordre avec elle, quelqu'un n'est pas d'accord. J'ai eu une expérience positive.
Une autre histoire concernait la recherche d'un logement. Les bonnes options sont démontées très rapidement. De plus, avant d'obtenir un appartement à louer, vous devez passer un chèque. Dans mon cas, il y a même eu des appels en Allemagne à nos anciens propriétaires: on leur a demandé à quel point j'étais bon en tant que locataire.
Il est également important pour moi que ma femme aime la vie dans un nouvel endroit. Elle a toujours voulu obtenir le métier de designer et se prépare maintenant à son admission. Trouvé des cours qu'elle aime; en même temps, elle a resserré son langage et a réussi le test IELTS pour entrer en licence en design d'intérieur. Londres dispose d'un très large éventail d'établissements d'enseignement, mais vous devez vous rappeler que le coût de l'éducation pour les étrangers est plusieurs fois plus élevé que pour les locaux.
Ensuite, je répondrai à quelques questions du chat.
Qu'est-ce qui a aidé à s'adapter à chaque fois à un nouveau lieu?
Le principal soutien est toujours au sein de la famille. Dans notre cas, ma femme et moi nous sommes soutenus mutuellement, ce qui a permis de surmonter toutes les difficultés initiales. De plus, à chaque fois que j'ai eu de la chance avec l'équipe: j'ai des collègues très sympas, ils soutiennent toujours en paroles et en actes, partagent leur expérience, dans un premier temps, ils peuvent vous accompagner et résoudre le problème. En général, une bonne famille et de bons collègues valent leur pesant d'or.
Vaut-il la peine de quitter la pige pour travailler dans une grande entreprise avec un salaire inférieur si vous n'avez jamais eu une telle expérience de travail auparavant?
La question n'est pas plutôt celle du salaire, mais des processus associés à la transition vers une grande entreprise. Lorsque vous êtes indépendant, vous vous fixez un jour de travail et créez des flux de travail qui vous aident à faire avancer les choses. Dans une grande entreprise, tout est différent: des délais serrés, beaucoup plus de communication - à la fois entre collègues d'une équipe et entre équipes. Vous devez vous demander si ce rythme et ce format de travail vous conviennent et prendre une décision en fonction de cela.
Quant au salaire, il faut regarder vers l'avenir. Si vous abandonnez maintenant un salaire important en indépendant et que vous passez à un salaire plus petit, dans une entreprise, le salaire peut ensuite augmenter grâce à l'expérience du secteur.
Petit avertissement: vous pouvez visiter notre site web tech.badoo.comoù nous affichons les postes vacants actuels. Peut-être que vous rencontrerez quelque chose à votre goût et que vous laisserez une demande.
Quels sont certains des avantages de Badoo par rapport aux petites entreprises?
Il est préférable de lire à ce sujet sur notre site Web : il y en a plus que je ne me souviens. Les principaux points qui ne peuvent que se réjouir sont l'assurance médicale volontaire, l'indemnisation de remise en forme, le petit-déjeuner, le déjeuner, le dîner dans l'entreprise, des équipements de travail de haute qualité.
Est-ce vrai que Badoo n'embauche pas pour travailler en Angleterre? Je ne trouve pas de réponse explicite.
Avant la pandémie, nous avions des postes vacants à Moscou et à Londres. Dans l'environnement actuel, bien sûr, les déménagements et les déplacements professionnels entre les bureaux sont temporairement gelés, même si le recrutement se poursuit. Voir les mises à jour sur le site Web: il indique toujours dans quel bureau un poste est ouvert. L'entreprise adhère à la transparence maximale en la matière.
Avez-vous dĂ» travailler Ă distance? Est-ce devenu plus difficile? Comment avez-vous interagi?
Oui, nous travaillons toujours à distance. Au début, c'était difficile du fait que mes collègues et moi ne coïncidions pas toujours dans le temps: quelqu'un d'autre «ne venait pas» travailler, quelqu'un était déjà «parti». La synchronisation entre différentes équipes est requise. Les problèmes de communication sont devenus plus difficiles à résoudre. Au lieu de poser des questions personnellement, j'ai dû écrire ou appeler, ce qui prend beaucoup plus de temps.
Pour l'interaction, nous avons un grand nombre de chats, de vidéoconférences que nous utilisons. Maintenant, c'est devenu plus facile - nous y sommes habitués.
Comment contrôler l'effort, la persévérance, l'auto-motivation, la procrastination?
Ce n'est un secret pour personne qu'en raison de la pandémie, la plupart des entreprises informatiques sont passées au travail à domicile. C'était difficile pour moi de reconstruire sur d'autres rails, mais je me suis distingué quelques points.
Premièrement, un contrôle strict des heures de travail est nécessaire. Vous pouvez informer tous vos collègues que de 9 à 18 vous travaillez et êtes disponible dans tous les messagers, et en dehors de cette heure, ne répondez pas aux demandes. Tout le monde traite cela avec compréhension. Lorsque vous travaillez à domicile, il est difficile de séparer le travail et la famille, mais il est très important de maintenir une humeur psychologique et des relations.
Deuxièmement, l'auto-motivation et la procrastination sont importantes. De nombreux articles sur Habré disent que la procrastination est normale, mais mauvaise quand il y en a beaucoup. J'utilise la technique suivante: si je rencontre un gros problème, je le divise en plusieurs petits. Et puis, la nouvelle fonctionnalité effrayante ne semble plus effrayante et peut être publiée sans aucun problème.
PHP et highload chez Badoo
Je vais passer aux questions sur le travail. Je travaille dans l'équipe anti-spam. Comme son nom l'indique, il peut sembler que nous ne traitons que de l'anti-spam, mais c'est loin d'être le cas. Notre objectif est de fournir la meilleure expérience possible pour l'utilisation de nos applications. Les tâches de protection des utilisateurs sont très importantes pour nous, beaucoup de ressources et d'efforts sont alloués pour cela.
Pour résumer, nous sommes engagés dans la lutte contre les utilisateurs malveillants: ceux qui envoient du spam, se livrent à des fraudes et gâchent l'expérience utilisateur. Nous utilisons activement le ML. Bien sûr, je ne peux pas entrer dans les détails pour ne pas faciliter la vie des spammeurs, mais en voici quelques exemples.
Nous avons un modèle de détection de spam / arnaque. Nous avons créé un outil d'analyse du trafic mobile pour une équipe parallèle. De plus, notre société utilise des réseaux de neurones: pour la vérification des photos gestuelles et lors de l'envoi de photos obscènes dans le messager. Récemment, nos collègues ont lancé un soi-disant "détecteur de pic de bite" pour se protéger contre les contenus inappropriés dans les messages privés: l'utilisateur peut choisir s'il souhaite voir un tel contenu.
Comment Badoo gère-t-il le spam? Simple si ou ML déjà ?
J'ai vu quelque part une blague selon laquelle ML est juste un gros tas de if / else. Mais, bien sûr, ce n'est pas le cas avec nous.
Badoo a plusieurs utilisations pour le ML, car il peut grandement améliorer les projets. Par exemple, comme je l'ai dit, nous utilisons la vérification des photos de l'utilisateur, et ML aide à cela: il détermine que la personne a réellement pris une photo maintenant et qu'elle a fait ce qu'on lui a demandé. Les neurones sont cool.
Comment implémentez-vous le ML? PHP, un autre langage, une sorte de framework, un développement complètement propre?
Nous avons des gars très cool dans l'équipe de données. Le blog contient un rapport sympa d'Alexander Krasheninnikov - malheureusement, il est déjà mon ancien collègue - qui raconte de quel type d'équipe il s'agit, quels problèmes il résout, comment il améliore le travail de Badoo et nous aide tous. L'équipe Data a créé son propre framework ML, très simple d'utilisation et disponible pour toutes les autres équipes de l'entreprise: on peut dire qu'elles ont déjà fait tout le travail pour nous. Ils ont une implémentation très cool, une excellente documentation, une approche très simple pour travailler avec le framework.
Quels ont été les plus grands défis auxquels vous avez été confrontés chez Badoo?
Je ne peux pas distinguer une tâche ou un projet spécifique qui serait le plus difficile. Il y a des projets intéressants et il y en a des très intéressants. Dans ma pratique, ce sont tous des projets liés au Machine Learning. Quand j'étais à l'école supérieure, j'ai abordé ce sujet et ce domaine m'impressionne. Nous avons réalisé un projet pour l'équipe Marketing Performance lié à l'analyse du trafic - c'était très cool, nous avons trouvé de nombreuses informations utiles.
Pourquoi utilisez-vous PHP?
PHP est un excellent outil pour résoudre les problèmes de développement Web et développer rapidement un projet évolutif. Mais l'attitude envers cette langue dans la communauté est ambiguë, et cela est dû à sa réputation. Depuis la création de PHP, on a l'impression qu'il est très facile d'y écrire du mauvais code. À mon avis, le seuil d'entrée bas n'est pas un inconvénient. Au contraire, cela vous permet d'impliquer un large éventail de personnes dans le développement. En outre, il fait vraiment un bon travail de développement d'applications Web, et à chaque nouvelle version, le langage s'améliore.
PHP 7 a fait un énorme pas en avant en termes de productivité et de développement. Nous avons un excellent article dans notre blog sur Habré sur la façon dont le passage à cette version nous a permis de libérer une partie importante des ressources.
La popularité de PHP a récemment chuté, et c'est naturel - d'autres outils et langages apparaissent en concurrence avec PHP, et de nombreux développeurs se tournent vers eux. Mais il est habituel pour nous de sélectionner des outils pour une tâche spécifique, et PHP fait face à la tâche.
Que pensez-vous de PHP 8, envisagez-vous de migrer?
Nous surveillons activement chaque nouvelle version de PHP. Bien sûr, nous utiliserons toutes les fonctionnalités de la nouvelle version - bien sûr, après nous être assurés que notre code est compatible, et la transition vers PHP 8 offrira plus d'avantages que le temps que nous passerons sur la transition elle-même. Nous déciderons de la transition lorsque PHP 8 sortira.
Comme je l'ai dit, lorsque nous sommes passés à PHP 7, nous avons libéré de nombreux serveurs, que nous avons dirigés vers d'autres tâches. Autrement dit, la transition vers une nouvelle version peut apporter de grands avantages.
Badoo utilise-t-il la compilation PHP?
Non.
Dites-nous en plus sur le framework auto-Ă©crit de Badoo. Sur quelle base est-il mis en Ĺ“uvre et Ă quoi ressemble-t-il plutĂ´t?
Ceci est fait par l'équipe de la plate-forme - les gars qui font du «backend pour le backend» et supportent la majorité des développeurs backend. Ils nous donnent beaucoup de trucs sympas. J'en ai déjà parlé en partie: par exemple, ils implémentent la même fonctionnalité de mise en file d'attente qui est largement utilisée dans l'entreprise; ils créent également un service cloud pour nos besoins.
Je ne dirais pas que le cadre est similaire à quelque chose de spécifique. J'ai travaillé avec Laravel et Symfony - bien sûr, il y a certaines parties, et nous pouvons utiliser des modules qui sont en open source dans notre projet. Mais je ne pense pas que notre dépôt git soit très différent des approches des autres frameworks modernes. Nous utilisons des gestionnaires de packages pour extraire des dépendances tierces, nous utilisons le chargement automatique, nous utilisons des modules pour encapsuler des morceaux de code.
Pourquoi Badoo utilise-t-il un monolithe et non des microservices?
C'est une question plutôt sacrée, la communauté est divisée en deux camps à ce sujet. Ce n'est un secret pour personne que nous utilisons une architecture monolithique, et au cours de l'existence du projet, nous avons appris à gérer les inconvénients de cette approche et à utiliser tous ses avantages. De plus, nous avons un ensemble de services (en Go, PHP, C ++) que nous utilisons activement dans notre travail quotidien.
Si nous comprenons la question comme «devrions-nous tout abandonner et utiliser toutes les ressources disponibles pour réécrire le monolithe existant pour une architecture de microservice», je répondrai que non. Nous avons des défis commerciaux que la solution existante gère avec succès. Si nécessaire, nous sommes prêts pour des changements, mais, comme je l'ai dit, nous choisissons l'outil en fonction de la tâche à accomplir.
Comment différentes pièces d'un monolithe sont-elles mises à l'échelle sous charge?
Bonne question à suivre sur monolith et microservices. Nous avons une excellente présentation dans notre blog sur les performances et la façon dont notre backend est construit d'un point de vue architectural - je vais vous le dire brièvement. Nous avons environ 600 serveurs qui traitent toutes les demandes des clients, et ils sont responsables de notre monorépertoire. Avec cette approche, nous avons une certaine flexibilité dans la mise à l'échelle, ajoutons de nouvelles voitures, insérons le code - et elles sont prêtes à être utilisées.
Dans quelle mesure le déploiement est-il transparent dans un environnement monolithique?
La réponse à cette question peut être divisée en deux parties. Le premier est l'implémentation technique de notre pipeline CICD, qui a été bien décrite par mon ancien collègue Yuri Nasretdinov dans son discours à HighLoad (" 5 façons de déployer du code PHP dans des conditions de forte charge "). Je recommande de regarder. En bref, nous avons plusieurs centaines de serveurs qui répondent aux demandes des utilisateurs. Pendant le déploiement, nous ne transmettons que les modifications au référentiel et basculons atomiquement le lien symbolique.
La deuxième partie est de s'assurer que le déploiement ne rompt pas la production pour nous. Avant la publication, tout code est vérifié à l'aide d'un test d'unité, d'intégration et d'interface utilisateur, ainsi que d'un analyseur statique pour les problèmes évidents. Nous avons un grand service d'assurance qualité professionnel, ce qui nous permet de publier avec succès deux fois par jour.
Avec un cycle de sortie aussi court, il est très important pour nous de maintenir la qualité de notre produit à un niveau élevé: nous ne voulons pas déployer des bugs / fatals dans la production. Par conséquent, les tests des fonctionnalités qui sont en cours de production sont prioritaires. Chaque développeur back-end est intéressé par le fait que sa fonctionnalité sur le back-end soit lancée sans aucune action supplémentaire de son département et des équipes front-end et mobiles. Il peut y avoir une telle situation lorsque vous avez un ticket pour le développement d'une fonctionnalité backend, que vous le libérez en production, mais en réalité, ils ne commencent à l'utiliser qu'après un certain temps. Et puis les ingénieurs QA viennent vers vous et vous demandent pourquoi cela ne fonctionne pas. Par conséquent, du côté backend, lorsque nous publions des fonctionnalités, nous les couvrons avec le nombre maximum de tests, de simulations et de QAP pour être sûr à 100%ce que nous roulons fonctionne à 100%.
Un navet, tous poussés au même endroit?
Oui, il y a un navet, et tous les ingénieurs back-end y poussent. Nous avons une règle interne pour nommer les branches qui sont en quelque sorte liées à la tâche à accomplir. Bien sûr, vous ne pouvez pas pousser directement le maître, la branche y est poussée après une révision de code réussie, après tous les contrôles et tests unitaires, et après que l'ingénieur QA qui a travaillé sur la tâche avec vous ait dit que tout était en ordre.
Utilisez-vous DDD ou d'autres modèles architecturaux?
DDD est une conception pilotée par domaine. Ce n'est pas un modèle architectural, mais plutôt une méthodologie. Je ne dirais pas que nous avons une approche spécifique, nous utilisons une combinaison de plusieurs.
À propos des modèles: dans le backend, plusieurs modèles de conception sont utilisés pour résoudre des problèmes, je voudrais le souligner en détail. Nous utilisons des implémentations de bus d'événements, nous avons beaucoup de files d'attente, nous envoyons des millions d'événements qui sont traités par les consommateurs correspondants. Le modèle Module figure également parmi les modèles activement utilisés: la plupart de notre code est divisé en instances séparées et connectées qui interagissent via une API ouverte limitée.
Utilisez-vous des exceptions ou essayez-vous d'Ă©viter?
Nous utilisons. Et nous essayons d'Ă©viter.
Votre API est-elle un monolithe?
Oui.
Comment testez-vous l'API?
Nous avons des tests unitaires et tout un framework pour exécuter un grand nombre de tests en parallèle avec un minimum de temps. Vous pouvez en savoir plus à ce sujet dans l' article de Vladimir Yants dans notre blog , il a bien décrit ce sujet en détail. En termes de tests d'interface utilisateur, nous utilisons Calabash et Selenium pour tester que l'interface utilisateur fonctionne correctement.
Développement piloté par les tests, lors des tests d'abord, puis du code - ne vous pratiquez pas?
Avec nous, chaque équipe peut utiliser sa propre approche lors du développement, et je sais que certains collègues la pratiquent. Je sais que cela fonctionne, mais je ne le pratique pas moi-même.
Que pensez-vous de DDD?
Comme je l'ai dit, nous compilons à partir de plusieurs approches. Si nous parlons de mon attitude personnelle, je soutiens toute approche qui vous permet de résoudre efficacement les problèmes. DDD vaut la peine d'investir: il vous permettra de faire des applications à un nouveau niveau de qualité.
Dites-nous, était-ce tel que la production ne pouvait pas supporter la charge? Comment avez-vous géré cela?
Ce n'était pas dans ma mémoire. Nous avons des ingénieurs expérimentés, notre produit est en développement depuis plus de 15 ans et la société possède une vaste expérience dans le développement de charges élevées. Nous visons à maximiser les performances de nos applications.
PHP et MySQL - que faire pour optimiser les performances du backend?
Cela concerne la pile utilisée dans l'entreprise et les performances, je vais donc diviser la réponse en deux parties également.
À propos de la pile: du fait que Badoo dispose d'un grand nombre de départements et d'équipes, nous utilisons le plus large éventail de technologies possible - de PHP, MySQL, Nginx, Go, C ++ à Tarantool, LUA et Scala. Chaque équipe choisit un outil pour résoudre efficacement la tâche. Puisque nous travaillons dans des conditions de forte charge et traitons des dizaines de milliers de requêtes par seconde, la question de la performance de notre backend devient critique.
Maintenant, il convient de mentionner les outils qui ont été créés en interne et publiés en open source. Le premier outil est Pinba (PHP n'est plus un goulot d'étranglement). C'est un outil de collecte de statistiques et de suivi des performances d'une application sans affecter ses performances et de présentation des données collectées de manière conviviale.
Le suivant est Codeisok: un outil de gestion de référentiels git et de révision de code. Nous utilisons activement notre travail interne, et avant que la fonctionnalité ne soit maîtrisée, nous appliquons les meilleures pratiques de révision de code (vous pouvez également les lire dans notre blog ) afin que le code le plus efficace atteigne la production.
Un autre outil qui nous permet de suivre les performances de chaque morceau de code individuel est LifeProf: il nous permet de profiler automatiquement toutes les demandes. Tous ces outils (et plus) se trouvent dans notre référentiel Github.
Utilisez-vous ORM ou l'interaction de stockage direct? Pourquoi?
J'ai déjà mentionné que nous avons notre propre cadre. Nous utilisons notre propre implémentation ORM.
Comment l'interaction des modules du projet est-elle organisée? De classe en classe, ou quelque chose de plus délicat?
Bonne question. Chaque module a un point d'entrée (contrôleur frontal), qui fournit une API unifiée et intelligible vers l'extérieur - pour d'autres modules ou pour d'autres fonctionnalités. Nous ne divulguons pas l'intégralité de la mise en œuvre interne pour le reste du projet, nous ne laissons que ce que nous voulons donner à l'extérieur.
Quels petits pains spécifiques à la base de données sont utilisés avec ORM?
Je ne comprends pas entièrement la question, mais je vais essayer de répondre.
J'ai déjà dit que notre base de données principale est MySQL, la plupart des données y sont stockées. Nous utilisons également Exasol, Presto, Tarantool, pour des tâches spécifiques - Aerospike. Autrement dit, nous avons un grand ensemble de stockages pour chaque tâche. On ne se limite pas au choix d'un outil: si l'utilisation de la technologie est rentable, on l'utilise. MySQL est au cœur de notre application, et nous utilisons une variété de réplication, de partitions pour maintenir la charge efficacement.
Comment fonctionnent les tests des développeurs? Pour tout élever localement dans docker vous-même, ou est-ce quelque chose de plus compliqué sur les serveurs virtuels?
Une autre situation à laquelle je ne peux pas répondre exactement.
Nous n'utilisons pas Docker lors du développement en PHP (mais les administrateurs l'utilisent), nous avons un environnement de développement commun. Notre équipe de plate-forme est engagée, entre autres, dans le maintien de notre environnement de développement en état de fonctionnement pour le développement, et là , nous exécutons tous les tests, déployons des fonctionnalités que nous allons mettre en production. Autrement dit, nous avons un environnement préconfiguré.
Je ne comprends toujours pas ce qu'est le ML: PHP, Python, autre chose?
Nous avions l'habitude d'utiliser Python pour le framework ML, mais maintenant ils sont passés à Spark: cela a considérablement amélioré les performances.
Comment Ă©quilibrez-vous la charge sur 600 serveurs? Dois-je bien comprendre qu'il s'agit d'un monorepa sur chaque serveur, dans docker?
Monorepa sur chaque serveur, nous l'équilibrons de manière assez standard - en utilisant Nginx.
Utilisez-vous des générateurs de code? Pour quelles tâches?
Nous l'utilisons assez souvent. Lors du développement, lorsque vous avez besoin de générer des modèles selon une description dans les configurations, ou s'il existe une classe qui doit implémenter des fonctionnalités selon un certain modèle.
Comment fonctionne la réplication de base de données pour MySQL?
Je ne peux répondre que superficiellement.
Ce n'est un secret pour personne que nous avons des centres de données en Europe et aux États-Unis, et il est nécessaire de maintenir la cohérence des données entre eux. Nous utilisons la réplication entre les référentiels principaux pour maintenir les informations à jour à chaque emplacement. En raison du fait qu'il peut y avoir un décalage de réplication important entre les centres de données, nous utilisons différents types de caches pour les tâches où la pertinence des données n'est pas critique.
Comment les ingénieurs Badoo soutiennent-ils la communauté PHP russophone? Conférences, rencontres, blog, rassemblements informels?
Badoo accueille et participe activement à un grand nombre d'événements spécialisés. Ceci est ancré dans la culture de l'entreprise et dans la culture de nos ingénieurs. Les développeurs partagent constamment les meilleures pratiques et leurs connaissances lors de rencontres, réunions et conférences internes et externes.
Nous avons Badoo PHP Meetup: deux fois par an, dans notre bureau de Moscou. Les dernières réunions ont réuni environ 250 participants. Mon collègue Vladimir Yants, que j'ai déjà mentionné, organise des réunions informelles à Moscou - BeerPHP Moscou. Il a déjà des adeptes à Saint-Pétersbourg, Saratov et dans d'autres villes. Le format, bien sûr, est emprunté à des rencontres similaires de BeerJS, mais il reste très cool: dans un cadre informel, communiquez avec des personnes partageant les mêmes idées, des collègues et uniquement des mecs de l'industrie.
Les ingénieurs de Badoo siègent régulièrement au comité de programmation de la seule conférence PHP en Russie, PHP Russia. Cette année sa partie en ligne est devenue internationale et gratuite pour tous les participants grâce à notre société.
Nous avons également des blogs sur Habré et Medium , où nous partageons tous les développements (pas seulement en PHP).
Prenez-vous des Juns ou est-ce le milieu minimum?
Comme je l'ai dit, vous devez laisser une demande. Au cours de l'entretien, il deviendra clair si vous avez maintenant suffisamment de connaissances et d'expérience pour commencer à travailler dans l'entreprise, ou si vous devez acquérir une expérience et des connaissances pertinentes ailleurs, puis revenir, comme je l'ai fait.
Envisagez-vous un bureau aux États-Unis?
Nous avons un bureau aux États-Unis, où Bumble est hébergé - à Austin, au Texas. Mais il n'y a pas d'équipe d'ingénierie là -bas, et on ne sait pas encore si nous allons nous développer.
, soft/hard- ?
J'ai déjà dit que tous les postes vacants sont disponibles sur notre site Web tech.badoo.com . Je conseille à quiconque de ne pas avoir honte, de ne pas avoir peur, de surveiller les exigences et de laisser des candidatures.
Il est difficile de dire quelles sont les attentes spécifiques qu'une entreprise peut avoir d'un candidat. Je dirais: si, à la lecture de la description, vous avez le sentiment que vous n'êtes pas apte à ce poste, vous devez postuler à 100%. L'expérience ou les connaissances pertinentes peuvent être apprises de la personne au cours de plusieurs séries d'entretiens. À mon avis, vous devez faire une demande dans tous les cas.
Des compétences techniques - bien sûr, vous devez avoir de l'expérience et une compréhension du fonctionnement de PHP et de MySQL: ce sont les principales technologies que nous utilisons, notre pile en matière de développement back-end. D'autres départements ont leur propre pile.
Softskills est un vaste sujet. À mon avis, une grande partie du développement ne consiste pas à écrire du code, mais à communiquer avec les gens. Il est très important de poser les bonnes questions. Si vous savez comment faire cela, le problème est résolu à 50%. Il y a toujours des problèmes de malentendus, mais moins il y en a, mieux c'est pour vous, pour l'entreprise et le produit. Autrement dit, la capacité de bien communiquer, vous devez absolument travailler en équipe. Il est également important que les gens sachent comment assumer la responsabilité de mener à bien le projet (fonctionnalité, partie de la fonctionnalité).
Qu'est-il arrivé avant
- Ilona Papava, ingénieur logiciel senior chez Facebook - comment obtenir un stage, obtenir une offre et tout sur le travail en entreprise
- Boris Yangel, ingénieur Yandex ML - Comment ne pas rejoindre les rangs des spécialistes stupides si vous êtes un Data Scientist
- Alexander Kaloshin, EO LastBackend - comment lancer une startup, entrer sur le marché chinois et obtenir 15 millions d'investissements.
- , Vue.js core team member, GoogleDevExpret — GitLab, Vue Staff-engineer.
- , DeviceLock — .
- , RUVDS — . 1. 2.
- , - . — .
- , Senior Digital Analyst McKinsey Digital Labs — Google, .
- «» , Duke Nukem 3D, SiN, Blood — , .
- , - 12- — ,
- , GameAcademy — .