๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒพBackEnd17

MySQL - ์ธ๋ฑ์Šค ์ธ๋ฑ์Šค๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์•ผ ๋˜๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋””์Šคํฌ ์ฝ๊ธฐ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ๋œ๋‹ค. ์ด ํฌ์ŠคํŠธ๋Š” ์ธ๋ฑ์Šค์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ ์ฝ๊ธฐ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ๋‹ค. 2๊ฐœ์˜ ์ฝ๊ธฐ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋ฉด ์ข‹์€๋ฐ ๋žœ๋คI/O์™€ ์ˆœ์ฐจI/0 ๋ฐฉ์‹์ด๋‹ค. ๋žœ๋คI/O๋ฐฉ์‹๊ณผ ์ˆœ์ฐจI/O ๋ฐฉ์‹์˜ ๊ณตํ†ต์ ์ธ ํ–‰๋™์ด ์žˆ๋Š”๋ฐ ํ”Œ๋ž˜ํ„ฐ๋ฅผ ๋Œ๋ ค์„œ ์ฝ์–ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜๋กœ ๋””์Šคํฌ ํ—ค๋”๋ฅผ ์ด๋™์‹œํ‚จ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๋ถ€๋ถ„์€ ์ˆœ์ฐจI/O๋Š” 1๋ฒˆ์˜ ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๊ณ  ๋žœ๋คI/O๋Š” 3๋ฒˆ์˜ ํ˜ธ์ถœ์„ ํ•˜์˜€๋‹ค. ์ด๋ ‡๊ฒŒ ์‚ดํŽด๋ณด๋ฉด ์ˆœ์ฐจI/O๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์ด ์ข‹๊ฒ ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋žœ๋คI/O๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” MySQL์„ ํ˜„์‹ค์  ํŠน์„ฑ์ƒ ์ˆœ์ฐจI/O๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ๊ทธ๋ž˜์„œ ๋žœ๋คI/O๋ฅผ ์‚ฌ์šฉ์„ ํ•˜๋ฉด์„œ ์ ‘๊ทผํ•˜๋Š”.. 2023. 2. 28.
MySQL - ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ MYSQL ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ฒ˜๋ฆฌ๋  ๋•Œ ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 1. Read Uncommitted Read Uncommitted ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ ๊ฐ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด commit , Rollback ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์— ๋ณด์ธ๋‹ค. (Dirty Read) → ์‚ฌ์šฉ์ž A๊ฐ€ insert๋ฅผ ํ•˜๊ณ  ์‚ฌ์šฉ์ž B๊ฐ€ commit ์ด ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ select๋กœ ์ ‘๊ทผ์„ ํ•œ๋‹ค. → ๋งŒ์•ฝ์— Insert ํ•˜๋Š” ๊ฒฝ์šฐ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋กค๋ฐฑ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์‚ฌ์šฉ์žB๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผ์„ ํ•˜๊ณ  ์žˆ์„๊นŒ? — ๋กค๋ฐฑ์ด ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผ → ์ด์ฒ˜๋Ÿผ Read Uncommitted๋Š” ์ •ํ•ฉ์„ฑ์— ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ .. 2023. 2. 28.
MYSQL - LOCK Lock ๋ฝ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์‹œ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค. ์ฆ‰. ๋ฝ์€ ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•  ๋•Œ ๋ฝ์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”๋ฅผ ํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฝ์˜ ๋ฒ”์œ„๊ฐ€ ๊ธธ์–ด์ง€๋ฉด ๋Œ€์ง€์ค‘์ธ ์ปค๋„ฅ์…˜์ด ๋งŽ์•„์ง€๊ณ  ๋‚˜์ค‘์—๋Š” ์ปค๋„ฅ์…˜ ํ’€์ด ๊ณ ๊ฐˆ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ MySQL์—์„œ๋Š” ํŠธ๋žœ์žญ์…˜ ์ปค๋ฐ‹ , ๋ก๋ฐฑ์‹œ์ ์— ๋ฝ์ด ํ’€๋ฆฐ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ๊ณง ๋ฝ์˜ ๋ฒ”์œ„๊ฐ€ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. MySQL์—์„œ ๋ฝ์€ ํฌ๊ฒŒ InnoDB ์—”์ง„ , MySQL ์—”์ง„ ๋ ˆ๋ฒจ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ“Œ ๋น„๊ด€์  ๋™์‹œ์„ฑ ์ œ์–ด(PCC, Pessimistic Concurrency Control) ๋น„๊ด€์  ๋ฝ์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ํŠธ๋žœ์žญ์…˜์ด ์ถฉ๋Œํ•˜๋Š” ๊ฐ€์ •ํ•˜์— ์ž ๊ธˆ์„ ๊ฑฐ๋Š” ๋ฐฉ์‹ ์ผ๋ฐ˜์ ์œผ๋กœ Shared Lock, Exclusive Lock์„ ํ†ตํ•ด ์ด๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ๐Ÿ“Œ ๋‚™๊ด€์  ๋™์‹œ ์ˆ˜ํ–‰ ์ œ์–ด(OCC, Opti.. 2023. 2. 28.
[SpringBoot] Slack์œผ๋กœ ์•Œ๋ฆผ ๋ณด๋‚ด๊ธฐ ์†Œ๊ฐœ ์š”์ฆ˜ Slack์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด์„œ Spring boot๋ฅผ ํ†ตํ•ด์„œ Slack์— ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค. 1. ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฐ ์ฑ„๋„ - ์ผ๋‹จ ๊ธฐ์กด์— ์žˆ๋Š” ์ฑ„๋„์„ ์‚ฌ์šฉ์„ ํ–ˆ๋Š”๋ฐ ๋งŒ์•ฝ์— ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์ฑ„๋„์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”์ฒœํ•œ๋‹ค. 2. ์„œ๋ธŒ ์ฑ„๋„ -> ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ - ์„œ๋ธŒ ์ฑ„๋„์„ ํ•˜๋‚˜ ์„ ํƒ์„ ํ•˜๊ณ  ์šฑํด๋ฆญ์„ ํ•˜์—ฌ ์ฑ„๋„ ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•œ๋‹ค. 3. ํ†ตํ•ฉ -> ์•ฑ -> ์•ฑ์ถ”๊ฐ€ 4. ๊ฒ€์ƒ‰ -> webhook ๊ฒ€์ƒ‰ ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ webhook์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ Imcoming-webook์„ ์„ค์น˜ํ•œ๋‹ค. 5. URL ํ™•์ธ Slack api ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ Add Incoming WebHooks Integration์„ ๋ˆ„๋ฅด๋ฉด ๋ฐ‘์— ํ™”๋ฉด์ด ๋‚˜์˜ค๋Š”๋ฐ ์—ฌ๊ธฐ์„œ URL์„ ๋ณต์‚ฌํ•œ๋‹ค. 5-2. webhook ํ…Œ์Šค.. 2023. 2. 15.