Serialization: Difference between revisions
(One intermediate revision by the same user not shown) | |||
Line 5: | Line 5: | ||
* [[Microservices#Serialization|Microservices]] | * [[Microservices#Serialization|Microservices]] | ||
* [[Data Encoding and Evolution]] | * [[Data Encoding and Evolution]] | ||
* [[Forward and Backward Compatibility]] | |||
=Overview= | =Overview= | ||
Line 18: | Line 19: | ||
==Keep your Schema Backward Compatible== | ==Keep your Schema Backward Compatible== | ||
Avoid changes in data schema that would break existing callers. Such changes include modification (renaming or removal) of field names and types. Adding fields is fine. | Avoid changes in data schema that would break existing callers. Such changes include modification (renaming or removal) of field names and types. Adding fields is fine. Also see: {{Internal|Forward and Backward Compatibility|Forward and Backward Compatibility}} | ||
==Ensure Data Schemas are Kept in Sync between Clients and Servers== | ==Ensure Data Schemas are Kept in Sync between Clients and Servers== |
Latest revision as of 23:47, 8 May 2024
External
Internal
Overview
Serialization is a process that encodes and decodes data for storing or sending between services. The process of transforming the original data into transit data is called serialization. The inverse process of transforming transit data into the original data is called deserialization.
Serialization Formats
Serialization Best Practices
Keep your Schema Backward Compatible
Avoid changes in data schema that would break existing callers. Such changes include modification (renaming or removal) of field names and types. Adding fields is fine. Also see:
Ensure Data Schemas are Kept in Sync between Clients and Servers
For serialization formats with explicit schema definitions such as Apache Thrift, Apache Avro and Protocol Buffers, the client and servers should be kept in sync with the latest schema versions.
Document Implicit Details
Let the callers know any implicit details related to your data schema. For example, if your API does not allow an empty value of a certain field of the structure, include this in the comments in the schema file.
Use Built-in Structures for Representing Time
Protocol Buffers and other serialization protocols provide built-in types for timestamps and durations. Use those. For Protocol Buffers, use google.protobuf.Timestamp
.
Use Consistent Naming
Follow the Official Style Guide
Get familiar with the official style guid of the schema definition language and use it.