Aperçu des rapports DotNext 2018 les plus intéressants: version EastBanc Technologies

Bonjour, citoyens Habrovsk!

Nous sommes revenus d'une conférence pour les développeurs DotNext .NET et partageons honnêtement nos impressions sur les rapports les plus mémorables. Nous espérons que notre critique sera utile à ceux qui regarderont des vidéos de performances.

Une partie des présentations a été publiée sur le site Web de la conférence, nous avons donc complété certaines des critiques par des liens vers celles-ci.



Jour 1


Utilisation de Tarantool dans les projets .NET - Anatoly Popov ( présentation )


Le rapport a commencé par un examen de l'évolution des bases de données SQL -> NoSQL -> NewSQL, leurs avantages et leurs inconvénients. Anatoly a expliqué pourquoi, en fait, le besoin de NewSQL a mûri - il s'agit d'une tentative de croiser les performances de NoSQL et le langage de requête SQL, pour lequel un milliard d'outils utiles sont disponibles.

La fonctionnalité suivante a été mentionnée à propos de Tarantool - les enregistrements sont stockés sous forme de tuples de longueur arbitraire. Sous le capot, Tarantool utilise des arbres LSM.

La partie principale du rapport, Anatoly a parlé de la lutte pour les performances dans la mise en œuvre du pilote Tarantool pour .NET. De nouvelles abstractions de Readonly Span et du pool IMemoryOwner sont entrées en action. La norme est prise à 200k RPS, ce qui donne le pilote Golang, et jusqu'à présent, a réussi à obtenir 1/3 du résultat. L'orateur a assuré qu'il améliorerait progressivement les indicateurs, mais des plans et perspectives d'avenir spécifiques restaient dans le brouillard.

Optimisations dans .NET Core - Egor Bogatov


Yegor a entouré son histoire sur les tripes du mono et du ryuJIT avec un humour approprié, contrairement au même Unity de Mutel, qu'il était plutôt endormi d'écouter.

Egor a couvert le sujet de l'auto-vectorisation des calculs en mono, a également parlé des instructions SSE-AVX, désormais disponibles directement depuis C #.

En regardant vers l'avenir, il nous a dit que la compilation de niveaux .Net Core 3 nous attend, c'est-à-dire un jit lourd distinct apparaîtra au moment de l'exécution comme un serveur en Java. Dans ryuJIT, de nouvelles optimisations sont attendues pour le déroulement des boucles et l'analyse d'échappement (cette dernière est sciée par un étudiant, laissez le github l'aider).

Notre commentaire: Aujourd'hui, une réserve impressionnante reste pour une augmentation encore plus grande des performances de la plate-forme, car de nombreuses optimisations importantes du monde Java et des compilateurs statiques classiques ne sont toujours pas appliquées dans .Net.

Développement web moderne avec SAFE-Stack - Steffen Forkmann


Stefan est un ardent apologiste de la langue F #. Dans le rapport, il a partagé son expérience dans le développement web, entièrement construit sur des canons fonctionnels. Ici, vous avez à la fois Functional MVC Web Framework (Saturn) et Fable pour la traduction de F # en JS, et une interface utilisateur semblable à Elm, assez assaisonnée de phrases vraiment agréables et très bonnes. Le rapport dans son ensemble n'est pas mauvais et confirme les capacités surnaturelles des religions alternatives.

Création d'applications Xamarin à l'épreuve du mode avion - Gerald Versluis ( présentation )


Selon la méthode de présentation, le rapport est très similaire au rapport SAFE-Stack et ressemble à un programme «Smack»: nous mettons d'abord le composant Essentials pour détecter l'accès Internet sur une plaque avec l'application, puis nous passons l'API REST via Refit, refroidissons les données dans le cache Akavache, saupoudrons Polly sur le dessus pour une gestion intelligente des erreurs des requêtes réseau. Ce n'était pas sans ironie de la langue néerlandaise, car l'application se bloquait continuellement de manière aléatoire dans le simulateur.

Architecture multi-locataire ASP.NET Core: défis et solutions - Halil İbrahim Kalkan ( présentation )


