Matrix ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•œ ํ†ต์‹  ์„œ๋ฒ„์ธ Dendrite 0.1.0 ์ถœ์‹œ

๊ฒŒ์‹œ ๋จ ๋งคํŠธ๋ฆญ์Šค ์„œ๋ฒ„ ์ถœ์‹œ ์ˆ˜์ƒ๋Œ๊ธฐ 0.1.0, ์ด๋Š” ๊ฐœ๋ฐœ์ด ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„๋กœ ์ „ํ™˜๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Dendrite๋Š” ๋ถ„์‚ฐํ˜• ํ†ต์‹  ํ”Œ๋žซํผ Matrix ๊ฐœ๋ฐœ์ž์˜ ํ•ต์‹ฌ ํŒ€์— ์˜ํ•ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์œผ๋ฉฐ XNUMX์„ธ๋Œ€ Matrix ์„œ๋ฒ„ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ตฌํ˜„์œผ๋กœ ์ž๋ฆฌ๋งค๊น€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ์„œ๋ฒ„์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์‹œ๋ƒ…์Šค, Python์œผ๋กœ ์ž‘์„ฑ, ์ฝ”๋“œ Dendrite ๊ฐœ๋ฐœ ์ค‘ Go ์–ธ์–ด๋กœ. ๋‘ ๊ณต์‹ ๊ตฌํ˜„ ๋ชจ๋‘ Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ๊ณ„์—์„œ ๋ฃจ๋งˆ Rust ์–ธ์–ด๋กœ ๋œ Matrix ์„œ๋ฒ„ ๋ฒ„์ „์ด ๋ณ„๋„๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ์ž MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

์ƒˆ๋กœ์šด ์„œ๋ฒ„๋Š” ๋†’์€ ํšจ์œจ์„ฑ, ์•ˆ์ •์„ฑ ๋ฐ ํ™•์žฅ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Dendrite๋Š” Synapse๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๊ณ  ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๊ฑธ์ณ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ†ตํ•ด ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Dendrite ์•„ํ‚คํ…์ฒ˜๋Š” ์ˆ˜ํ‰์  ํ™•์žฅ์„ ์ง€์›ํ•˜๋ฉฐ ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž์ฒด ํ…Œ์ด๋ธ”์„ ๊ฐ–๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ˜•ํƒœ์˜ ํ•ธ๋“ค๋Ÿฌ ๋ถ„๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” ํ˜ธ์ถœ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์—์„œ ์ž‘์—…์„ ๋ณ‘๋ ฌํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ ˆ๋“œ(go ๋ฃจํ‹ด)๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด CPU ์ฝ”์–ด๋ฅผ ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค๋กœ ๋‚˜๋ˆ„์ง€ ์•Š๊ณ  ๋ชจ๋“  CPU ์ฝ”์–ด์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Matrix ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•œ ํ†ต์‹  ์„œ๋ฒ„์ธ Dendrite 0.1.0 ์ถœ์‹œ

Dendrite๋Š” ๋ชจ๋†€๋ฆฌ์‹๊ณผ ํด๋ฆฌ๋ฆฌ์Šค์˜ ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋†€๋ฆฌ์‹ ๋ชจ๋“œ์—์„œ๋Š” ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋‹จ์ผ ์‹คํ–‰ ํŒŒ์ผ๋กœ ํŒจํ‚ค์ง€๋˜๊ณ  ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์„œ๋กœ ์ง์ ‘ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์ค‘ ๊ตฌ์„ฑ ์š”์†Œ(ํด๋Ÿฌ์Šคํ„ฐ) ๋ชจ๋“œ์—์„œ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„์‚ฐ๋˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ ๋ณ„๋„๋กœ ์‹œ์ž‘๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ƒํ˜ธ ์ž‘์šฉ
๋‹ค์ค‘ ๊ตฌ์„ฑ ์š”์†Œ ๋ชจ๋“œ๋Š” ๋‚ด๋ถ€ HTTP API ๋ฐ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜ ์นดํ”„์นด.

๊ฐœ๋ฐœ์€ Matrix ํ”„๋กœํ† ์ฝœ ์‚ฌ์–‘์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‘ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ ์ œํ’ˆ๊ตฐ(Synapse์— ๊ณตํ†ต์ ์ธ ํ…Œ์ŠคํŠธ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ์„ธํŠธ ๋ณด์–ด. ํ˜„์žฌ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ Dendrite๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ API ํ…Œ์ŠคํŠธ์˜ 56%, ํŽ˜๋”๋ ˆ์ด์…˜ API ํ…Œ์ŠคํŠธ์˜ 77%๋ฅผ ํ†ต๊ณผํ–ˆ์œผ๋ฉฐ, ์‹ค์ œ ๊ธฐ๋Šฅ ์ ์šฉ ๋ฒ”์œ„๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ API์˜ ๊ฒฝ์šฐ 70%, ํŽ˜๋”๋ ˆ์ด์…˜ API์˜ ๊ฒฝ์šฐ 95%๋กœ ์ถ”์ •๋ฉ๋‹ˆ๋‹ค.

๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„๋Š” Dendrite๊ฐ€ ์ดˆ๊ธฐ ๊ตฌํ˜„ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๊ณ  ์ฃผ๊ธฐ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์Šค๊ฐ€ ํ˜•์„ฑ๋˜์–ด ๊ฐœ๋ฐœ๋กœ ์ „ํ™˜๋จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์„ฑํ‘œ๊ฐ€ ์ด์ œ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค(์ €์žฅ์†Œ์—์„œ ์Šฌ๋ผ์ด์Šค๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ์—…๋ฐ์ดํŠธ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์šฉ์ด ์†์‹ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ๊นจ๋œจ๋ฆฌ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฃผ์š” ๋ฆด๋ฆฌ์Šค์—์„œ๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. Dendrite๋Š” ํ˜„์žฌ PostgreSQL DBMS์™€ ํ•จ๊ป˜ ๋ชจ๋†€๋ฆฌ์‹ ๋ชจ๋“œ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ๊ทœ๋ชจ ํ™ˆ์„œ๋ฒ„์™€ P2P ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋™์‹œ ์ž‘์—… ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•„ SQLite ์‚ฌ์šฉ์€ ์•„์ง ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Dendrite์— ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ์—๋Š” ๋ฉ”์‹œ์ง€ ์ˆ˜์‹  ํ™•์ธ, ์ฝ์Œ ํ‘œ์‹œ, ํ‘ธ์‹œ ์•Œ๋ฆผ, OpenID, ์ด๋ฉ”์ผ ๋ฐ”์ธ๋”ฉ, ์„œ๋ฒ„ ์ธก ๊ฒ€์ƒ‰, ์‚ฌ์šฉ์ž ๋””๋ ‰ํ„ฐ๋ฆฌ, ์‚ฌ์šฉ์ž ๋ฌด์‹œ ๋ชฉ๋ก, ๊ทธ๋ฃน ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ƒ์„ฑ, ์‚ฌ์šฉ์ž ์˜จ๋ผ์ธ ์ƒํƒœ ํ‰๊ฐ€, ๊ฒŒ์ŠคํŠธ ์ž…๋ ฅ ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํƒ€์‚ฌ ๋„คํŠธ์›Œํฌ์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ.

์ฑ„ํŒ…๋ฐฉ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ(์ƒ์„ฑ, ์ดˆ๋Œ€, ์ธ์ฆ ๊ทœ์น™), ๋ฐฉ ๋‚ด ์ฐธ๊ฐ€์ž ์—ฐํ•ฉ ์ˆ˜๋‹จ, ์˜คํ”„๋ผ์ธ์—์„œ ๋Œ์•„์˜จ ํ›„ ์ด๋ฒคํŠธ ๋™๊ธฐํ™”, ๊ณ„์ •, ํ”„๋กœํ•„, ์ „ํ™” ๊ฑธ๊ธฐ ํ‘œ์‹œ, ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์—…๋กœ๋“œ(Media API), ๋ฉ”์‹œ์ง€, ACL, ํƒœ๊ทธ ๋ฐ”์ธ๋”ฉ์„ ํŽธ์ง‘ํ•˜๊ณ  ์—”๋“œํˆฌ์—”๋“œ ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•œ ์žฅ์น˜ ๋ฐ ํ‚ค ๋ชฉ๋ก ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„์‚ฐํ˜• ํ†ต์‹ ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์ธ Matrix๋Š” WebSocket ๋˜๋Š” ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ „์†ก ์ˆ˜๋‹จ์œผ๋กœ HTTPS+JSON์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์„ ์ƒ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. CoAP+๋…ธ์ด์ฆˆ. ์‹œ์Šคํ…œ์€ ์„œ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๊ณตํ†ต ๋ถ„์‚ฐ ๋„คํŠธ์›Œํฌ๋กœ ํ†ตํ•ฉ๋œ ์„œ๋ฒ„ ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” ๋ฉ”์‹œ์ง• ์ฐธ๊ฐ€์ž๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์„œ๋ฒ„์— ๋ณต์ œ๋ฉ๋‹ˆ๋‹ค. Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฐ„์— ์ปค๋ฐ‹์ด ์ „ํŒŒ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ์„œ๋ฒ„ ์ „์ฒด์— ์ „ํŒŒ๋ฉ๋‹ˆ๋‹ค. ์ผ์‹œ์ ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๋Š” ์†์‹ค๋˜์ง€ ์•Š์œผ๋ฉฐ, ์„œ๋ฒ„๊ฐ€ ์žฌ๊ฐœ๋œ ํ›„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ, ์ „ํ™”๋ฒˆํ˜ธ, ํŽ˜์ด์Šค๋ถ ๊ณ„์ • ๋“ฑ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž ID ์˜ต์…˜์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์ „์ฒด์— ๋‹จ์ผ ์žฅ์•  ์ง€์ ์ด๋‚˜ ๋ฉ”์‹œ์ง€ ์ œ์–ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋…ผ์˜์—์„œ ๋‹ค๋ฃจ๋Š” ๋ชจ๋“  ์„œ๋ฒ„๋Š” ์„œ๋กœ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ด๋ฅผ ๊ณตํ†ต ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ๊ฒŒ์ดํŠธ์›จ์ด ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์‹œ์Šคํ…œ๊ณผ Matrix์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•ด ์ค€๋น„๋œ IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp ๋ฐ Slack์— ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ธ์Šคํ„ดํŠธ ๋ฌธ์ž ๋ฉ”์‹œ์ง€ ๋ฐ ์ฑ„ํŒ… ์™ธ์—๋„ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ์ „์†ก, ์•Œ๋ฆผ ์ „์†ก,
์›๊ฒฉ ํšŒ์˜ ๊ตฌ์„ฑ, ์Œ์„ฑ ๋ฐ ์˜์ƒ ํ†ตํ™”. ๋˜ํ•œ ์ž…๋ ฅ ์•Œ๋ฆผ, ์‚ฌ์šฉ์ž ์˜จ๋ผ์ธ ์กด์žฌ ํ‰๊ฐ€, ์ฝ๊ธฐ ํ™•์ธ, ํ‘ธ์‹œ ์•Œ๋ฆผ, ์„œ๋ฒ„ ์ธก ๊ฒ€์ƒ‰, ๊ธฐ๋ก ๋ฐ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ ๋™๊ธฐํ™”์™€ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€