728x90

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

WEB3 ๊ฐœ๋… (Web 1.0 VS Web 2.0 VS Web 3.0 ์ฐจ์ด)

Web 1.0 (์ •์  ์ธํ„ฐ๋„ท) ์›น์‚ฌ์ดํŠธ์˜ ์‹œ๋Œ€, ์›น์‚ฌ์ดํŠธ ์ฃผ์ธ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ •์  ๋ฐ์ดํ„ฐ์™€ ์ •๋ณด ๋‹ด์Œ ์›น์‚ฌ์ดํŠธ = ๊ธฐ์—…์ด ๋งŒ๋“ค๊ณ  ์†Œ์œ ํ•˜๋Š” ๊ฐœ์ฒด / ์ •์  ๋ฐ์ดํ„ฐ ๋ฐ ์ •๋ณด -> ํšŒ์‚ฌ์—์„œ ํ†ต์ œํ•˜๊ณ  ๊ด€๋ฆฌ ๋ชจ๋“  ์‚ฌ์ดํŠธ๋Š” '๋‹จ๋ฐฉํ–ฅ ํ†ต์‹  ๊ฒฝ๋กœ'๋กœ ์†Œ๋น„์ž์—๊ฒŒ ์ •๋ณด ์ „๋‹ฌ ex) ์‹ ๋ฌธ, ์žก์ง€, ๋ผ๋””์˜ค, ํ…”๋ ˆ๋น„์ „๊ณผ ๊ฐ™์€ ์ „ํ†ต์  ๋ฏธ๋””์–ด๊ฐ€ ๋Œ€์ค‘์—๊ฒŒ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌ ๋ฐ์ดํ„ฐ ๊ฐœ์ธํ™”๋Š” ๊ทนํžˆ ์ œํ•œ์  -> ์‚ฌ์šฉ์ž๊ฐ€ ์ „๋‹ฌ๋œ ์ •๋ณด์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆœ ์—†์Œ (์†Œ๋น„ํ•˜๊ณ ์ž ํ•˜๋Š” ์ •๋ณด๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•  ์ˆœ ์žˆ์Œ) Web 2.0 (์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ์ง€๊ธˆ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ธํ„ฐ๋„ท ๊ธฐ์—…์€ ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž๊ฐ€ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋Ÿผ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์ดˆ์  ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ ํŠธ๋ Œ๋“œ -> ์†Œ์…œ ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ ๋ฏผ์ฃผํ™”, ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด..

WEB3 2023.09.24

AWS Lambda๋กœ Slack๊ณผ ์—ฐ๋™ํ•ด์„œ ์•Œ๋žŒ ์„ค์ • (RDS PostgreSQL, ๋žŒ๋‹ค ์Šฌ๋ž™ ์—ฐ๋™, SNS ๊ตฌ๋… ์„ค์ •)

RDS PostgreSQL Slack ์•Œ๋žŒ ํ…Œ์ŠคํŠธ (slack incoming-webhook ์•ฑ ์ด์šฉ) Slack์— ์•Œ๋ฆผ ์ˆ˜์‹ ์„ ์œ„ํ•œ ์•ฑ ์ถ”๊ฐ€ (incoming-webhook) ๊ตฌ์„ฑ ์„ ํƒํ•ด์„œ ๊ตฌ๋…์„ ์›ํ•˜๋Š” ์Šฌ๋ž™ ์ฑ„๋„์„ ์„ ํƒ ์„ ํƒ ํ›„ ์›นํ›„ํฌ URL ๋ณต์‚ฌํ•ด๋‘” ๋’ค (๋žŒ๋‹ค ์ƒ์„ฑ ์‹œ ํ•„์š”) ์„ค์ • ์ €์žฅ Slack ์ˆ˜์‹ ์„ ์œ„ํ•œ AWS Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ ์—ญํ•  ์„ ํƒ ํ›„ SNS ํŠธ๋ฆฌ๊ฑฐ๋Š” ์•„์ง ์ฃผ์ œ ์ƒ์„ฑ ์ „์ด๊ธฐ์— ์ œ๊ฑฐํ•œ๋‹ค. ๋žŒ๋‹ค ์ƒ์„ฑ ์‹œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • kmsEncryptedHookUrl๊ณผ slackChannel ๊ฐ’์„ ์ž…๋ ฅํ•ด์ค€๋‹ค Url ์ •๋ณด์™€ slackChannel์€ ์œ„์— ์Šฌ๋ž™์—์„œ ์•ฑ ์„ค์ •ํ•  ์‹œ ์ •๋ณด๋“ค์„ ์ž…๋ ฅํ•ด์ค€๋‹ค ์ƒ์„ฑ ์™„๋ฃŒ Amazon SNS ์ฃผ์ œ ์ƒ์„ฑ ํ‘œ์ค€ ์„ ํƒ, ์ด๋ฆ„ ์ž…๋ ฅ ํ›„ ์ƒ์„ฑ ์ƒ์„ฑ๋œ ์ฃผ์ œ๋กœ ๋“ค์–ด๊ฐ€์„œ ๊ตฌ๋… ์ƒ..

Architecture/AWS 2023.09.24

Docker ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์˜ ๋ฐœ์ „๊ณผ์ •, ๋„์ปค ๊ตฌ์„ฑ์š”์†Œ, ๊ธฐ๋ณธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ ๋„์ปค ์„ค์น˜ ๋ฐฉ๋ฒ•, ์„ค์น˜ ํ™•์ธ

์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์˜ ๋ฐœ์ „ ๊ณผ์ • Traditional Deployment ํ•˜๋“œ์›จ์–ด ์œ„์— OS ์„ค์น˜ ํ›„ App ์‹คํ–‰์— ํ•„์š”ํ•œ Library๋ฅผ OS์— ์„ค์น˜ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ํ•œ ์„œ๋ฒ„์—์„œ ์šด์˜ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ (๋น„์šฉ ํšจ์œจ์„ฑ) ์„œ๋น„์Šค๊ฐ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•จ์— ๊นŒ๋ผ ์„œ๋น„์Šค๊ฐ„ ํ™˜๊ฒฝ ๊ฒฉ๋ฆฌ๊ฐ€ ์š”๊ตฌ๋จ Virtualized Deployment Hypervisor: VM(Virtual Machine)์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•จ Guest OS(VM)์— ํ•˜๋“œ์›จ์–ด ์ž์›์„ ์—๋ฎฌ๋ ˆ์ดํŒ…์„ ํ•˜๋‹ค๋ณด๋‹ˆ ์„ฑ๋Šฅ ํ•˜๋ฝ์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ๊ฐ€์ƒ๋จธ์‹ ์„ ๋„์šฐ๊ธฐ ์œ„ํ•œ ์ž์›์˜ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒ Container Deployment Docker : ๋Œ€ํ‘œ์ ์ธ Container Engine chroot, namespace ๋“ฑ์„ ์ด์šฉํ•œ ๊ฒฉ๋ฆฌ๊ธฐ์ˆ  ์ œ๊ณต Host Proces..

์ข€ ๋Šฆ์€... 47ํšŒ 221105 SQLD ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ฐœ์ž ํ•ฉ๊ฒฉ ํ›„๊ธฐ

ํฌํฌ ์ž‘๋…„์— ๋”ฐ๋†“๊ณ  ์ง€๊ธˆ ํ›„๊ธฐ ์“ฐ๊ธฐ https://blog.naver.com/ahnty0122/223188189564 ์ข€ ๋Šฆ์€... 47ํšŒ 221105 SQLD ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ฐœ์ž ํ•ฉ๊ฒฉ ํ›„๊ธฐ ๋‚ด์นœ๊น€์— ์”๋‹ˆ๋‹ค. SQLD ํ•ฉ๊ฒฉ ํ›„๊ธฐ 22.11.05์— ์‹œํ—˜๋ดค๋Š”๋ฐ ์ด์ œ ํ›„๊ธฐ๋ฅผ ์“ฐ๋‹ค๋‹ˆ ์ž‘๋…„์— ํšŒ์‚ฌ์—์„œ ์ž๊ฒฉ์ฆ ... blog.naver.com

230819 AWS Certified Solution Architect Associate (AWS SAA-C03) ์ž๊ฒฉ์ฆ ์ทจ๋“ ํ›„๊ธฐ[์ถœ์ฒ˜] 230819 AWS Certified Solution Architect Associate (AWS SAA-C03) ์ž๊ฒฉ์ฆ ์ทจ๋“ ํ›„๊ธฐ

ํฌํฌ ํด๋ผ์šฐ๋“œ ์ž๊ฒฉ์ฆ ํ•˜๋‚˜ GET https://blog.naver.com/ahnty0122/223188099145 230819 AWS Certified Solution Architect Associate (AWS SAA-C03) ์ž๊ฒฉ์ฆ ์ทจ๋“ ํ›„๊ธฐ ํšŒ์‚ฌ์—์„œ AWS Solution Architect Associate ์ž๊ฒฉ์ฆ ๋ฐ”์šฐ์ฒ˜๋ฅผ ๋ฐ›์•„์„œ ์‹œํ—˜์„ ๋ดค์Šต๋‹ˆ๋‹ค.. ์‚ฌ์‹ค ์ž‘๋…„ 1... blog.naver.com

๋ฐฑ์ค€ ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ๋“ค (1072 ๊ฒŒ์ž„, 1654 ๋žœ์„ ์ž๋ฅด๊ธฐ, 1920 ์ˆ˜์ฐพ๊ธฐ, 2512 ์˜ˆ์‚ฐ)

https://www.acmicpc.net/problem/1072 1072๋ฒˆ: ๊ฒŒ์ž„ ๊น€ํ˜•ํƒ์€ ์ง€๊ธˆ ๋ชฐ๋ž˜ Spider Solitaire(์ŠคํŒŒ์ด๋” ์นด๋“œ๋†€์ด)๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ํ˜•ํƒ์ด๋Š” ์ด ๊ฒŒ์ž„์„ ์ด๊ธธ ๋•Œ๋„ ์žˆ์—ˆ์ง€๋งŒ, ์งˆ ๋•Œ๋„ ์žˆ์—ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์˜ ์‹œ์„ ์ด ๋Š๊ปด์ง„ ํ˜•ํƒ์ด๋Š” ๊ฒŒ์ž„์„ ์ค‘๋‹จํ•˜๊ณ  ์ฝ”๋”ฉ์„ ํ•˜๊ธฐ ์‹œ www.acmicpc.net import sys input = sys.stdin.readline x, y = map(int, input().split()) z = int(100 * y / x) if z >= 99: print(-1) else: ans = 0 start = 0 end = 1000000000 while(start

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž…๊ตญ์‹ฌ์‚ฌ (์ด๋ถ„ํƒ์ƒ‰)

https://programmers.co.kr/learn/courses/30/lessons/43238 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ž…๊ตญ์‹ฌ์‚ฌ n๋ช…์ด ์ž…๊ตญ์‹ฌ์‚ฌ๋ฅผ ์œ„ํ•ด ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ž…๊ตญ์‹ฌ์‚ฌ๋Œ€์— ์žˆ๋Š” ์‹ฌ์‚ฌ๊ด€๋งˆ๋‹ค ์‹ฌ์‚ฌํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฒ˜์Œ์— ๋ชจ๋“  ์‹ฌ์‚ฌ๋Œ€๋Š” ๋น„์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์‹ฌ์‚ฌ๋Œ€์—์„œ๋Š” ๋™์‹œ์— ํ•œ programmers.co.kr def solution(n, times): answer = 0 left = 1 right = max(times) * n # ๊ฐ€์žฅ ๋น„ํšจ์œจ์ ์ธ ์‹ฌ์‚ฌ ์‹œ๊ฐ„ while left = n: break if count >= n: right = mid - 1 elif count < n: left = mid + 1 return left print(solution(6, [7, 10..

[DB] ํŠธ๋žœ์žญ์…˜ (Transaction), ์žฅ์•  ํšŒ๋ณต

ํŠธ๋žœ์žญ์…˜ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ์‚ฐ๋“ค์„ ๋ชจ์•„๋†“์€ ๊ฒƒ = ์ž‘์—… ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ SQL ๋ฌธ์˜ ๋ชจ์ž„ ํŠนํžˆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” INSERT, DELETE, UPDATE ๋ฌธ์˜ ์‹คํ–‰ ๊ด€๋ฆฌ ๋…ผ๋ฆฌ์  ์ž‘์—…์˜ ๋‹จ์œ„ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌ ์ž‘์—…์ด๋‚˜ ๋ณ‘ํ–‰ ์ œ์–ด ์ž‘์—…์„ ์œ„ํ•œ ์ค‘์š”ํ•œ ๋‹จ์œ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—… ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์—ฐ์‚ฐ๋“ค์„ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ œ๋Œ€๋กœ ์ •์˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•จ ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ (ACID) ์›์ž์„ฑ (Atomicity) - ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ๋“ค์ด ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ํ•˜๋‚˜๋„ ์‹คํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•จ (= all-or-nothing) - ๋งŒ์•ฝ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ๋„์ค‘ ์žฅ์•  ๋ฐœ์ƒํ•˜๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์‹คํ–‰ํ•œ ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํŠธ๋žœ์žญ์…˜ ์ž‘์—… ์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ ค์•ผ..

728x90