[JAVA] Mémo de participation au printemps JJUG CCC 2018

Technologie qui prend en charge le plus grand moteur de recherche d'emploi du Japon en «veille»

https://speakerdeck.com/marevol/ri-ben-zui-da-ji-falseqiu-ren-jian-suo-enzin-sutanbai-wozhi-eruji-shu

À propos de la fonction de recherche de veille

--Standby: recherchez plus de 8 millions d'informations professionnelles à la fois

Index et requête en veille

Rechercher des problèmes et des réponses

Apprentissage automatique

à partir de maintenant

--Augmentation / diminution du nombre de nœuds par mise à l'échelle automatique

Questions et réponses

―― Quelle est votre évaluation de Query Turing?

Résumé de Java10 et qu'advient-il de Java11

https://www.slideshare.net/nowokay/java10-and-11

soutien

――Il n'est plus question de devenir une version annuelle et mensuelle, et la version majeure est incrémentée comme avant --La version de maintenance augmente la révision (10.0.1 en avril, 10.0.2 en juillet), la version mineure est toujours 0 --JDK 11 LTS pour 2018/9 (LTS est ajouté au nom de la version)

JDK10

JDK11

Support

##Je souhaite avoir une architecture de microservice même avec un ancien framework https://docs.google.com/presentation/d/1OZFgxuJQacfTc-3SY-ldxEE4OM3KUaUocdwIdkmy1z8/edit#slide=id.g3b5fd37ef4_0_83

-Je veux mettre un ancien service dans un micro service +Réduisez la charge opérationnelle (placez-la sur une plateforme commune) +Divisez les services pour faciliter le remplacement

Spring Cloud Config

Spring Cloud Stream(Apahce Kafka)

-Je souhaite ajouter un post-traitement à certains traitements avec l'ancien service +notification push, fonction d'envoi de courrier +Je ne veux pas écrire le même traitement que celui utilisé dans d'autres services, traitement commun pour chaque service +Si vous en faites un module, vous devrez l'adapter à la forme qui peut être utilisée dans les anciens services +Je veux qu'il soit exécuté de manière asynchrone -Utiliser Apache Kafka (1 source, 2 puits) -Conception du sujet +Exemple: notification push après une fonction +Faites "ce que vous avez fait" Tipic, par exemple) comme / follow / post ("Poussez YYY à XXX"Ne faites pas de sujet) -Comment changer le contenu du message +Il vaut mieux créer un nouveau sujet +Une fois que le côté source a commencé à envoyer des messages au nouveau sujet, le côté récepteur fait référence au nouveau sujet.

##Exemple d'utilisation de gRPC dans le système d'enchères publicitaires de Logicad qui gère 160000 demandes par seconde https://www.slideshare.net/hiroiso/logicad16grpc

gRPC

-Candidats à la sélection +Redis: fonctionne dans un seul thread, ce qui affecte le débit (blocs) +Aerospike: les données sont fragmentées et affectent la latence (plusieurs communications se produisent, le multithreading augmente les connexions de thread)

###Résultat de l'application effective de gRPC -référence +Test de résistance du serveur d'information sur les produits publicitaires seul (débit maximal, mesure de l'évolution du nombre de connexions) +Mesure de la latence et du débit dans un environnement de test de charge (une série de traitement des offres) -Il est possible d'appliquer une charge à l'aide de JMeter même avec gRPC +Il est possible de préparer une classe qui implémente JavaSamplerClient et de demander n'importe quel protocole. -Test de chargement

##L'histoire de la création d'une application serveur avec DDD et une architecture propre -La construction urgente ne fonctionne pas +Le contour de la spécification a été décidé, certaines des fonctions de base avaient des parties, donc je veux voir ce qui fonctionne en les utilisant dès que possible +Le prototypage s'est déroulé lors de la création des spécifications fonctionnelles +J'ai été beaucoup poussé et le prototype était sur le point de devenir un code de production ⇒ je n'ai pas pu le sortir -Diverses réflexions +Téléchargez tous les clients du serveur et du processus (volume de trafic anormal, charge de traitement client accrue) +Le reflet des changements de spécification de la destination de la coopération externe se reflète dans tous les composants +Aucun composant ne constitue le corps principal de la logique métier et chaque composant ne peut pas se concentrer sur la logique de base et supporte le processus de conversion

