Community

๐Ÿ’ก JSON ๋ณด๋‹ค ๋” ๋น ๋ฅธ ๋Œ€์•ˆ๋“ค

JSON ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๋Š” ํฌ๋งท์ค‘ ํ•˜๋‚˜๋กœ ์›น ์„œ๋น„์Šค์—์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์— ํ†ต์‹ ์‹œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์‹ ์ž…์ผ๋•Œ๊นŒ์ง€๋งŒ ํ•ด๋„ XML ์ด๋‚˜ Plain Text ํ˜•์‹์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” API ๋“ค๋„ ์—ฌ๋Ÿฟ ์žˆ์—ˆ์ง€๋งŒ, ์‹œ๊ฐ„์ด ํ˜๋Ÿฌ ์ด๋Ÿฌํ•œ API ๋“ค์€ deprecated ๋˜์—ˆ๊ณ  ํ˜„์žฌ ์„œ๋น„์Šค ๋˜๊ณ  ์žˆ๋Š” OPEN API ๋“ค์˜ ๋ฌธ์„œ๋ฅผ ๋ด๋„ JSON ์œผ๋กœ ํ†ต์‹ ํ•˜์ง€ ์•Š๋Š” API ๋Š” ์ฐพ์•„๋ณด๊ธฐ๊ฐ€ ํž˜๋“ญ๋‹ˆ๋‹ค. JSON ์ด ์ด๋ ‡๊ฒŒ ์ธ๊ธฐ๊ฐ€ ๋งŽ์•„์ง„ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹ ๐Ÿ“Œ ์–ธ์–ด์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š์Œ ๐Ÿ“Œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ผ๊ด€์„ฑ ๐Ÿ“Œ ๋ธŒ๋ผ์šฐ์ € ์ง€์› ๐Ÿ“Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ JSON API ์ง€์› ๊ทธ๋ ‡์ง€๋งŒ ์ด๋Ÿฌํ•œ JSON ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ๊ด‘๋ฒ”์œ„ํ•˜๊ฑฐ๋‚˜ ์ค‘์ฒฉ์ด ๊นŠ์€ ๋ฐ์ดํ„ฐ์ผ ๊ฒฝ์šฐ Parsing ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ“Œ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ ์‹œ ๋ฐ˜๋“œ์‹œ ํ•ด์•ผํ•˜๋Š” ์ง๋ ฌํ™” ๋ฐ ์—ญ์ง๋ ฌํ™” ๊ณผ์ •์ด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ“Œ JSON ์€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Š” ์ด์ง„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋น„ํ•ด ๋А๋ฆด ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค ๐Ÿ“Œ JSON ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ์ดํ„ฐ Type ์ด ์ œํ•œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ์žฅ์น˜๋‚˜ ํ‘œํ˜„์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜์–ด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ“Œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ง€์›์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ‘œํ˜„ํ•  ๊ฒฝ์šฐ ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ, ๋””์ฝ”๋”ฉ์„ ํ•˜๊ฒŒ ๋˜์–ด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์ด๋Ÿฌํ•œ JSON ์˜ ๋‹จ์ ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ Protocol Buffers Protobuf ๋ผ๊ณ ๋„ ์•Œ๋ ค์ง„ ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋Š” Google ์—์„œ ๊ฐœ๋ฐœํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ง๋ ฌํ™” ํ˜•์‹์ž…๋‹ˆ๋‹ค. JSON ์— ๋น„ํ•ด ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉ์ด ๋” ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅธ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” Schema Evolution ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ MessagePack MessagePack ์€ ํšจ์œจ์„ฑ๊ณผ ์†๋„๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋˜ ๋‹ค๋ฅธ ์ด์ง„ ์ง๋ ฌํ™” ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ์ปดํŒฉํŠธํ•œ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ „์†ก ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , Protocol Buffers ์™€ ๋™์ผํ•˜๊ฒŒ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŠน์„ฑ์œผ๋กœ ๋น ๋ฅธ ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ BSON MongoDB ์—์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์œผ๋กœ ์œ ๋ช…ํ•œ BSON ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์ถ”๊ฐ€๋œ JSON๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜์—ฌ ํšจ์œจ์„ฑ๊ณผ ๊ฐ€๋…์„ฑ ๊ฐ„์˜ ๊ท ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฏธ์ง€๋‚˜ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ Avro Avro๋Š” Apache Hadoop ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๊ฐœ๋ฐœ๋œ ๋ฐ์ดํ„ฐ ์ง๋ ฌํ™” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์Šคํ‚ค๋งˆ ํ˜ธํ™˜์„ฑ๊ณผ ์„ฑ๋Šฅ์— ๊ฐ•์ ์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒฉํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ธ์ฝ”๋”ฉ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๊ณ„์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ๋“œ๋ฆฐ ์›๋ฌธ์— ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ JSON ์„ ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ํŒ๋“ค์ด ์ •๋ฆฌ๋˜์–ด์žˆ์œผ๋‹ˆ ๊ด€์‹ฌ์žˆ์œผ์‹  ๋ถ„๋“ค์€ ์›๋ฌธ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ๐Ÿ“š ์›๋ฌธ https://dev.to/nikl/json-is-slower-here-are-its-4-faster-alternatives-2g30?utm_source=oneoneone

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค