Commit 370f10b4 authored by Nane Kratzke's avatar Nane Kratzke
Browse files

Tier Kennzeichnung

parent e651dd7c
...@@ -150,26 +150,54 @@ Vollziehen Sie bitte die Implementierung unter `hiphop/service.py` und das Deplo ...@@ -150,26 +150,54 @@ Vollziehen Sie bitte die Implementierung unter `hiphop/service.py` und das Deplo
```Bash ```Bash
Terminal 2:> kubectl port-forward svc/hiphop-svc 58888:80 Terminal 2:> kubectl port-forward svc/hiphop-svc 58888:80
``` ```
3. Unter [http://localhost:58888](http://localhost:58888) sollte nun "Hip -> hop-1 -> hop-2 -> hop-3 -> hop-4 -> END" stehen. 3. Unter [http://localhost:58888](http://localhost:58888) sollte nun `"Hip -> hop-1 -> hop-2 -> hop-3 -> hop-4 -> END"` stehen.
Ein Request an den ersten Service geht als bis zum Ende der Service-Kette durch. Dies soll Services "simulieren", die von Upstream-Services abhängig sind (die wiederum von weiteren Upstream-Services abhängen, usw.). Ein Request an den ersten Service geht als bis zum Ende der Service-Kette durch. Dies soll Services "simulieren", die von Upstream-Services abhängig sind (die wiederum von weiteren Upstream-Services abhängen, usw.).
Wie in Übung 01 geben wir mittels eines dritten Lens Terminals
```Bash
Terminal 3:> salvo -c 5 -n 100 http://localhost:58888
```
nun etwas Last von 5 Usern mit insgesamt 100 Requests ins System.
1. Sehen Sie sich nun wieder unter [http://localhost:55601/app/apm](http://localhost:55601/app/apm) (Kibana) die Tracings an. Sie sollten Ihren Hip Hop Service (und ggf. weitere Tracings von anderen Kursteilnehmern und Cluster-Nutzern sehen).
2. Inspezieren Sie nun wie in Übung 01 die Latenzdistribution. Schauen Sie sich die Traces von kurzen Latenzen an. Dort wird vermutlich primär die letzte Stufe der Kaskade zu finden sein? Schauen Sie die Traces mit langen Latenzen an. Dort werden vermutlich die Requests zu finden sein, die durch die komplett Kaskade gehen? Die Latenzen mittlerer Dauern sind vermutlich die Requests gegen Tier 2 und 3.
3. Das Problem ist, dass wir die kompletten Traces von vier Services unter einem Servicenamen haben und somit nicht gut trennen können. Schreiben Sie also bitte Ihre Instrumentierung so um, dass jeder Ihrer Services die Tier-Nummer ergänzt bekommt, damit man die Traces auch den einzelnen Services zuordnen kann.
4. Committen und Pushen Sie Ihre Änderung in die Deployment Pipeline. Und führen Sie den manuellen `hiphop-svc`-Job der `deploy`-Stage der letzten Pipeline erneut aus.
5. Warten Sie ein wenig, bis der Service redeployed wurde (verfolgen Sie dies in Lens). Terminieren Sie dann das Port Forwarding in Terminal 2 (`CTRL-C` bzw. `CMD-C`) und geben Sie nun wieder etwas Last ins System.
```Bash
Terminal 2:> kubectl port-forward svc/hiphop-svc 58888:80
Terminal 3:> salvo -c 5 -n 100 http://localhost:58888
```
Wenn Sie sich nun wieder unter [http://localhost:55601/app/apm](http://localhost:55601/app/apm) (Kibana) die Tracings ansehen, werden Sie Ihre
![UI](Kibana-UI.png) ![UI](Kibana-UI.png)
Wenn Sie auf `hiphop-svc-1` klicken, sollten Sie eine derartige Auswertung sehen. Insbesondere die Latency Distribution ist hier von Interesse, da Sie diese nutzen können, um die Verteilung von Latenzen in Ihren Requests zu sehen. Wenn Sie auf `hiphop-svc-1` klicken, sollten Sie eine derartige Auswertung sehen. Insbesondere die Latency Distribution ist hier von Interesse, da Sie diese nutzen können, um die Verteilung von Latenzen in Ihren einzelnen Services sehen.
Vergleichen Sie doch einmal die Spans von Requests mit kurzen Latenzen mit den Spans von langen Latenzen. Vergleichen Sie doch einmal die Spans von Requests mit kurzen Latenzen mit den Spans von langen Latenzen.
![Tracing](Kibana-Tracing.png)
__Verständnisfragen:__
- Was fällt Ihnen auf? - Was fällt Ihnen auf?
- Wie entstehen vermutlich die Wartezeiten? - Wie entstehen vermutlich die Wartezeiten?
- Was für Ideen haben Sie, diese Wartezeiten zu reduzieren? - Könnten Sie hier mittels parallelen asynchronen Requests wie in Übung 01 die Requestverarbeitung beschleunigen?
- Welche Möglichkeiten haben Sie in diesem Fall, die Latenzen zu reduzieren?
![Tracing](Kibana-Tracing.png) __Last-Experimente:__
Bringt ein unterschiedliches Skalieren der einzelnen Tier-Stufen etwas?
Fahren Sie zur Beantwortung dieser Frage ein paar Lasteteste mit unterschiedlichen Skalierungen durch, und überprüfen Sie Ihre Hypothesen! Welche Skalierungsform erbringt den meisten Performance-Gewinn?
> __Hinweis:__ > __Hinweis:__
> Wenn Sie gar nicht weiterkommen, können Sie mit > Wenn Sie mit der Instrumentierung gar nicht weiterkommen, können Sie mit
> `> cp/cheat/service-ue2.py hiphop/service.py` > `> cp/cheat/service-ue2.py hiphop/service.py`
> ggf. etwas abkürzen. > ggf. etwas abkürzen.
......
...@@ -12,7 +12,7 @@ service = os.environ.get('BASE', 'hiphop-svc') ...@@ -12,7 +12,7 @@ service = os.environ.get('BASE', 'hiphop-svc')
tier = int(os.environ.get('TIER', '1')) tier = int(os.environ.get('TIER', '1'))
id = os.environ.get('NS', 'unknown') id = os.environ.get('NS', 'unknown')
app = Flask(__name__) app = Flask(__name__)
apm = ElasticAPM(app, service_name=f"{id}-{service}") apm = ElasticAPM(app, service_name=f"{id}-{service}-{tier}")
@app.route('/') @app.route('/')
def index(): def index():
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment