[JAVA] Hinter dem 10-Jahres-System

Dieser Artikel ist der 6. Tagesartikel von Recruit Lifestyle Adventskalender 2018.

@tunanosuke. Ich bin dieses Jahr zu Recruit gekommen und entwickle jetzt Hot Pepper Beauty. Hot Pepper Beauty ist ein Produkt, das seit über 10 Jahren im Einsatz ist. Während es als Unternehmen ein großer Erfolg war, ist es technisch voller Schulden. Es gibt einen Hintergrund, bei dem wir dem Wachstum von Produkten Priorität eingeräumt haben, obwohl es bisher nur wenige Ingenieure im Unternehmen gibt, aber wir sind dabei, uns schrittweise zu verbessern. Ich möchte die Rückseite vorstellen, wie ein solches 10-Jahres-System jetzt ist und wie es gewartet wird.

Aktueller Status

Tabellen- und Spaltennamen sind in römischen Zeichen angegeben

Romaji, das ziemlich oft auftaucht. Und manchmal wird es weggelassen. Zum Beispiel für das Wort "reserviert"

Es gibt eine Ausdrucksmethode wie, und sogar die Anwendung wird so zurückgegeben, wie sie ist. Ist es akzeptabel, weil ich Romaji immer noch verstehen kann? Auch wenn es weggelassen werden kann, ist es ziemlich streng. Eine Änderung hier ist jedoch kostspielig und riskant. Daher ist es wichtig, das, was geändert werden kann, von dem, was nicht geändert werden kann, zu trennen und das, was nicht geändert werden kann, so nah wie möglich zu blockieren. Das mache ich jetzt.

Die Anzahl der Spalten in einer Tabelle ist erstaunlich

Lang seitwärts, sowieso lang ... Wenn ich jedoch an RDB denke, denke ich, dass ich oft darüber nachdenke, wie ich es seitwärts halten soll, damit ich meine Gefühle verstehe. Sie können die Ergebnisse des Hinzufügens und Erweiterns der Funktionen sehen. Da es viele Flags gibt und eine Tabelle viele Zustände verwaltet, wird der Anwendungscode auch dadurch kompliziert. Auf der anderen Seite gibt es auch ein Sprichwort: "Was? Ich normalisiere hier", also mache ich es, während ich verschiedene Absichten errate.

Es gibt viele Dinge, die durch diese Spekulation gerettet werden können, und selbst wenn aus einer detaillierten Perspektive etwas zu sagen ist, kann ich die Absicht lesen, z. B. warum es passiert ist oder warum es passiert ist. Wenn Sie die Designer und Dokumente zu diesem Zeitpunkt haben, wäre es natürlich besser, aber ich kann das nicht tun, weil ich bisher keine Ingenieure in meinen Mitarbeitern hatte. Ich finde es immer noch eine Erleichterung, in einem Zustand zu sein, in dem ich das Gefühl habe, das tun zu wollen.

Subquery Join Join Subquery Join Union

Es ist vertikal lang, es ist sowieso lang, es ist einfach, wenn Sie es einmal bekommen können, ich werde es tun Die Funktionen von Hot Pepper Beauty wurden unter Einbeziehung verschiedener Personen erweitert. Infolgedessen ist das Design ad hoc und inkonsistent. Daher ist es keine Datenstruktur, die mit einem O / R-Mapper abgebildet wird und in Ordnung ist, aber es ist ziemlich schwierig, sie mit einem SQL zu verwenden. Das Ergebnis ist eine Schuld als langsame Abfrage. Für das aktuelle Produkt ist es angemessen, der Anwendung eine Ebene zu geben, die das SQL sanft aufteilt und es der Struktur zuordnet, die auf der Anwendungsseite zu ihnen passt, und wir bereiten auch jede einzelne vor.

Große Charge

Ich habe ein Batch-Team. Mit anderen Worten, es gibt so viel. Ich liebe Chargen!

Es ist unvermeidlich, dass dies bereits geschehen ist, aber das Schwierigste ist, herauszufinden, welcher Stapel welche Daten beeinflusst. Obwohl es immer noch als Referenz dient, ist es schwierig zu erkennen, welche Daten für welchen Trigger aktualisiert werden. Ist es nicht möglich, dass der Stapel, in dem der Aktualisierungsprozess ausgeführt wird, die Master-DB-Tabelle für eine Weile sperrt?

API-Design

Erstens besteht Hot Pepper Beauty aus zwei Hauptdiensten.

--Friseur

Dieses Haar und diese Schönheit haben unterschiedliche Eigenschaften und völlig unterschiedliche Domänen. Wir entwickeln es als einen Service. API-Endpunkte unterscheiden häufig nicht zwischen Haar und Schönheit. Da die Eigenschaften unterschiedlich sind, unterscheiden sich die erforderlichen Daten und Antwortdaten auch für Haar und Schönheit, sodass die Anwendung viele Haarschönheitszweige enthält. Es gibt viele gleiche Attribute im Sinne eines Schönheitssalons, aber es ist schwierig, verschiedene Bereiche mit einem auszudrücken, wenn man in die Zukunft schaut, nicht wahr? Wir sind derzeit dabei, hier eine klare Trennung zu entwerfen.

POST-Methode beim Abrufen von Ressourcen

:thinking:

Um frühere Schulden wie Ersatz zu beseitigen, ist es sehr wichtig, die Geschichte des Produkts und dessen Entstehung zu verstehen. Wenn Sie dies nicht tun, können Sie sich nicht verbessern, aber manchmal ist es auch notwendig, sich zu entscheiden, nicht tief zu verfolgen. Oder. Dies ist ein solcher Fall.

Ein kleiner Ausblick auf die Zukunft

sda replace.png Wir ersetzen die traditionelle monosilic Architektur durch eine BFF - Backend Konfiguration. Das Backend verwendet weiterhin Java und die BFF Kotlin. Es ist wichtig, die Schulden, die nicht in Backend umgewandelt werden können, so weit wie möglich beizubehalten, damit sie für jedes Produkt einfach aussehen. Ich werde in Zukunft weitere Details dazu in unserem Ingenieur-Blog veröffentlichen.

Zusammenfassung

Hier sind nur einige. Es gibt viele solche Dinge. Andererseits ist es wunderbar, dass es als Produkt ein enormes Wachstum erzielt hat, und ich bin dafür dankbar und werde es in eine Architektur verwandeln, die in die Zukunft blickt.

Recommended Posts

Hinter dem 10-Jahres-System
Versuchen Sie es mit dem Nachrichtensystem Pulsar
Implementieren Sie das Boxball-System mit Processing