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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ214

Jenkins์—๊ฒŒ docker-compose ๊ถŒํ•œ ์ฃผ๊ธฐ ๊ฒฝ๋กœ์— docker-compose๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ๊ถŒํ•œ์ด ์—†๋‹ค๊ณ  ์ž‘๋™์ด ์•ˆ๋˜๋Š” ๋‚œ๊ฐํ•œ ์ƒํ™ฉ. docker ๊ถŒํ•œ์€ ์ฒ˜์Œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šธ ๋‹น์‹œ ์คฌ๋Š”๋ฐ docker-compose์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋ชจ์–‘์ด๋‹ค. ๊ถŒํ•œ์ด ์—†๋‹ค๊ณ (Permission denied) ํ•˜๋‹ˆ ์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค. 1. ์šฐ์„  ์  ํ‚จ์Šค ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ์— ์ ‘์† (๋ฐฐํฌ ํ™˜๊ฒฝ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค. ๋ณธ ํ”„๋กœ์ ํŠธ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋„์ปค์ธ๋„์ปค ํ™œ์šฉ) docker exec -it jenkins /bin/bash 2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋„์ปค-์ปดํฌ์ฆˆ ๊ถŒํ•œ์„ ์ค€๋‹ค. chmod +x /usr/local/bin/docker-compose; # ๋„์ปค ์ปดํฌ์ฆˆ์— ๋Œ€ํ•œ ์‹คํ–‰๊ถŒํ•œ ๋ถ€์—ฌ 3. ์ถ”๊ฐ€์ ์œผ๋กœ docker ๊ทธ๋ฃน์—์„œ ๊ฐ™์ด ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด docker-compose.. 2023. 3. 15.
CS ๋ฉด์ ‘ ์งˆ๋ฌธ ์ •๋ฆฌ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ณธ ๊ฐœ๋… 2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด (sql: ddl dml dcl) 3. RDBMS์™€ NoSql 4. ์ธ๋ฑ์‹ฑ 5. ์ •๊ทœํ™” 6. ๋ฐ˜์ •๊ทœํ™” 7. ํŠธ๋žœ์ ์…˜ 8. join 1. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ธฐ๋ณธ ๊ฐœ๋… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ง• 4๊ฐ€์ง€ โœ” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?: ํŠน์ • ์กฐ์ง์˜ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค์ด ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ†ตํ•ฉํ•ด์„œ ์ €์žฅํ•œ ์šด์˜๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ ์‹ค์‹œ๊ฐ„ ์ ‘๊ทผ ๊ฐ€๋Šฅ ์‚ฌ์šฉ์ž๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ์ œ๊ณต ๊ณ„์† ๋ณ€ํ™” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์†์ ์œผ๋กœ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ํ•˜๋ฉด์„œ ์ตœ์‚ฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค. ๋™์‹œ ๊ณต์œ  ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๊ฐ™์€ ๋‚ด์šฉ์˜ ๋ฐ์ดํ„ฐ ์ด์šฉ ๊ฐ€๋Šฅ ๋‚ด์šฉ ๊ธฐ๋ฐ˜ ์ฐธ์กฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ์ฃผ์†Œ๋‚˜ ์œ„์น˜๊ฐ€ ์•„๋‹Œ ๋‚ด์šฉ์„ ํ†ตํ•œ ์ฐธ์กฐ ๊ฐ€๋Šฅ DBMS (DataBase M.. 2023. 3. 11.
JPA: ์ง€์—ฐ๋กœ๋”ฉ๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ง€์—ฐ ๋กœ๋”ฉ๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ฃผ๋ฌธ์กฐํšŒ1: ์—”ํ‹ฐํ‹ฐ ์ง์ ‘ ๋…ธ์ถœ @GetMapping("/api/v1/simple-orders") public List ordersV1() { List all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { order.getMember().getName(); //Lazy ๊ฐ•์ œ ์ดˆ๊ธฐํ™” order.getDelivery().getAddress(); //Lazy ๊ฐ•์ œ ์ดˆ๊ธฐํ™” } return all; } โœ” ์—”ํ‹ฐํ‹ฐ ์ง์ ‘ ๋…ธ์ถœ ์ง€์–‘ โœ” order -> member ์™€ order -> address ๋Š” ์ง€์—ฐ ๋กœ๋”ฉ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์‹ค์ œ ์—”ํ‹ฐํ‹ฐ ๋Œ€์‹ ์— ํ”„๋ก์‹œ ์กด์žฌ โœ” ์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„๋Š” @Jsonignore ์„ค์ •.. 2023. 3. 10.
AWS ๋ณด์•ˆ ์ •๋ณด ๋ณดํ˜ธ ๋ณด์•ˆ ์ •๋ณด ๋ณดํ˜ธ ๋ณด์•ˆ์˜ ๊ฐœ๋… ์ •๋ณด์˜ ์ˆ˜์ง‘, ๊ฐ€๊ณต, ์ €์žฅ, ๊ฒ€์ƒ‰, ์†ก์‹  ์ค‘์— ์ •๋ณด์˜ ํ›ผ์†, ๋ณ€์กฐ, ์œ ์ถœ ๋“ฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ด€๋ฆฌ์ , ๊ธฐ์ˆ ์  ์ˆ˜๋‹จ ๋˜๋Š” ๊ทธ๋Ÿฌํ•œ ์ˆ˜๋‹จ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ํ–‰์œ„ ๊ธฐ์—…์—์„œ ์ •๋ณด ๋ณดํ˜ธ์˜ ๋Œ€์ƒ โœ” ์ถœ์ž…ํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ + ์œ ๋ฌดํ˜•์˜ ์ •๋ณด ์ž์‚ฐ ์ •๋ณด ๋ณดํ˜ธ ๋Œ€์ฑ… ๊ด€๋ฆฌ์  ๋ณดํ˜ธ ๋Œ€์ฑ…: ์ œ๋„, ๋ณด์•ˆ ๊ต์œก, ํ›ˆ๋ จ, ๋ณด์•ˆ ์ง๋ฌด ๋ฌผ๋ฆฌ์  ๋ณดํ˜ธ ๋Œ€์ฑ…: ์ถœ์ž…ํ†ต์ œ, ์žฌ๋‚œ ๋ฐฉ์ง€ ๊ธฐ์ˆ ์  ๋ณดํ˜ธ ๋Œ€์ฑ…: ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ ํ†ต์ œ, ๋ณด์•ˆ ์†Œํ”„ํŠธ์›จ์–ด, ๋ฐฉํ™”๋ฒฝ ์‚ฌ์ดํŠธ ๋ณด์•ˆ โœ” ํŒŒ์ผ ์—…๋กœ๋“œ ์ทจ์•ฝ์  โœ” XSS (Cross Site Scripting) โœ” SQL Injection ํŒŒ์ผ ์—…๋กœ๋“œ ์ทจ์•ฝ์  โœ” ๊ฒŒ์‹œํŒ ๋“ฑ์˜ ์ฒจ๋ถ€ ํŒŒ์ผ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ํ—ˆ๊ฐ€ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ๋“ค์„ ์›น์„œ๋ฒ„๋กœ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์  (php, jsp, asp, .. 2023. 3. 9.
ํ”„๋กœ์ ํŠธ ์‹œ DB ์„ค๊ณ„ ๋ฐฉ๋ฒ• Project DB ์„ค๊ณ„ 1. DB ์„ค๊ณ„์˜ ๋ชฉ์  โœ” ํ”„๋กœ์ ํŠธ, ๋ช…์„ธ์„œ ๋“ฑ์˜ ์ •๋ณด ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ดํ•ด โœ” ๋ถ„์„์ž, ๊ฐœ๋ฐœ์ž, ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์›ํ• ํ•œ ์˜์‚ฌ ์†Œํ†ต ์ˆ˜๋‹จ โœ” ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ๋ถ„์„ ๋ฐฉ๋ฒ• โœ” ํ˜„ํ–‰ ์‹œ์Šคํ…œ๋งŒ์ด ์•„๋‹Œ ์‹ ๊ทœ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์˜ ๊ธฐ์ดˆ ์ œ๊ณต โœ” ์„ค๊ณ„๋ฅผ ๋Œ€์ถฉํ•˜๋ฉด ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค DB์™€ ๊ด€๋ จ๋œ ์ด๋ฏธ ๊ฐœ๋ฐœ๋œ ํ”„๋กœ๊ทธ๋žจ๋„ ํ•จ๊ป˜ ๋œฏ์–ด๊ณ ์ณ์•ผํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ!! 2. ์„ค๊ณ„๋ฅผ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ ๋ถ„์„ โœ” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ๋ถ„์„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์š”๊ตฌ์‚ฌํ•ญ (๊ธฐ๋Šฅ) ๋ช…์„ธ์„œ ์ž‘์„ฑ ์˜ˆ์‹œ: ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ ์ƒ˜ํ”Œ: ํ•ญ๊ณต์‚ฌ DB ํšŒ์›์œผ๋กœ ๊ฐ€์ž…ํ•˜๋ ค๋ฉด ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์„ฑ๋ช…, ์‹ ์šฉ์นด๋“œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ํšŒ์›์˜ ์‹ ์šฉ์นด๋“œ ์ •๋ณด๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ, ์œ ํšจ๊ธฐ๊ฐ„์„ ์ €์žฅํ•  ์ˆ˜.. 2023. 3. 8.
๋ฐ˜์ •๊ทœํ™” DB ๋ฐ˜์ •๊ทœํ™” 2. ๋ฐ˜์ •๊ทœํ™”(์—ญ์ •๊ทœํ™”)๋ž€? โœ” ์ •๊ทœํ™”๋œ ์—”ํ‹ฐํ‹ฐํƒ€์ž…, ์†์„ฑ, ๊ด€๊ณ„๋ฅผ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅํ–ฅ์ƒ, ๊ฐœ๋ฐœ๊ณผ ์šด์˜์˜ ๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ๋ชจ๋ธ์„ ํ†ตํ•ฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์ •๊ทœํ™” ๋ชจ๋ธ ์ด์ƒ์ ์ธ ๋…ผ๋ฆฌ ๋ชจ๋ธ์€ ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐํƒ€์ž…, ์†์„ฑ ๊ด€๊ณ„๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•˜๋ฉฐ, ๋”ฐ๋ผ์„œ ์ž…๋ ฅ, ์ˆ˜์ • , ์‚ญ์ œ๋„ ํ•œ ๊ตฐ๋Œ€์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋ฐ์ดํƒ€ ๊ฐ’์ด ๋ณ€์งˆ๋˜๊ฑฐ๋‚˜ ์ด์งˆํ™”๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค. ๋ฐ˜๋ฉด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ SQL์ž‘์„ฑ์ด ์šฉ์ดํ•˜์ง€ ์•Š๊ณ  ๊ณผ๋‹คํ•œ ํ…Œ์ด๋ธ” ์กฐ์ธ์ด ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๋ฐ˜์ •๊ทœํ™” ๋ชจ๋ธ ๋ฐ˜๋Œ€๋กœ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ๋‹จ์ˆœํ•ด์ง€๋ฏ€๋กœ SQLK ์ž‘์„ฑ์ด ์šฉ์ดํ•˜๊ณ  ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋งŽ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๊ฑธ์ณ ์กด์žฌํ•˜๋ฏ€๋กœ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์šฐ๋ ค๊ฐ€ ์žˆ๋‹ค. โœ” ๊ณผ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ •ํ™•ํ•œ ๊ธฐ.. 2023. 3. 7.