protocol buffers is language, platform neutral data serialization format by google
- faster and compact by using binary format
- provide forward & backward compatibility methodology
NOTE! protobuf 는 단지 forward, backward compatibility 를 지원할 수 있는 방법을 알려주며 language, platform neutral 한 serialization/deserialization 도구일 뿐 그 자체로 버전 관리나 schema 관리를 하지 않는다
![image](https://private-user-images.githubusercontent.com/48385288/238194144-f4a50f1e-7ed6-4969-a25c-ec42aac990a7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0OTg0MTgsIm5iZiI6MTczOTQ5ODExOCwicGF0aCI6Ii80ODM4NTI4OC8yMzgxOTQxNDQtZjRhNTBmMWUtN2VkNi00OTY5LWEyNWMtZWM0MmFhYzk5MGE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE0VDAxNTUxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFkZDc3MzJiNTE1MGZmNTk4ZGNkZGFkMGI5Mzc1Mzg5YTViMzMzYTY0NzE2Yzc3MWQ3MmQ0NDU1YTAxN2NkNzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.qv6dDnfAec5iDuVsdw7Df7gXD6SKvRutdDo406jB4RE)
If you want to use it simply, follow these steps
- define your data schema (called
.proto
) - generate programming language code from schema file
- use
./gradlew clean build
or
./gradlew generateProto
brew install protobuf
protoc --java_out={output location} {input location}
protoc --java_out=src/main/java ./proto/person.proto
- 음.. 일단 그냥 oas 하는거랑 똑같다
- 일단 swagger 로 oas 를 먼저 해봐서 그런지 사용법에 대해서는 거부감이 없었다. gradle 설정하는데 좀 애를 먹긴 했는데,,
- 그리고 이건 s/d 와 버전 호환에 대한 방법을 제시할 뿐 그 자체가 버전관리를 하지는 않는다
- OuterClass 로 static class 접근하는 코드들이 default 라서 좀 귀찮다? 쉽게 잘 안읽힌다
- 옵션이 있긴 해도 static class 접근하는게 귀찮다
- Don’t go looking for facilities similar to class inheritance, though – protocol buffers don’t do that.
- Protocol buffer classes are basically data holders, that don’t provide additional functionality
- if you want to more rich class, adapting the proto class
- 관건은 byte 를 어떻게 전달하고 받을것인지에만 집중하면 될것 같다