MySQL ์‹คํ–‰ ๊ณ„ํš ํ†บ์•„๋ณด๊ธฐ

MySQL ์‹คํ–‰ ๊ณ„ํš ๋ถ„์„๐Ÿ’ก ์‹คํ–‰ ๊ณ„ํš์—์„œ ํ‘œ์‹œ๋˜๋Š” ๊ฐ ์ปฌ๋Ÿผ์ด ์–ด๋–ค ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž๋ฉ”๋‰ด์–ผํ•œ ์ž‘์—…์ด๋‚˜ ๊ฐ€๋” ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ EXPLAIN ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด MySQL ์‹คํ–‰ ๊ณ„ํš์„ ์‚ดํŽด๋ณด๊ฒŒ ๋˜๋Š”๋ฐ, ๊ฐ ์นผ๋Ÿผ์˜ ์˜๋ฏธ์— ๋Œ€ํ•ด์„œ๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ์•Œ์•„๋ณธ ๊ฒฝํ—˜์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ด๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ƒ๊ธฐํ•ฉ๋‹ˆ๋‹ค.๊ฐ ์นผ๋Ÿผ์˜ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra id ์นผ๋Ÿผ๐Ÿ’ก ID ์ปฌ๋Ÿผ์€ ๋‹จ์ˆœํžˆ SELECT ์ฟผ๋ฆฌ ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ  ํ•ด๋‹น SELECT ์ฟผ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋จ.SELECT ์ฟผ๋ฆฌ ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๊ฐ™์€ ID๊ฐ€ ์—ฌ๋Ÿฌ..

BackEnd 2024. 4. 28. 20:31
ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(isolation level)์ด๋ž€?

ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(isolation level)์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์„ ์ •ํ™•ํ•˜๊ฒŒ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์— ์žˆ์–ด์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ๋ชจ๋ฅด๊ณ  ์žˆ์—ˆ๋˜ ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ•ด์„œ ์žฌํ•™์Šต์„ ์œ„ํ•ด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์€ MySQL ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 4๊ฐ€์ง€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋‰˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 1๋ฒˆ์—์„œ 4๋ฒˆ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ๋†’์•„์ง€๋ฉฐ, ๋™์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ณดํ†ต SERIALIZABLE ์ •๋„๊ฐ€ ์•„๋‹ˆ๋ฉด ํฌ๊ฒŒ ์„ฑ๋Šฅ์˜ ๊ฐœ์„ ์ด๋‚˜ ์ €ํ•˜๋Š” ๋ฐœ์ƒํ•˜์ง€ ..

BackEnd 2024. 3. 3. 20:13
AWS Elastic Beanstalk ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๋ฌด์ค‘๋‹จ ๋ฐฐํฌํ•˜๊ธฐ

์ตœ๊ทผ์— staging ํ™˜๊ฒฝ์—์„œ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‘๋ฉด์„œ๋„ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ, AWS Elastic Beanstalk์„ ํ™œ์šฉํ•ด์„œ ์ด๋ฅผ ์†์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €์™€ ๊ฐ™์€ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ๊ณ„์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ๊ธฐ๋ก์ฐจ ์ด ๊ธ€์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. AWS Elastic Beanstalk์€ vercel๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ฝ”๋“œ๋งŒ ์˜ฌ๋ฆฌ๋ฉด ์ธํ”„๋ผ ๊ด€๋ จ ์„ธํŒ…์„ ๋งค์šฐ ์†์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” PaaS(Platform as a Service)์ž…๋‹ˆ๋‹ค. Elastic Beanstalk์„ ์‚ฌ์šฉํ•˜๋ฉด ์ธํ”„๋ผ ๊ด€๋ฆฌ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ณ  ๋น„์šฉ๋„ Elastic Beanstalk ๊ธฐ๋Šฅ ์ž์ฒด๋Š” ๋ฌด๋ฃŒ์ด๋ฉฐ S3, EC2 ๋“ฑ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ €์žฅํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ์ง€๋ถˆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ตœ..

BackEnd 2023. 10. 8. 17:27
์š”์ฆ˜ ๋– ์˜ค๋ฅด๋Š” gRPC ํ†บ์•„๋ณด๊ธฐ

gRPC๋Š” ์™œ ์‹ค์šฉ์ ์ผ๊นŒ? ์ด ๊ธ€์€ gRPC๋ฅผ ์ ‘ํ•œ ์ง€ ์–ผ๋งˆ ์•ˆ ๋๊ฑฐ๋‚˜ ์ƒˆ๋กญ๊ฒŒ ์•Œ์•„๋ณด๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์„ ๋Œ€์ƒ์œผ๋กœ go, gRPC ๊ทธ๋ฆฌ๊ณ  MSA ํ™˜๊ฒฝ์—์„œ์˜ ์‹ค๋ฌด ๊ฒฝํ—˜์„ ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” gRPC๋Š” ์ธํ”„๋ผ ๊ตฌ์ถ•์— ์žˆ์–ด ๋‹ค์†Œ ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์žˆ๋Š” ํŽธ์ด์ง€๋งŒ ๊ต‰์žฅํžˆ ์‹ค์šฉ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ด์š”. ๋จผ์ €, gRPC๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? gRPC๋Š” ํ•œ ๋ฌธ์žฅ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. gRPC๋Š” Protocol Buffer๋ฅผ IDL(Interface Definition Language)๋กœ ์‚ฌ์šฉํ•˜๋Š” HTTP/2๊ธฐ๋ฐ˜์˜ RPC ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ƒ์†Œํ•œ ๋‹จ์–ด๋“ค์ด ๋งŽ์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ์š”! ์ž ๊น ๋ช‡ ๊ฐ€์ง€ ์‚ดํŽด๋ณผ๊นŒ์š”? RPC(Remote Procedure Call) RPC๋Š” ๋ง ๊ทธ๋Œ€..

BackEnd 2022. 12. 4. 18:39
JWT

JSON WEB TOKEN JWT๋ž€? ํ† ํฐ ์ž์ฒด์— ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ ๋ฌด๊ฒ์ง€ ์•Š๊ณ  ๊ฐ„ํŽธํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ ์šฉ ๊ฐ€๋Šฅ Base64 URL Safe Encoding์„ ์ด์šฉํ•ด์„œ URL, Cooke, Header ๋“ฑ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ค‘์•™์˜ ์ธ์ฆ ์„œ๋ฒ„, ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด์— ๋Œ€ํ•œ ์˜์กด์„ฑ์ด ์—†์–ด์„œ ์‹œ์Šคํ…œ ์ˆ˜ํ‰ ํ™•์žฅ์— ์œ ๋ฆฌํ•จ → ๊ธฐ์กด์— ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ธ์…˜์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์€ ํ•ด๋‹น ์„œ๋ฒ„์—์„œ๋งŒ ํ•ด๋‹น ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ธ์…˜ ์„œ๋ฒ„๋ฅผ ๋‘ฌ์•ผํ–ˆ์ง€๋งŒ, ํ† ํฐ์€ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์…˜ ์„œ๋ฒ„๊ฐ€ ํ•„์š” ์—†์–ด์ง. JWT๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐœ์˜ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ aaaaaa.bbbbbb.cccccc // ์•ž์—์„œ๋ถ€ํ„ฐ .์„ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Œ // ํ—ค๋”(header).๋‚ด์šฉ(payload).์„œ๋ช…(signature) ํ—ค๋”(Header) S..

BackEnd 2021. 6. 26. 19:01
HTTP ๋ฉ”์„œ๋“œ

๊น€์˜ํ•œ๋‹˜์˜ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. GET ๋ฆฌ์†Œ์Šค ์กฐํšŒ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๋Š” query(์ฟผ๋ฆฌ ํŒŒ๋งˆ๋ฆฌํ„ฐ, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง)์„ ํ†ตํ•ด์„œ ์ „๋‹ฌ ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ณณ์ด ๋งŽ์•„์„œ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ GET /boards?title=hello HTTP/1.1 Host: localhost:8080 POST ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ ์ฃผ๋กœ ์‹ ๊ทœ ๋ฆฌ์†Œ์Šค ๋“ฑ๋ก, ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ ๋“ฑ์— ์‚ฌ์šฉ ์ŠคํŽ™ ์ƒ์˜ POST POST ๋ฉ”์„œ๋“œ๋Š” ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฆฌ์†Œ์Šค์˜ ๊ณ ์œ ํ•œ ์˜๋ฏธ ์ฒด๊ณ„์— ๋”ฐ๋ผ ์š”์ฒญ์— ํฌํ•จ๋œ ํ‘œํ˜„์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ..

BackEnd 2021. 5. 28. 23:03