[* Java *] Ich ging zum JJUG CCC 2017 Herbst
Einführung
Wir haben an [JJUG CCC 2017 Herbst] teilgenommen (http://www.java-users.jp/ccc2017fall/).
Ich habe am Tag zuvor getrunken und am Nachmittag angefangen, daran teilzunehmen.
Es ist ein Memo zu dieser Zeit.
Sitzungsliste
- CQRS ・ ・ ・ Getrenntes Schreib- und Lesemodell
- Wenn das System wächst, wird die Schreibsteuerung komplizierter und es werden mehrere Tabellen zum Lesen referenziert.
- Unterschiede in den Schreib- und Leseanforderungen
- Durch die Trennung ist der Code einfacher und effizienter zu schreiben
- ORM ・ ・ ・ Objektzentriert und SQL-zentriert
- Objektmitte ・ ・ ・ Ruhezustand usw.
- SQL-zentriert: jOOQ, JPQL usw.
- Hibernate und jOOQ können zusammen verwendet werden
- Frage "Was ist die Leistung?" Antwort "Diesmal war es ein internes System, daher habe ich dem keine große Bedeutung beigemessen."
- Das Problem, dass die CI-Zeit zu lang ist und nur einmal um Mitternacht gedreht werden kann
- CI sollte schnell sein (weniger als 10 Minuten, spätestens innerhalb von 20 Minuten)
- Wenn das CI lang wird, ist es schwierig, die Ursache zu identifizieren, wenn aufgrund einer Mischung aus mehreren Commits ein Problem auftritt
- Ingenieure vergessen, dass CI sich in erster Linie mit ihren eigenen Verpflichtungen umdreht
- CI ist nicht vorbei und die Veröffentlichung ist verzögert
- Ich habe CI für Build- und Unit-Tests verwendet, aber Unit-Tests waren insbesondere ein Problem.
Was ich getan habe
- Im Prinzip haben wir keine Tests durchgeführt, die sich über mehrere Schichten von Controller, Service, Repository, RDB… erstrecken.
- Änderung der Anmerkung:
@ SpringBootTest
ist schwer, da alle Beans registriert sind und auf dem Webserver gestartet werden. @ WebMvcTest
ist schnell, da nur die erforderlichen Beans registriert sind.
- Da die Service-Schicht nicht mit der Außenseite der Anwendung interagiert, führen Sie einen einfachen JUnit-Test durch und verwenden Sie DI nicht
- Bohnenauswahl durch Filter im Repository (ich habe es nicht getan) ... Die tatsächliche Entfettung ist beängstigend, und selbst wenn es funktioniert, werden die Räder neu entwickelt.
- Verbesserung des Verschuldungstests: Weitere Tests mit Entwicklung eines bestimmten Maßstabs, einzelnes Quetschen, Überprüfen, Quetschen, wenn es zu spät ist
- Test löschen: Der Test selbst hat den Vorteil, dass er viele Male ausgeführt wird. Das Verlassen eines Tests, der schwer zu warten ist, ist ein Nachteil. Entscheiden Sie sich daher, ihn zu löschen.
- CI-Rekonstruktion und Aufbau einer parallelen Testumgebung: CI war nicht so wichtig, also habe ich es auf meinem persönlichen PC gemacht. To Auf AWS verschoben, was mit Geld gelöst werden kann, sollte mit Geld gelöst werden
- Einführung in die Testgröße: Einführung in die von Google empfohlene Testgröße, Testausführungszeitpunkt Implementiert in Gruppen von JUnit
@ Category
, maven-surefire-plugin
- FeedBack der Pull-Anfrage: Schnelles Feedback an den Entwickler für jede Pull-Anfrage. Aktiviert, um verschiedene Dinge zurückzugeben, die für die Pull-Anfrage ausgeführt werden können (Verbesserung der CI-Erfüllung).
Es ist schneller und einfacher, Feedback zu geben!
Frage:
Ich denke, es gibt ein komplizierteres System, aber diesmal wurden die Schichten richtig getrennt, so dass es scheint, dass diese Art der Verbesserung möglich war.
Antworten:
Es ist ein kürzlich hergestelltes Produkt und relativ sauber, sodass es in Schichten unterteilt ist.
Wenn der Code selbst durcheinander ist, müssen Sie zuerst den Code selbst umgestalten.
- Es ist schwierig, für jedes Projekt auf dem Entwicklungs-PC nacheinander eine Umgebung zu erstellen.
- [Docker-Demo] Es lief nicht gut
- Ein Mechanismus zum Auslösen eines virtuellen Prozesses, indem ein Container-Image von Docker Hub heruntergeladen und instanziiert wird
- Die JavaEE-Umgebung kann mit nur 3 Befehlen ausgeführt werden
- Java IDE ist nicht Docker-freundlich
Viele Beispiele von Eclipse-Sammlungen wurden vorgestellt und ich habe sie mir angesehen
- Betrieb einer App namens Pictolink für junge Frauen mit 13 Millionen Mitgliedern
- DB-Verbindungs-URLs verschiedener Projekte und Tools ⇛ Ändern Sie alle Projektdateien, wenn Sie DB ersetzen
- Die Zwölf-Faktoren-App Ⅲ. Einstellung: Geben Sie den Einstellungswert in die Umgebungsvariable ein und beziehen Sie sich auf die Anwendung.
Spring Cloud Config
: Konfiguration aus dem Repository abrufen und als JSON zurückgeben
- Auflösen von JavaScript-Abhängigkeiten: Weitere Aufgaben im Frontend ⇛ Ich habe Abhängigkeiten zwischen Dateien ⇛ Es ist schwierig, Funktionen zu entfernen
- Ich habe versucht,
Require.js
zu verwenden, aber die abhängige JS-Ausführung ist langsam. ⇛ Verwenden Sie webpack
, um ein JS zu erstellen! ⇛ Node.js Umgebung erforderlich, Transpile erforderlich
- Die Installation von Node.js ist ein hoher Schwellenwert für Nicht-Ingenieure
- Verwenden Sie Gauge für die Automatisierung von UI-Tests
- Sie können Testinhalte mit "Gauge" auf Japanisch schreiben
- "Selen" macht es programmartig, aber "Gauge" ermöglicht es Nicht-Ingenieuren zu schreiben.
- Der Nachteil von "Gauge" ist, dass es möglicherweise nicht funktioniert, wenn Sie auf die aktuelle Beta-Version aktualisieren, und die Definition von Schritten bei vielen Tests eher verwirrend ist.
Gauge
Projektstruktur ( Gauge
⇛ Gauge Java
⇛ DbUnit
und Selenide
)
- Es ist wichtig, sich zu verbessern!
abschließend
Ich kann nicht plötzlich etwas Nützliches vorstellen, aber
Ich fand es wichtig, es auch nach und nach in eine positive Richtung zu verbessern.