Le rapport décrit toutes les principales caractéristiques de l'architecture des applications multi-locataires.

L'idée principale est que lorsqu'une entreprise développe des applications SAAS, elle souhaite utiliser l'infrastructure au maximum. Par conséquent, il a plusieurs clients sur le même serveur afin que le serveur ne reste pas inactif. Cela pose un problème lié au fait que toutes les données des différents clients sont comme si dans la même chaudière. Le rapport se concentre sur les solutions permettant un accès fiable à ces données.

Un excellent rapport dans lequel tout est disposé sur les étagères. Exemples simples et compréhensibles sans détails inutiles - ils sont écrits de manière très élégante, en utilisant des modèles et des approches modernes. J'ai regardé avec plaisir.

Conception axée sur le domaine: une recette pour un pragmatiste - Alexey Merson ( présentation )


Un excellent rapport sur les concepts de base du DDD. Quel livre lire en premier: «bleu» ou «rouge»? Comment toute l'équipe peut-elle parler la même langue? Est-il possible d'utiliser la dénomination cyrillique dans les programmes C #? Comment arrêter enfin d'avoir peur de l'Interface Séparée et rendre le code de domaine indépendant du reste de l'application? Tous ces points avec des exemples sont mis en évidence dans ce rapport.

Alexey souligne l'importance de la langue (une seule langue) pour la mise en œuvre d'un contexte borné. Il a expliqué comment choisir la taille du contexte délimité et quels types de sous-domaines peuvent être. Le rapport a également déclaré qu'un contexte délimité est égal à un microservice - cela correspond bien à notre expérience dans la mise en œuvre du projet.

Il était intéressant d'entendre parler de l'essence de l'architecture bulbeuse et des avantages par rapport à l'architecture à trois ou quatre couches.

Le rapport est idéal pour ceux qui découvrent DDD et qui souhaitent transférer leurs monolithes vers des microservices, et pour ceux qui commencent à développer des solutions de microservices.

2e jour


Tests unitaires pragmatiques - Vladimir Khorikov ( présentation )


L'un des meilleurs rapports et conférenciers à notre avis.

Vladimir a trié sur les étagères quel était le véritable objectif des tests pour le projet, quelles métriques déterminent la qualité des tests, comment les différents types de tests correspondent à ces métriques. On ne peut pas être en désaccord avec toutes les pensées, il faut donc voir.

Khorikov a enregistré de nombreux cours à Pluralsight - cherchez-le là-bas. Il a également un bon blog .

Design instantané - Maxim Arshinov ( présentation )


Poursuivant le rapport de Merson sur DDD, Maxim a parlé de la transition de la superposition classique de code à l'architecture d'oignon, tout au long du rapport, en remaniant la méthode de mise à jour du courrier électronique de l'utilisateur. Le résultat a été un pipeline de décorateurs (hi, yegor256) dans le style CQRS avec le typage DTO le plus strict (hi, FSharpForFunAndProfit).

En conséquence, nous avons reçu un guide prêt à l'emploi, qui peut être utilisé dans le projet pour obtenir le même code élégant que Max.

En général, le rapport regorge d'idées utiles. L'expérience de Maxim dans l'enseignement a eu un impact positif sur son niveau de compétence en tant que conférencier - écouter la présentation était tout simplement agréable.

Derrière le compilateur de rafales, la conversion de .NET IL en code natif hautement optimisé à l'aide de LLVM - Alexandre Mutel


Apparemment, Unity a montré ses dents sur les jeux de classe A, et donc igrodelov a besoin de performances beaucoup plus proches de C ++. Mutel a expliqué comment ils obtenaient de bons résultats en mettant en évidence un sous-ensemble du langage C # (HPC #), qui a des structures prêtes à l'emploi pour un travail efficace avec de la mémoire sans GC et quelques constructions de langage familières.

L'idée est d'appliquer ce sous-ensemble uniquement pour les méthodes les plus coûteuses, de sorte que dans d'autres endroits, les mains seront déliées comme toujours (dans la mesure où cela est permis dans le développement du jeu). Un nouveau compilateur de rafales AOT / JIT est en cours de développement pour compiler HPC #. Burst par rapport à ryuJIT donne déjà 10x sur certains tests synthétiques.

