Friedhof der toten Blogposts - CBOR
Wie haltet ihr euch up to date bei AWS? Ich hab da einen kleinen Trick: Ich bin auf GitHub auf die Changes vom AWS Go SDK eingebucht.
Und da bin ich etwas Interessantem auf die Spur gekommen, was aber, wie ich es verstehe, gar keine große Auswirkung hat.
github.com/aws/aws-sdk-go-v2/service/aiops: v1.18.0
Feature: Enable schema-based (de)serialization for this service.
In der näheren Beschreibung zu diesem und ähnlichen findet sich folgender interessanter Satz:
“… Changing a service’s wire protocol (SQS moving from Query to JSON, the ongoing CBOR rollout in various services) requires regenerating and shipping entirely new serde code. …”
Was mich zu der Frage bringt: Was ist CBOR.
Laut wikipedia:
CBOR (Concise Binary Object Representation) is an IETF-standardized (RFC 8949) binary data serialization format designed to provide the expressive power of JSON in a smaller, faster, and more compact package
AWS API Historie
Alle AWS-Services sind als REST-API mit JSON ansprechbar.
Alle? Nein. Ein kleines, kämpferisches Völklein von Altservices benutzt tatsächlich noch XML für responses .
Hier der Beweis:
Sample Response:
<StartInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
<requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
<instancesSet>
<item>
<instanceId>i-1234567890abcdef0</instanceId>
<currentState>
<code>0</code>
<name>pending</name>
</currentState>
<previousState>
<code>80</code>
<name>stopped</name>
</previousState>
</item>
</instancesSet>
</StartInstancesResponse>
RPC v2 CBOR
XML ist das ganz Alte, und jetzt kommt das ganz Neue:
Hier werden nette Performancesteigerungen versprochen:
Smithy RPC v2 CBOR provides up to 13% lower latency and up to 15% reduction in payload size compared to AWS JSON.
Toll, wo soll ich unterzeichnen?
Smithy RPC v2 CBOR provides up to 13% lower latency and up to 15% reduction in payload size compared to AWS JSON.
Folgende Sprachen verwenden automatisch Zebo in der neuesten Version des AWS SDK:
- AWS SDK for C++
- AWS SDK for Go V2
- AWS SDK for Java 2.x
- AWS SDK for .NET v4
- AWS Tools for PowerShell v5
- AWS SDK for Swift
- AWS SDK for Kotlin
Node und Python fehlen, weil sie laut AWS einfach eine so tolle JSON-Implementierung haben, dass sie das nicht brauchen.
Und jetzt meine Schnaps-Idee, wie ich das denn testen kann
Die größten Datenmengen werden bei S3 oder DynamoDB mit übergeben, wo man dann Reduction in Payload am besten nutzen könnte.
Jetzt kann ich aber nichts zu DynamoDB C-Bor finden. Sieht so aus, als wenn das nicht unterstützt wird, weil DynamoDB ja wirklich nativ auch unter der Haube JSON benutzt.
Und jetzt?
Suche ich weiter nach sinnvollem Test, wo ich diese große Verbesserung in der Latenz und Datenmenge sehen kann.