JSON vs Protobuf ํฌ๊ธฐ ๋น๊ต๊ธฐ ์ฌ์ฉ๋ฒ
ํ๋ ๋ฒํธ์ ํ์ , JSON ํค, ๊ฐ์ ํ ์ค์ ํ๋์ฉ ์ ์ผ๋ฉด ๋ ํ์์ ๋ฐ์ดํธ ์๋ฅผ ํ๋๋ณ๋ก ์ธ์ด ๋น๊ตํฉ๋๋ค. ์ผํ๋ ํญ์ผ๋ก ์นธ์ ๋๋๋ฉฐ, ๊ฐ์ ์ผํ๊ฐ ์์ด๋ ๋ค ๋ฒ์งธ ์นธ๋ถํฐ๋ ๊ฐ์ผ๋ก ์ฝ์ต๋๋ค.
๊ณ์ฐ ๋ฐฉ์๊ณผ ๊ทผ๊ฑฐ
Protobuf ๋ ํ๋ 1๊ฑด์ ํ๊ทธ(ํ๋๋ฒํธ ร 8 + ์์ด์ด ํ์ ์ varint ๋ก) + ๊ฐ์ผ๋ก ์ ๋๋ค. varint ๋ 0~127 ์ด 1๋ฐ์ดํธ, 128~16,383 ์ด 2๋ฐ์ดํธ, 16,384~2,097,151 ์ด 3๋ฐ์ดํธ์ด๊ณ ์ดํ 7๋นํธ๋ง๋ค 1๋ฐ์ดํธ์ฉ ๋์ด๋ฉ๋๋ค. fixed32 ๊ณ์ด์ 4๋ฐ์ดํธ, fixed64 ๊ณ์ด์ 8๋ฐ์ดํธ์ ๋๋ค. JSON ์ ๊ณต๋ฐฑ ์๋ ์ต์ ํํ ๋ฌธ์์ด์ UTF-8 ๊ธธ์ด๋ฅผ ๊ทธ๋๋ก ์ ๋๋ค. 2026๋ 10์ ๊ธฐ์ค Protocol Buffers ์ธ์ฝ๋ฉ ๊ท๊ฒฉ์ ๋ฐ๋์ต๋๋ค.
ํ๊ณ์ ์ฃผ์์ฌํญ
์ค์ฒฉ ๋ฉ์์ง, ๋ฐ๋ณต ํ๋, map ์ ๋ค๋ฃจ์ง ์๊ณ ํํํ ํ๋๋ง ์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ๊ณผ ๊ฐ์ ํ๋๋ฅผ ์๋ตํ๋ proto3 ๋์๋ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ ์ก ์์ถ์ ์ ์ฉํ๋ฉด JSON ์ชฝ์ด ํฌ๊ฒ ์ค์ด ์ฐจ์ด๊ฐ ์ขํ์ง๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
ํ๋ ์ด๋ฆ์ ๋ณด๋ด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. JSON ์ ํค์ ๋ฐ์ดํ, ์ฝ๋ก , ์ผํ๋ฅผ ๋งค๋ฒ ํจ๊ป ์ค์ด ๋ณด๋ด์ง๋ง Protobuf ๋ ํ๋ ๋ฒํธ๋ง 1~2๋ฐ์ดํธ๋ก ์ ์ต๋๋ค. ๊ทธ๋์ ๋ฐ๋ ์ชฝ์ ์คํค๋ง๊ฐ ์์ด์ผ ํ๊ณ , ์คํค๋ง ์์ด ๋ฐ์ดํธ๋ง ๋ณด๋ฉด ํด์ํ ์ ์์ต๋๋ค.
ํ๊ท ๊ฐ์ ๋งํ ์ ์์ต๋๋ค. ์งง์ ์ ์๊ฐ ๋ง์ผ๋ฉด ํฌ๊ฒ ์ค๊ณ , ๊ธด ๋ฌธ์์ด๋ง ๋ด๊ธด ๋ฐ์ดํฐ๋ ๊ฑฐ์ ๊ฐ์์ง๋๋ค. ๋ฌธ์์ด์ ๋ ํ์ ๋ชจ๋ ๋ด์ฉ ์ ์ฒด๋ฅผ ๊ทธ๋๋ก ์ค์ด ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ์ด ๋๊ตฌ๋ ์ด๋ฆผ ์ ๊ฐ๋ฅ ์ ๋ด์ง ์๊ณ ํ๋๋ณ๋ก ๊ณ์ฐํฉ๋๋ค.
sint32 ๋ sint64 ์ ๋๋ค. int32ยทint64 ์ ์์๋ฅผ ๋ฃ์ผ๋ฉด 64๋นํธ๋ก ๋ถํธ๊ฐ ํ์ฅ๋์ด ๊ฐ ํ๋๊ฐ 10๋ฐ์ดํธ๋ฅผ ๋จน์ต๋๋ค. sint ๊ณ์ด์ ์ง๊ทธ์ฌ๊ทธ ๋ถํธํ๋ก ์์ ์์๋ฅผ ์์ ๋ฐ์ดํธ์ ๋ด์ต๋๋ค.