###conception -Ordre de conception +Définir le pas d'ascenseur +Définir les spécifications fonctionnelles et les scénarios d'utilisation (définir également les exigences non fonctionnelles) +Analyse de robustesse +Extraction du contexte borné +Créer une carte de contexte -Analyse de robustesse +Créer un scénario de cas d'utilisation à l'avance +Réfléchissez à la façon de créer une fonction qui répond au scénario +Exprimez-le avec des frontières (écrans, cron), des entités (données à gérer), des contrôles (traitement, authentification des utilisateurs, acquisition de valeur, etc.) +Manuscrit, écrit et effacé dans le cahier, et adopté celui qui semble bon à analyser par deux personnes -Carte contextuelle +Pour les fonctions apparaissant dans le diagramme de robustesse, collectez des fonctions similaires et définissez un «contexte borné» +Ecrire → réparer → écrire → corriger +Jugé soigneusement les relations entre les contextes (partenariat, client/Fournisseur, adaptateur) -Langue omniprésente +Établissez des termes uniques pour chaque contexte +En tant que système, il est plus facile de comprendre si les termes sont unifiés entre les contextes, et nous n'utilisons pas les mêmes termes dans des contextes différents avec des significations différentes. +J'ai aussi décidé de le nommer sur le programme → C'est populaire

###Choses à préparer avant la mise en œuvre -règle +Fonctionnement du référentiel Git, norme de codage, configuration du package, norme d'API Rest, niveau de journalisation +L'exception définit la classe près de l'endroit où elle s'est produite -Point de vue de l'examen du code source +Est-il possible pour une autre personne de le maintenir, est-il extensible dans le futur, n'y a-t-il pas de gaspillage, la portée d'influence est-elle trop large? +Sécurité (réécriture des variables d'instance de la classe Autowired, l'expiration du cache est-elle prise en compte?) -L'architecture dans chaque contexte

###L'architecture dans chaque contexte -Couche d'interface

###Ce que j'ai trouvé après sa mise en œuvre -Vous pouvez vous concentrer sur vos intérêts

Recommended Posts

Mémo de participation au printemps JJUG CCC 2018
Mémo JJUG CCC Printemps 2018
Rapport du printemps JJUG CCC 2018
Je suis allé au JJUG CCC 2019 Spring
J'ai participé au JJUG CCC 2019 Spring
Mémo rétrospective du printemps
Résumé de la participation au JJUG CCC 2019 Spring
[* Java *] J'ai participé au JJUG CCC 2019 Spring
[Memo] Séminaire de nuit JJUG
Notes d'utilisation de Spring Shell
Rédaction de mémo de démarrage de printemps (1)
Rapport d'automne 2018 du JJUG CCC
Rédaction de mémos de démarrage de printemps (2)
Résumé du matériel du JJUG CCC automne 2018
Mémo d'utilisation de Spring Security CSRF
Série de mémos d'auto-apprentissage Spring Framework_1
Mémo d'utilisation de Spring Security Run-As
Spring Security Usage Memo Method Security
Mémo d'utilisation de Spring Security Remember-Me
Liste de diapositives d'automne JJUG CCC 2019
JJUG CCC 2017 Fall Report Java
Participation au JJUG CCC 2019 AUTOMNE
Résumé du matériel d'automne du JJUG CCC 2019
Impressions d'un apprenti ingénieur se rendant au JJUG CCC 2018 printemps
Mémo d'utilisation de Spring Security CORS
Test de mémo d'utilisation de Spring Security
Mémo de méthode de contrôleur de démarrage à ressort
Authentification / autorisation de mémo d'utilisation de Spring Security
◆ Spring Boot + note de construction de l'environnement gradle
cadre de printemps Mémo d'étude simple (2): AOP
En-tête de réponse de mémo d'utilisation de Spring Security
Mémo après le premier projet Spring-MVC-
J'ai participé au JJUG CCC 2019 automne
Gestion des sessions de mémo d'utilisation de Spring Security
Mémo d'utilisation de Spring Security Basic / mécanisme
Un mémo qui a touché Spring Boot
Mémo de mise à niveau de la version d'introduction approfondie du printemps
Mémo après le premier projet Spring-Database-
J'ai participé au JJUG CCC 2019 Fall.