๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (104)

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Review] JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ - 1. ์ž๋ฐ” ๊ธฐ์ˆ  ์‹œ์Šคํ…œ

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

[Spring] SSE & Kafka ๋ฅผ ํ™œ์šฉํ•ด์„œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ

ํ•„์ž๋Š” ์ฒ˜์Œ์—๋Š” ์•Œ๋ฆผ ํ…Œ์ด๋ธ”์„ ๊ตฌํ˜„ํ•œํ›„ ๋Œ“๊ธ€์ด ๋‹ฌ๋ฆฌ๋ฉด ์•Œ๋ฆผํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜์˜€๊ณ , API๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ์•Œ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ DB์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ polling ๋ฐฉ์‹์€ ์ •ํ•ด์ง„ ์ฃผ๊ธฐ๋งˆ๋‹ค ๋ฌด์กฐ๊ฑด ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ๋„ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐœ์ƒ์‹œํ‚ค๋ฉฐ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์ง€์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์ž๋Š” Kafka๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•Œ๋ฆผ ์ด๋ฒคํŠธ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , Server-Sent Events(SSE)๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•Œ๋ฆผ์„ ์ „๋‹ฌํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ด๋ณผ๊ฒƒ์ด๋‹ค. ๊ฒŒ์‹œํŒ์˜ ๊ธ€์— ๋Œ“๊ธ€์ด ๋‹ฌ๋ฆฌ๋ฉด ์•Œ๋žŒ์ด ์ƒ๊ธฐ๊ณ , ์„œ๋ฒ„๋Š” Kafka๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์•Œ๋žŒ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์ฒ˜๋ฆฌ๋œ ์•Œ๋žŒ์€ SSE๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์— ์ „์†กํ•˜๋Š” ..

[AWS] ์ฒจ๋ถ€ํŒŒ์ผ AWS S3์— ์ €์žฅ & ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ

๊ณผ๊ฑฐ ํ”„๋กœ์ ํŠธ์—์„œ ๋กœ์ปฌ์— ์ด๋ฏธ์ง€๋ž‘ ํŒŒ์ผ์„ ์ €์žฅ, ์กฐํšŒ, ๋‹ค์šด๋กœ๋“œ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ์  ์žˆ๋‹ค. ์ด๊ฑธ ์ด์ œ S3์— ์ €์žฅํ•ด๋ณด๊ณ  ์‹ถ์–ด ํ•œ๋ฒˆ ๋ฆฌํŒฉํ† ๋ง์„ ํ•ด๋ณด์•˜๋‹ค. ์šฐ์„  ๋ฉ€ํ‹ฐํŒŒํŠธ(Multipart) ํŒŒ์ผ ๊ด€๋ จ ์„ค์ •์„ ํ•ด์ค˜์•ผํ•œ๋‹ค. spring: servlet: multipart: enabled: true # ๋ฉ€ํ‹ฐํŒŒํŠธ ์—…๋กœ๋“œ ์ง€์›์—ฌ๋ถ€ (default: true) max-file-size: 100MB # ํ•œ๊ฐœ ํŒŒ์ผ์˜ ์ตœ๋Œ€ ์‚ฌ์ด์ฆˆ (default: 1MB) max-request-size: 100MB # ์ด์ œ S3๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค. implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' ๊ทธ๋ฆฌ๊ณ  S3 ๋ฒ„ํ‚ท๋ฅผ ๋งŒ..

[Docker] EC2์— Docker Compose ์„ค์น˜ํ›„ ๋ฐฐํฌํ•˜๊ธฐ(feat. ์˜ค๋ฅ˜ ์ง€์˜ฅ & ํšŒ๊ณ )

์ด์ œ๊นŒ์ง€ ์„ค์ •ํ•œ Docker Compose ํŒŒ์ผ์„ EC2์— ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด์ž.  Docker Compose๋ฅผ ๋ฐฐํฌํ•  EC2 ๋ฅผ ์ƒ์„ฑํ•œํ›„ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•œ๋‹ค. ssh ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์šด๋ฐ›์€ pem ๊ฒฝ๋กœ์—์„œ ํ„ฐ๋ฏธ๋„ ์‹คํ–‰ํ›„ ssh -i "ํ‚ค.pem" ~ ์ด ๋ช…๋ น์–ด๋ฅผ ๋ณต๋ถ™ํ•˜๋ฉด ๋œ๋‹ค.ํ™”๋ฉด์— ๋ณด์ด๋Š” EC2 ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ๋กœ ํ•ด๋„ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์šด๋ฐ›์€ pemํ‚ค ๊ฒฝ๋กœ๋กœ ๊ฐ€์„œ ssh๋กœ ์ ‘์†ํ• ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ๋ถ™์—ฌ๋„ฃ์ž.ํ•„์ž๋Š” ๋ช…๋ น์–ด๋ฅผ ๋„ฃ์—ˆ๋Š”๋ฐ Permissions 0644 for 'ryusun-creditmarket.pem' are too open. It is required that your private key files are NOT accessible by others. This priva..

[Spring] ์„ฑ๋Šฅ ์ตœ์ ํ™” 3ํŽธ - ์ธ๋ฑ์Šค ํ™œ์šฉํ•˜๊ธฐ

์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์˜ ๋™์ž‘ ์†๋„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„์ค€๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฑ…์˜ ์ฐพ์•„๋ณด๊ธฐ๊ฐ€ ์žˆ์„ ๋•Œ ํŠน์ • ์ฃผ์ œ๋‚˜ ๋‹จ์–ด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ฑ…์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„๋ณด์ง€ ์•Š๊ณ , ์ฐพ์•„๋ณด๊ธฐ์—์„œ ํ•ด๋‹น ๋‹จ์–ด๋ฅผ ์ฐพ์•„ ๋ฐ”๋กœ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋“ฏ์ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋„ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ์ธ๋ฑ์Šค์˜ ์žฅ์  & ํšจ๊ณผ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ–ฅ์ƒ: WHERE ์ ˆ์—์„œ ํŠน์ • ์นผ๋Ÿผ์„ ์ด์šฉํ•œ ์กฐ๊ฑด ๊ฒ€์ƒ‰์ด ๋นจ๋ผ์ง„๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์€ ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์Šค์บ”ํ•˜์—ฌ ์กฐ๊ฑด์— ๋งž๋Š” ํ–‰์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์กฐ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ: JOIN ์ ˆ์—์„œ ์กฐ์ธํ•  ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์€ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐ์ธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๋งค์นญ..

[Spring] ์„ฑ๋Šฅ ์ตœ์ ํ™” 2ํŽธ - ์Šค์นด์šฐํŠธ ๋ชจ๋‹ˆํ„ฐ๋ง TOOL ์„ค์น˜

Scouter Scouter๋Š” ์˜คํ”ˆ ์†Œ์Šค ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด๋กœ, ์ฃผ๋กœ ์ž๋ฐ”(JAVA) ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ฌธ์ œ ์ง„๋‹จ์— ์‚ฌ์šฉ๋œ๋‹ค. ์ด ํˆด์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๋ถ„์„ํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. Scouter๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด CPU ์‚ฌ์šฉ๋Ÿ‰, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, SQL ์ฟผ๋ฆฌ ์„ฑ๋Šฅ, HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ๋“ฑ ๋‹ค์–‘ํ•œ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. 1. ์Šค์นด์šฐํŠธ ๋ชจ๋‹ˆํ„ฐ๋ง TOOL ์„ค์น˜ํ•˜๊ธฐ https://github.com/scouter-project/scouter/releases Releases · scouter-project/scouter Scouter is an open source APM (Application Performan..