Les exemples montrés de l'assembleur généré montrent à quel point le compilateur s'est avéré intelligent. Et la solution seule et personne n'est surpris - le code IL est introduit dans LLVM. Les éléments intrinsèques sont également écrits pour les mathématiques à l'aide d'une bibliothèque haute performance tierce.

Le rapport est difficile à comprendre, l'orateur est trop sévère.

La vie des acteurs d'un cluster: pourquoi, quand et comment - Vagif Abilov ( présentation )


Le rapport a révélé que la moitié du public est assis sur F #. C'est peut-être la chose la plus agréable qui se trouvait dans ce rapport. La performance s'est terminée par un chant en direct sur le cerveau divisé dans un cluster. C'est glorieux.

Comment survivre sous charge: serveur tolérant aux pannes, client intelligent - Igor Lukanin ( présentation )


Igor a parlé de la cuisine à chargement élevé dans les projets Kontur. J'ai été surpris que la société utilise un «équilibreur» sur le client: l'API envoie des informations sur le chargement des nœuds de cluster et les statuts 429, selon lequel le client comprend comment répartir les demandes. Il a également montré des mesures d'utilisation des ressources et comment déterminer si tout est bon ou mauvais. Il a expliqué comment citer les demandes par délai et par client, et pourquoi il est préférable de traiter la file d'attente dans l'ordre LIFO.

Le microphone appartenait à un haut-parleur expérimenté, écouter Igor était confortable.

Dodo IS Performance Architecture - Georgy Polevoy ( présentation )


Au début, le rapport semblait plutôt ennuyeux: le rythme incertain du récit, des diapositives ennuyeuses avec des listes de technologies, des définitions bien connues. À un moment donné, un soupçon est apparu: bientôt l'orateur dira que tout ce qui est nécessaire est une ligne à l'entrée. Mais ce n'était pas si simple.

Décrivant brièvement le rapport, nous pouvons dire qu'il était consacré aux fonctionnalités de la bibliothèque Polly , telles que Retry Policy, Bulkhead Isolation, Fallback, et est assaisonné d'excellents exemples de la vie de Dodo Pizza.

La tendance de ces dernières années est d'utiliser l'asynchronie partout. Mais cette tendance a un effet non évident - cela conduit au fait que les ressources du serveur sont "obstruées". Auparavant, tout était limité à un pool de threads. Le serveur Web avait un pool fixe de threads qui traitait les demandes entrantes effectuant des opérations synchrones. Cela a limité la charge sur le serveur. Chaque thread a été libéré et a reçu une autre demande de traitement lorsque tout le travail était vraiment terminé.

Aujourd'hui, les développeurs écrivent souvent du code asynchrone sans penser aux conséquences. En conséquence, les flux du serveur Web, à partir de la prochaine tâche asynchrone, sont libérés et continuent à traiter de plus en plus de nouvelles demandes. Au fil du temps, le nombre d'opérations asynchrones concurrentielles augmente et le serveur Web continue à accepter de plus en plus de demandes.

Dans son rapport, l'auteur explique simplement ce qu'est la concurrence et pourquoi elle devrait être limitée. Soit dit en passant, cette tâche et d'autres tâches de gestion de la charge et de tolérance aux pannes sont aidées par la bibliothèque Polly.

En général, même si vous ne développez pas de services très chargés, consultez quand même ce rapport.

Création d'applications réactives et évolutives - Jeffrey Richter ( présentation )


Il s'agit d'un rapport assez ancien de Jeffrey Richter. Il pourrait être trouvé sur Internet pendant au moins un an, et le sujet n'a aucune prétention à la nouveauté. Mais bon sang, c'est Jeffrey Richter! Nous ne pouvions pas nous empêcher d'écouter l'auteur du livre, qui est à juste titre considéré comme la bible de tout développeur C #. Le vieux Jeffrey était une personne agréable et un bon orateur. Nous nous sommes juste amusés.

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


All Articles