Succeeding with microservices, ThoughtWorks meetup in Hamburg~ 2 min.

Microservices ThoughtWorks Meetup - Katjasays.com

Verteilte Systeme bestehen aus verschiedenen Services, die in einem Netzwerk verbunden sind. Diese Services nennt man Microservices. Im Prinzip hat man ein Problem, dass so komplex ist, dass man es aus geschäftlich bedingten Gründen in Unterprobleme aufteilen muss und diese Unterprobleme unabhängig voneinander zu lösen sind. Herausforderungen dabei sind, dass Funktionalitäten sinnvoll aufgeteilt werden müssen, das Netzwerk unvorhersehbar reagieren kann und alles skalieren sollte. Man sollte sich allerdings überlegen, ob Microservices für einen wirklich sinnvoll sind, denn man sollte sie nicht nutzen, wenn man sie nicht braucht bzw. wenn man sie nicht vernünftig pflegen kann. Das heißt, dass man groß denken, aber klein anfangen sollte, um erstmal auszutesten, ob man so arbeiten kann.

Die Vorteile von Microservices sind zum einen die Schnelligkeit, mit der Business Values ausgeliefert werden können und zum anderen die Austauschbarkeit von Systemen, die niemals fertig sind. Doch wie kann man sein großes System in kleine Services aufteilen? Bei einem Ecommerce Shop könnte man es z.B. in die Bereiche User Management, Product Management und Order Management aufteilen. Diese Bereiche könnte man, wenn es notwendig ist, noch weiter aufsplitten oder noch andere Services, wie das Payment Management, hinzu nehmen. Man sollte allerdings beachten, dass folgende Bedingungen von einem Microservice erfüllt werden:

Dabei gibt es zwei Varianten, wie man die Einführung von Microservices angehen kann. Die erste Variante wäre die, einen Microservice nach dem anderen zu entwickeln. Die zweite Variante wäre die, ein System immer weiter auszubauen und dann sinnvoll Bereiche voneinander abzusplitten. Man sollte wegkommen von Conways Gesetz, das besagt, dass das System, das man baut, so aussehen wird wie die Organisation, die man führt. Man sollte eher dahin kommen, dass die Organisation, die man führt, so gestaltet, dass sie dem entspricht, wie man sein System haben möchte. Man sollte immer im Hinterkopf behalten, dass aufgrund der einzelnen Komponenten das System als ganzes zusammenbrechen könnte, wenn eine der Komponenten nicht funktionieren sollte. Daher sollte man Dinge so bauen sollte, dass die Effekte von schlechten Vorkommnissen eingedämmt werden, sodass die Fehlertoleranz größer wird und das System insgesamt stabiler ist. Außerdem gilt es zu beachten, dass alles skaliert, die manuelle Arbeit, Dinge, die man monitoren muss, und die Systeme, die benötigt werden. Daher muss man ein hohes Niveau der Automatisierung, ein gutes Monitoring, eine Aggregation der Logs und schnelles Provisioning innehaben.

Succeeding with microservices ThoughtWorks meetup - Katjasays.com

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert