๋ธ”๋กœ๊ทธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๊ธฐ์ˆ ์ 13๋ถ„ ์ฝ๊ธฐ

์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”: ์ดˆ๋‹น 100๋งŒ ์ด๋ฒคํŠธ๋กœ๋ถ€ํ„ฐ ์–ป์€ ๊ตํ›ˆ

์ฐจํŠธ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ฒ˜๋ฆฌ ์†๋„๋ณด๋‹ค ๋” ๋นจ๋ฆฌ ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•  ๋•Œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ? ๋Œ€๊ทœ๋ชจ ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์œผ๋กœ๋ถ€ํ„ฐ ์–ป์€ ๊ตํ›ˆ.

ํ”„๋ฆฌ์•ผ ์ƒค๋ฅด๋งˆ, ์‹œ๋‹ˆ์–ด ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด

ํ”„๋ฆฌ์•ผ ์ƒค๋ฅด๋งˆ

์‹œ๋‹ˆ์–ด ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด

Share:
๋ผ์ด๋ธŒ ์—…๋ฐ์ดํŠธ, ์„ฑ๋Šฅ ์ง€ํ‘œ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฉ”ํŠธ๋ฆญ์˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋Œ€์‹œ๋ณด๋“œ, ๊ณ ๋นˆ๋„ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ ChartGen์˜ ์ „๋ฌธ์ ์ธ ํŒŒ๋ž€์ƒ‰ ํŒ”๋ ˆํŠธ
์ˆ˜๋ฐฑ๋งŒ ์ด๋ฒคํŠธ๊นŒ์ง€ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ณ ์„ฑ๋Šฅ ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ•

์ž‘๋…„์—, ์ €๋Š” ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ• ํ”„๋กœ์ ํŠธ๋ฅผ ์ฃผ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ: ์‚ฌ์šฉ์ž ํ™”๋ฉด์— 100๋ฐ€๋ฆฌ์ดˆ ๋ฏธ๋งŒ์˜ ์ง€์—ฐ ์‹œ๊ฐ„์œผ๋กœ ์ดˆ๋‹น 100๋งŒ ์ด๋ฒคํŠธ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์‹œ์žฅ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๋ชจ๋“  ๊ฒƒ์„ ๊นจ๋œจ๋ ธ์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„์˜ ํ˜„์‹ค

์•„๋ฌด๋„ ๋งํ•ด์ฃผ์ง€ ์•Š๋Š” ์‚ฌ์‹ค: "์‹ค์‹œ๊ฐ„"์€ ๋ณดํ†ต ์‹ค์‹œ๊ฐ„์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ข…์ข… ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

"์‹ค์‹œ๊ฐ„"์œผ๋กœ ํ‘œ์‹œ๋œ ๋Œ€๋ถ€๋ถ„์˜ ๋Œ€์‹œ๋ณด๋“œ๋Š” ์‹ค์ œ๋กœ 5-30์ดˆ๋งˆ๋‹ค ์ƒˆ๋กœ๊ณ ์นจ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ์ด๊ฒƒ์ด ์™„๋ฒฝํžˆ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ 1์ดˆ ๋ฏธ๋งŒ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” ๊ทœ์น™์ด ์™„์ „ํžˆ ๋ฐ”๋€๋‹ˆ๋‹ค.

"์‹ค์‹œ๊ฐ„"์˜ ์„ธ ๊ฐ€์ง€ ๊ณ„์ธต

๊ณ„์ธต 1: ์ค€์‹ค์‹œ๊ฐ„ (5-60์ดˆ ์ƒˆ๋กœ๊ณ ์นจ)

์‚ฌ์šฉ ์‚ฌ๋ก€: ๋น„์ฆˆ๋‹ˆ์Šค ๋Œ€์‹œ๋ณด๋“œ, ๋งˆ์ผ€ํŒ… ๋ถ„์„, ์˜์—… ์ง€ํ‘œ

์•„ํ‚คํ…์ฒ˜: API ์—”๋“œํฌ์ธํŠธ ํด๋ง, ๋ฐฐ์น˜ ์ง‘๊ณ„

๋ณต์žก์„ฑ: ์ค‘๊ฐ„

์ด๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํŒ€์ด ๋งค๋ถ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๊ณ , ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

๊ณ„์ธต 2: ์‹ค์‹œ๊ฐ„ (1-5์ดˆ ์ƒˆ๋กœ๊ณ ์นจ)

์‚ฌ์šฉ ์‚ฌ๋ก€: ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ผ์ด๋ธŒ ์ด๋ฒคํŠธ ์ถ”์ , ๊ณ ๊ฐ ์ง€์› ๋Œ€๊ธฐ์—ด

์•„ํ‚คํ…์ฒ˜: WebSockets, ์„œ๋ฒ„ ์ „์†ก ์ด๋ฒคํŠธ, ์ŠคํŠธ๋ฆฌ๋ฐ ์ฟผ๋ฆฌ

๋ณต์žก์„ฑ: ๋†’์Œ

ํด๋ง์—์„œ ํ‘ธ์‹œ๋กœ์˜ ์ „ํ™˜์€ ๋ชจ๋“  ๊ฒƒ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด์ œ ์ง€์†์ ์ธ ์—ฐ๊ฒฐ ์œ ์ง€, ์žฌ์—ฐ๊ฒฐ ๋กœ์ง ์ฒ˜๋ฆฌ, ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๊ฐ„ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ณ„์ธต 3: 1์ดˆ ๋ฏธ๋งŒ (1์ดˆ ๋ฏธ๋งŒ)

์‚ฌ์šฉ ์‚ฌ๋ก€: ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ, ๋ผ์ด๋ธŒ ๊ฒŒ์ž„ ํ†ต๊ณ„, ์‚ฐ์—… ๋ชจ๋‹ˆํ„ฐ๋ง

์•„ํ‚คํ…์ฒ˜: ์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ, ํŠน์ˆ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ตœ์ ํ™”๋œ ๋ Œ๋”๋ง

๋ณต์žก์„ฑ: ๋งค์šฐ ๋†’์Œ

์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ 8๊ฐœ์›” ๋™์•ˆ ๋จธ๋ฌผ๋ €๋˜ ๊ณณ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์ตœ์ ํ™”๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ์‹œ๊ฐํ™”๊ฐ€ ์–ด๋ ค์šด ์ด์œ 

๋ฌธ์ œ 1: ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ

์ดˆ๋‹น 100๋งŒ ์ด๋ฒคํŠธ์—์„œ, ๊ฐ ์ด๋ฒคํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์ดˆ ๋ฐฑ๋งŒ ๊ฐœ์˜ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํญ๋ฐœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: ์‚ฌ์ „ ์ง‘๊ณ„. ์›์‹œ ์ด๋ฒคํŠธ๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ๋กœ ๋ณด๋‚ด์ง€ ๋งˆ์„ธ์š”. ์†Œ์Šค์—์„œ ์ง‘๊ณ„ํ•˜์„ธ์š” โ€” ์‹œ๊ฐ„ ๋ฒ„ํ‚ท๋‹น ํ‰๊ท , ๊ฐœ์ˆ˜, ๋ฐฑ๋ถ„์œ„์ˆ˜. ์šฐ๋ฆฌ๋Š” ๋ฐฑ๋งŒ ๊ฐœ์˜ ์›์‹œ ์ด๋ฒคํŠธ ๋Œ€์‹  ์ดˆ๋‹น 10๊ฐœ์˜ ์ง‘๊ณ„ ์—…๋ฐ์ดํŠธ๋ฅผ ์ „์†กํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ 2: ๋ Œ๋”๋ง ์„ฑ๋Šฅ

์ดˆ๋‹น 10๊ฐœ์˜ ์—…๋ฐ์ดํŠธ๋ผ๋„, ์ „์ฒด ์ฐจํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ฃฝ์Šต๋‹ˆ๋‹ค. React์˜ ์กฐ์ •, SVG ์กฐ์ž‘, ์บ”๋ฒ„์Šค ๋‹ค์‹œ ๊ทธ๋ฆฌ๊ธฐ โ€” ๋ชจ๋‘ ํ•ฉ์‚ฐ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ. ์ฐจํŠธ๋ฅผ ๋‹ค์‹œ ๊ตฌ์ถ•ํ•˜์ง€ ๋ง๊ณ  ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ๋†’์€ ๋นˆ๋„์˜ ์ฐจํŠธ์— WebGL ๊ธฐ๋ฐ˜ ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์ด๋Š” 60fps ์—…๋ฐ์ดํŠธ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ 3: ์ธ๊ฐ„์˜ ์ง€๊ฐ

์ง๊ด€์— ๋ฐ˜ํ•˜๋Š” ๋ฐœ๊ฒฌ์ž…๋‹ˆ๋‹ค: ์•ฝ 200๋ฐ€๋ฆฌ์ดˆ๋ณด๋‹ค ๋น ๋ฅธ ์—…๋ฐ์ดํŠธ๋Š” ํ๋ฆฟํ•ด์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ดˆ๋‹น 10ํ”„๋ ˆ์ž„ ์ด์ƒ์œผ๋กœ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ์ € ๊นœ๋นก์ž„์„ ๋ณผ ๋ฟ์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: ์‹œ๊ฐ์  ๋ถ€๋“œ๋Ÿฌ์›€. ๋ฐ์ดํ„ฐ๊ฐ€ 10Hz๋กœ ์—…๋ฐ์ดํŠธ๋  ๋•Œ์กฐ์ฐจ๋„, ์šฐ๋ฆฌ๋Š” 200๋ฐ€๋ฆฌ์ดˆ์— ๊ฑธ์ณ ์ „ํ™˜์„ ์• ๋‹ˆ๋ฉ”์ด์…˜ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐจํŠธ๋Š” ํ˜ผ๋ž€์Šค๋Ÿฝ์ง€ ์•Š์œผ๋ฉด์„œ "๋ผ์ด๋ธŒ" ๋А๋‚Œ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ 4: ๋„คํŠธ์›Œํฌ ๋ณ€๋™์„ฑ

WebSocket ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง‘๋‹ˆ๋‹ค. ํŒจํ‚ท์ด ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์ž๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: ๊ฐ•๋ ฅํ•œ ์žฌ์—ฐ๊ฒฐ, ๋ฉ”์‹œ์ง€ ํ์ž‰, ์šฐ์•„ํ•œ ์„ฑ๋Šฅ ์ €ํ•˜. ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ ์•Œ๋ ค์ง„ ์ƒํƒœ๋ฅผ "์žฌ์—ฐ๊ฒฐ ์ค‘" ํ‘œ์‹œ์™€ ํ•จ๊ป˜ ๋ณด์—ฌ์ฃผ์„ธ์š” โ€” ๋นˆ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ์ง€ ๋งˆ์„ธ์š”.

ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•œ ์•„ํ‚คํ…์ฒ˜

๋‹ค์Œ์€ ์šฐ๋ฆฌ์˜ ์ดˆ๋‹น ๋ฐฑ๋งŒ ์ด๋ฒคํŠธ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•œ ์Šคํƒ์ž…๋‹ˆ๋‹ค:

๋ฐ์ดํ„ฐ ๊ณ„์ธต

  • ์ด๋ฒคํŠธ ์ˆ˜์ง‘์„ ์œ„ํ•œ Apache Kafka
  • ์‹ค์‹œ๊ฐ„ ์ง‘๊ณ„๋ฅผ ์œ„ํ•œ Apache Flink
  • ์ตœ์‹  ์ƒํƒœ ์บ์‹ฑ์„ ์œ„ํ•œ Redis
  • ํžˆ์Šคํ† ๋ฆฌ ์ฟผ๋ฆฌ๋ฅผ ์œ„ํ•œ TimescaleDB

API ๊ณ„์ธต

  • WebSocket ์„œ๋ฒ„์šฉ Go (๋™์‹œ ์—ฐ๊ฒฐ ํšจ์œจ์  ์ฒ˜๋ฆฌ)
  • ๋‚ด๋ถ€ ์„œ๋น„์Šค ํ†ต์‹ ์šฉ gRPC
  • ๋ฉ”์‹œ์ง€ ์ผ๊ด„ ์ฒ˜๋ฆฌ (๋ชจ๋“  ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹Œ 100๋ฐ€๋ฆฌ์ดˆ๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ ์ „์†ก)

ํ”„๋ก ํŠธ์—”๋“œ

  • UI ๊ตฌ์กฐ์šฉ React
  • ๊ณ ๋นˆ๋„ ์ฐจํŠธ์šฉ WebGL (regl ํ†ตํ•ด)
  • ์ค‘๊ฐ„ ๋นˆ๋„ ์ฐจํŠธ์šฉ ๊ฒฝ๋Ÿ‰ ์บ”๋ฒ„์Šค
  • ๋‚ฎ์€ ๋นˆ๋„, ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์€ ์ฐจํŠธ์šฉ SVG (D3 ํ†ตํ•ด)

ํ•ต์‹ฌ ๊ฒฐ์ • ์‚ฌํ•ญ

  1. ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ง‘๊ณ„: ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์›์‹œ ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹Œ ํ‘œ์‹œ ์ค€๋น„๊ฐ€ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  1. ์—…๋ฐ์ดํŠธ ๋นˆ๋„ ๋ถ„๋ฆฌ: ๋ชจ๋“  ์š”์†Œ๊ฐ€ 10fps๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ •์  ์ปจํ…์ŠคํŠธ๋Š” 30์ดˆ๋งˆ๋‹ค ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์‚ฌ์šฉ์ž ์ œ์–ด ์ƒ์„ธ ์ˆ˜์ค€: ์‚ฌ์šฉ์ž๊ฐ€ "๊ฐœ์š”" (๋А๋ฆฐ ์—…๋ฐ์ดํŠธ, ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ)์™€ "์„ธ๋ถ€" (๋น ๋ฅธ ์—…๋ฐ์ดํŠธ, ์ง‘์ค‘๋œ ๋ณด๊ธฐ) ์‚ฌ์ด์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์„ธ์š”.

์„ฑ๋Šฅ ์ตœ์ ํ™”

์„œ๋ฒ„์—์„œ

  • ์‹œ๊ฐ„ ๋ฒ„ํ‚ท ์‚ฌ์ „ ๊ณ„์‚ฐ: ํด๋ผ์ด์–ธํŠธ๊ฐ€ "์ง€๋‚œ 5๋ถ„"์„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ
  • ๋ธํƒ€ ์ธ์ฝ”๋”ฉ: ์ „์ฒด ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์ „์†ก
  • ์••์ถ•: WebSocket ๋ฉ”์‹œ์ง€ gzip ์••์ถ• (๋†€๋ž๋„๋ก ํšจ๊ณผ์ )
  • ์—ฐ๊ฒฐ ํ’€๋ง: ๊ตฌ๋… ๊ฐ„ ์—ฐ๊ฒฐ ์žฌ์‚ฌ์šฉ

ํด๋ผ์ด์–ธํŠธ์—์„œ

  • ๊ฐ์ฒด ํ’€๋ง: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๋Œ€์‹  ์ฐจํŠธ ์š”์†Œ ์žฌ์‚ฌ์šฉ
  • RequestAnimationFrame ์ผ๊ด„ ์ฒ˜๋ฆฌ: ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์ฃผ๊ธฐ์™€ ์—…๋ฐ์ดํŠธ ๋™๊ธฐํ™”
  • ์บ”๋ฒ„์Šค ๋ ˆ์ด์–ด๋ง: ์ •์  ์š”์†Œ๋Š” ํ•˜๋‚˜์˜ ์บ”๋ฒ„์Šค, ๋™์  ์š”์†Œ๋Š” ๋‹ค๋ฅธ ์บ”๋ฒ„์Šค
  • Web Workers: ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์‹ฑ

ํšจ๊ณผ๊ฐ€ ์—†์—ˆ๋˜ ๊ฒƒ

  • ๊ณ ๋นˆ๋„ ์—…๋ฐ์ดํŠธ์šฉ SVG (DOM ์กฐ์ž‘์ด ๋„ˆ๋ฌด ๋А๋ฆผ)
  • ์‹ค์‹œ๊ฐ„ ์ƒํƒœ์šฉ Redux (๋นˆ๋ฒˆํ•œ ์—…๋ฐ์ดํŠธ์— ์ง€๋‚˜์น˜๊ฒŒ ์˜ค๋ฒ„ํ—ค๋“œ)
  • 5fps ์ด์ƒ์„ ์œ„ํ•œ ๊ธฐ์„ฑ ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์ด ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ตœ์ ํ™”๋˜์ง€ ์•Š์Œ)

์‹ค์‹œ๊ฐ„์—์„œ ์–ป์€ UX ๊ตํ›ˆ

๊ตํ›ˆ 1: ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ์–ด๊ถŒ ์ฃผ๊ธฐ

๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋ผ์ด๋ธŒ ์—…๋ฐ์ดํŠธ๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” ์‚ฐ๋งŒํ•˜๊ฒŒ ๋А๋‚๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค:

  • ์ผ์‹œ์ •์ง€ ๋ฒ„ํŠผ: ํ˜„์žฌ ๋ณด๊ธฐ "๊ณ ์ •"
  • ์—…๋ฐ์ดํŠธ ๋นˆ๋„ ์„ ํƒ๊ธฐ: 1์ดˆ, 5์ดˆ, 30์ดˆ
  • ํžˆ์Šคํ† ๋ฆฌ ๋ชจ๋“œ: "5๋ถ„ ์ „์— ์ผ์–ด๋‚œ ์ผ ๋ณด์—ฌ์ฃผ์„ธ์š”"

๊ตํ›ˆ 2: ์ƒํƒœ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ

์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ์ด๊ฒƒ์ด ๋ผ์ด๋ธŒ์ธ๊ฐ€ ์—ญ์‚ฌ์ ์ธ๊ฐ€?
  • ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ๋Š” ์–ธ์ œ์˜€๋‚˜?
  • ์—ฐ๊ฒฐ ์ƒํƒœ๊ฐ€ ๊ฑด๊ฐ•ํ•œ๊ฐ€?

์šฐ๋ฆฌ๋Š” ๊ฐ ์—…๋ฐ์ดํŠธ๋งˆ๋‹ค ๋งฅ๋ฐ•์„ ๋›ฐ๋Š” ์ง€์†์ ์ธ "ํ•˜ํŠธ๋น„ํŠธ" ํ‘œ์‹œ๊ธฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ ์•ˆ์‹ฌ์‹œ์ผœ ์ค๋‹ˆ๋‹ค.

๊ตํ›ˆ 3: ์ง€๋ฃจํ•œ ์ƒํƒœ ์ฒ˜๋ฆฌํ•˜๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์—๋Š” ํฅ๋ฏธ๋กœ์šด ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฐจํŠธ๋Š” ๊ทธ์ €... ๋น„์Šทํ•œ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์„์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค: "14:32์— ๊ธ‰์ฆ ๊ฐ์ง€๋จ"์€ ์˜๋ฏธ ์žˆ๋Š” ๋ณ€ํ™”์— ์ฃผ์˜๋ฅผ ๋•๋‹ˆ๋‹ค. ์ด๊ฒƒ ์—†์ด๋Š” ์‚ฌ์šฉ์ž๋“ค์€ ์žก์Œ์„ ์‘์‹œํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ตํ›ˆ 4: ๋ชจ๋ฐ”์ผ์€ ๋‹ค๋ฅด๋‹ค

๋” ์ž‘์€ ํ™”๋ฉด, ๋” ๋‚˜์œ ์—ฐ๊ฒฐ, ๋ฐฐํ„ฐ๋ฆฌ ์ œ์•ฝ. ๋ชจ๋ฐ”์ผ์šฉ:

  • ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋นˆ๋„ ์ค„์ด๊ธฐ
  • ์‹œ๊ฐํ™” ๋‹จ์ˆœํ™”
  • ์ ๊ทน์ ์ธ ์žฌ์—ฐ๊ฒฐ ๋กœ์ง ์ถ”๊ฐ€

์‹ค์‹œ๊ฐ„์ด ๊ฐ€์น˜ ์—†์„ ๋•Œ

์ด ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•œ ํ›„, ์ €๋Š” ์‹ค์‹œ๊ฐ„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋” ํšŒ์˜์ ์ž…๋‹ˆ๋‹ค. ๋ฌผ์–ด๋ณด์„ธ์š”:

  • ๋” ๋น ๋ฅธ ์—…๋ฐ์ดํŠธ๊ฐ€ ์‚ฌ์šฉ์ž ํ–‰๋™์„ ๋ฐ”๊ฟ€ ๊ฒƒ์ธ๊ฐ€?
  • ์‚ฌ์šฉ์ž๋“ค์ด ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅธ ์ •๋ณด์— ๋”ฐ๋ผ ํ–‰๋™ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ์—”์ง€๋‹ˆ์–ด๋ง ๋น„์šฉ์ด ์ •๋‹นํ™”๋˜๋Š”๊ฐ€?

๋Œ€๋ถ€๋ถ„์˜ ๋Œ€์‹œ๋ณด๋“œ์— ๋Œ€ํ•œ ๋‹ต์€ ์•„๋‹ˆ์˜ค์ž…๋‹ˆ๋‹ค. 15์ดˆ ์ƒˆ๋กœ๊ณ ์นจ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ฐ€ ์‹ค์ œ๋กœ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์— ์‹ค์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋„๊ตฌ์™€ ๋ฆฌ์†Œ์Šค

๊ณ„์ธต 1-2 (์ค€์‹ค์‹œ๊ฐ„ ๋ฐ ์‹ค์‹œ๊ฐ„)์šฉ:

ChartGen๊ณผ ๊ฐ™์€ ํ˜„๋Œ€์  ๋„๊ตฌ๋Š” API๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํด๋งํ•˜๋Š” ์ฐจํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. WebSocket ์—”๋“œํฌ์ธํŠธ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ๋งž์ถคํ˜• ์ธํ”„๋ผ ์—†์ด๋„ ๊ฒฌ๊ณ ํ•œ ์‹ค์‹œ๊ฐ„ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ„์ธต 3 (1์ดˆ ๋ฏธ๋งŒ)์šฉ:

ํŠน์ˆ˜ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค: ์บ”๋ฒ„์Šค์™€ D3, ๋งž์ถคํ˜• WebGL ๋ Œ๋”๋ง, ๋˜๋Š” uPlot์ด๋‚˜ ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ ๋ชจ๋“œ์˜ Apache ECharts์™€ ๊ฐ™์€ ๋ชฉ์ ์— ๋งž๊ฒŒ ๊ตฌ์ถ•๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

์ŠคํŠธ๋ฆฌ๋ฐ ์ธํ”„๋ผ์šฉ:

  • Apache Kafka + Flink (๋ณต์žกํ•˜์ง€๋งŒ ๊ฐ•๋ ฅํ•จ)
  • AWS Kinesis + Lambda (๊ด€๋ฆฌํ˜•์ด์ง€๋งŒ ์ œํ•œ์ )
  • Redis Streams + ๋งž์ถคํ˜• ์ง‘๊ณ„ (๋” ๊ฐ„๋‹จํ•˜์ง€๋งŒ ํ™•์žฅ์„ฑ ๋‚ฎ์Œ)

์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง

์šฐ๋ฆฌ๊ฐ€ ์ธก์ •ํ•œ ๊ฒƒ:

  • ์ข…๋‹จ ๊ฐ„ ์ง€์—ฐ ์‹œ๊ฐ„ (์ด๋ฒคํŠธ ํƒ€์ž„์Šคํƒฌํ”„์—์„œ ํ™”๋ฉด ํ”ฝ์…€๊นŒ์ง€)
  • ์—ฐ๊ฒฐ ์ƒํƒœ (์‹œ๊ฐ„๋‹น ์žฌ์—ฐ๊ฒฐ ํšŸ์ˆ˜)
  • ๋ Œ๋”๋ง ์„ฑ๋Šฅ (์ดˆ๋‹น ํ”„๋ ˆ์ž„ ์ˆ˜)
  • ์‚ฌ์šฉ์ž ์ฐธ์—ฌ (์‚ฌ๋žŒ๋“ค์ด ์‹ค์ œ๋กœ ์‹ค์‹œ๊ฐ„ ๋ณด๊ธฐ๋ฅผ ๋ณด๋Š”๊ฐ€?)

๋†€๋ผ์šด ๋ฐœ๊ฒฌ: ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์—ด๊ณ , 2๋ถ„ ๋™์•ˆ ๋ณด๊ณ , ๋ฐฐ๊ฒฝ ํƒญ์— ๊ทธ๋Œ€๋กœ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. "๋ผ์ด๋ธŒ" ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ณด์ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ์ƒ๊ฐ

์‹ค์‹œ๊ฐ„ ์‹œ๊ฐํ™”๋Š” ์—”์ง€๋‹ˆ์–ด๋ง ๋„์ „์ด์ง€๋งŒ, ๋˜ํ•œ UX ๋„์ „์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ถ€๋ถ„์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค โ€” ๊ทธ๊ฒƒ์„ ์ธ๊ฐ„์ด ์‹ค์ œ๋กœ ์ดํ•ดํ•˜๊ณ  ํ–‰๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์ „์— ๋ฌผ์–ด๋ณด์„ธ์š”: ๋” ๋น ๋ฅธ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ์ž๋“ค์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ๋‹ค๋ฅด๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€?

๋‹ต๋ณ€์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ์•„๋งˆ๋„ ์‹ค์‹œ๊ฐ„์ด ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„์„ฑ๋Šฅ์—”์ง€๋‹ˆ์–ด๋ง๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”ํ™•์žฅ์„ฑ
๊ฐ€์ด๋“œ

๋ผ์ธ ์ฐจํŠธ ์ƒ๊ฐ€ ์ •์งํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์˜คํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์„  ๊ทธ๋ž˜ํ”„๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋ณด๊ณ ์„œ์—์„œ ๊ฐ€์žฅ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ฐจํŠธ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ€์žฅ ์กฐ์ž‘ํ•˜๊ธฐ ์‰ฌ์šด ๊ฒƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋‚˜์œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ, ํ˜•์‹ ์ง€์ • ์˜ต์…˜์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ํŽธ์ง‘ ํŽธํ–ฅ์œผ๋กœ ๊ธฐ๋Šฅํ•˜๋Š” ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ฒฐ์ •์„ ํ†ตํ•ด์„œ์ž…๋‹ˆ๋‹ค.

๊ฐ€์ด๋“œ

๋ฌด๋ฃŒ ๋ง‰๋Œ€ ์ฐจํŠธ ์ƒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์•…ํ•œ ๋ณด๊ณ  ๊ทธ๋ฆฌ๋“œ์— ์ž‘๋ณ„ ์ธ์‚ฌ๋ฅผ ํ•˜์„ธ์š”

Turn spreadsheet columns into professional bar charts in seconds with a free bar chart generator โ€” no manual formatting required.

๊ฐ€์ด๋“œ

AI๋กœ ๋ฉด์  ์ฐจํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

Learn what area charts encode, when to use them over line charts, and how to build one with ChartGen AI in minutes.

๋” ๋‚˜์€ ์ฐจํŠธ๋ฅผ ๋งŒ๋“ค ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”?

์ด๋Ÿฌํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์‹ค์ฒœ์— ์˜ฎ๊ธฐ์„ธ์š”. ChartGen์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡ ์ดˆ ๋งŒ์— ์ „๋ฌธ์ ์ธ ์‹œ๊ฐํ™”๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ChartGen ๋ฌด๋ฃŒ๋กœ ์ฒดํ—˜ํ•˜๊ธฐ