protoc

protobuf๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ , ์ด๋ฅผ ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ์œ ์—ฐํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ  ํŒŒ์‹ฑํ•˜๋„๋ก ์ง€์›ํ•˜๋Š” ์ž๋™ํ™” ์†”๋ฃจ์…˜์ด๋‹ค. json์ด๋‚˜ xml์„ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์šด๋ฐ, ์‚ฌ์‹ค ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. protobuf๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ .proto๋ผ๋Š” ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•˜๋ฉด, ์ด๋ฅผ ์ปดํŒŒ์ผ ํ•ด์„œ C++/C#/Python ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์–ธ์–ด ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋˜ํ•œ ๋ณ€ํ™˜๋œ ์–ธ์–ด ํ˜•ํƒœ๋กœ ๋ชจ๋“ˆ๊นŒ์ง€ ์ƒ์„ฑ๋˜์–ด, ํ•ด๋‹น ์–ธ์–ด๋กœ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ „์†กํ•˜๊ณ  ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

C์–ธ์–ด๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด ๊ตฌ์กฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ ์†Œ์ผ“์„ ํ†ตํ•ด ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ Serialize(์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜)ํ•˜๊ณ , ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์€ ํ›„ Deserialize(ํŒŒ์‹ฑํ•ด์„œ ๋‹ค์‹œ ๊ตฌ์กฐ์ฒด์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ) ํ•˜๋˜ ๊ณผ์ •์ด ์žˆ๋‹ค๋ฉด, ์ด๋ฅผ ์ง์ ‘ ์ฝ”๋“œ๋กœ ๋‹ค ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ProtoBuf๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋งŒ ์ •์˜ํ•˜๋ฉด ์ด ๊ณผ์ •์€ ์ „๋ถ€ ์ง€์›ํ•ด์ค€๋‹ค.

Reference