๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹๋ณ„์ž ํƒ€์ž… ์ „๋žต
ยท
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์—์„œ ๊ธฐ๋ณธํ‚ค(Primary Key) ์„ ํƒ์€ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ๊ฒฐ์ • ์ค‘ ํ•˜๋‚˜๋‹ค.Primary Key ์œ ํ˜•๊ณผ ํŠน์„ฑ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” Primary Key ์œ ํ˜•์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. Auto Increment๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ž๋™์œผ๋กœ ์ˆœ์ฐจ์ ์ธ ์ •์ˆ˜ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. UUID๋Š” 128๋น„ํŠธ ๊ธธ์ด์˜ ๊ณ ์œ  ์‹๋ณ„์ž๋กœ ์ค‘์•™ ์ง‘์ค‘์‹ ์กฐ์ • ์—†์ด๋„ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์œ ์ผํ•œ ๊ฐ’์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ˆœ์ฐจ์  ID๋Š” ULID๋‚˜ Snowflake ID์ฒ˜๋Ÿผ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋ฉด์„œ๋„ ์ˆœ์ฐจ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐฉ์‹์ด๋‹ค.Auto Increment์˜ ์žฅ์ ๊ณผ ํ•œ๊ณ„Auto Increment๋Š” ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•œ๋‹ค. ์ˆœ์ฐจ์  ์‚ฝ์ž…์œผ๋กœ ์ธํ•ด ์ธ๋ฑ์Šค ๋ถ„ํ• ์ด ์ตœ์†Œํ™”..
Keycloak and ArgoCD integration
ยท
๋ฉ”๋ชจ
์—ฐ๋™ ์„ค์ • ๊ณผ์ •https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/keycloak/#keycloak-and-argocd-with-client-authenticationhttps://www.youtube.com/watch?v=QtIXS-QKEWU๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ํ•ด๊ฒฐArgoCD ๋ฌดํ•œ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋ฌธ์ œhttps://stackoverflow.com/questions/76624577/argocd-ingress-kubernetes-too-many-redirects-even-with-insecure-nginxArgoCDAdmins, ArgoCDEngineers ์— ๋Œ€ํ•œ policyp, role:engineer, applications, get,..
๋ˆ„๊ฐ€ ๊ตฌ๊ธ€์„ ์ฃฝ์˜€๋‚˜ ๐Ÿ”ช (a.k.a. CVE-2023-44487 ๋ถ„์„ ํ•ด๋ณด๊ธฐ)
ยท
๋…์„œ/๋„คํŠธ์›Œํฌ
์˜ˆ์ „์— ์žฌ๋ฏธ๋‚œ ๊ธ€์„ ์ฝ์—ˆ๋‹ค. ๋ฐ”๋กœ ์ด ๊ธ€์ธ๋ฐ, ๋‚ด์šฉ์„ ์งง๊ฒŒ ์š”์•ฝํ•ด ๋ณด์ž๋ฉด, HTTP/2์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ Stream muliplexing์„ ์ด์šฉํ•œ DDoS ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•ด ์ ์€ ๊ทœ๋ชจ์˜ ํด๋ผ์ด์–ธํŠธ๋กœ ์ดˆ๋‹น ์ˆ˜์–ต ์ด์ƒ์˜ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋‹ค๋Š” ๋‚ด์šฉ์ด๋‹ค. HTTP/2 HTTP/2(Hypertext Transfer Protocol Version 2)๋Š” SPDY๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค. 1997๋…„ ํ‘œ์ค€ํ™”๋œ HTTP/1.1์˜ ๋Œ€๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•œ ํ‘œ์ค€์œผ๋กœ 2015๋…„ 2์›” 17์ผ IESG์—์„œ ์Šน์ธ๋˜์—ˆ๋‹ค. Stream multiplexing ์ด ๊ธ€์˜ ์ฃผ์ œ์ธ CVE-2023-44487์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  HTTP/2์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ, Stream multiplexing์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์˜ค๋Š˜๋‚ ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์›นํŽ˜์ด์ง€๋Š” ์ด๋ฏธ์ง€, css..
Redisson ๋ถ„์‚ฐ๋ฝ
ยท
ํ”„๋กœ์ ํŠธ/๊ฐœ๋ฐœ
๋“ค์–ด๊ฐ€๋ฉฐ ํ•™๋ถ€ ์‹œ์ ˆ ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ์„œ๋ฒ„ ํฌ๋Ÿผ์„ ๊ฐœ๋ฐœํ•ด ๋ณด๋ฉด์„œ ๊ฐ ์„œ๋ฒ„๋ณ„ ์ธ์›์ˆ˜ ์ฒดํฌ๋ฅผ ์œ„ํ•œ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด ํฌ๋ก ์žก์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค. ๋‹น์‹œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์œ„ํ•ด ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ™˜๊ฒฝ์œผ๋กœ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ, ๋ฌธ์ œ๋Š” ๋ฐฐ์น˜๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฉด์„œ ๋ชจ๋“  ์„œ๋ฒ„๊ฐ€ ์ผ๊ด„์ ์œผ๋กœ ํฌ๋ก ์ด ์‹คํ–‰๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋„ˆ๋ฌด ๋‹น์—ฐํ•˜์ง€๋งŒ, ๋‹น์‹œ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋งŒ ๊ตฌ์„ฑํ•ด ์šด์˜ํ•˜๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋˜ ๋ฒ„๋ฆ‡์ด ์žˆ๋˜ ๋‚˜์—๊ฒ ๊ฝค ์‹ ์„ ํ•œ ์ถฉ๊ฒฉ์ด์—ˆ๋‹ค. ๋‹น์‹œ์—” ๋ ˆ๋””์Šค์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง ํ™˜๊ฒฝ ๋ถ„์‚ฐ๋ฝ ๊ตฌํ˜„์ฒด์ธ RedLock์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ, ์กฐ๊ธˆ ๋งŽ์ด ๊ณผํ•˜๊ธฐ๋„ ํ•˜๊ณ , RedLock ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฝ์šฐ ๊ฐ ๋ ˆ๋””์Šค๊ฐ€ ์œ„์น˜ํ•œ ์„œ๋ฒ„ ๊ฐ„์— ์‹œ๊ฐ„ ๋™๊ธฐํ™”์™€ ๋ฝ ํš๋“์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์‹คํŒจํ•œ ํด๋ผ์ด์–ธํŠธ๋Š” ํš๋“ํ•œ ๋ถ€๋ถ„ ๋ฝ์„ ๋ชจ๋‘ ํ‘ธ๋Š” ์ž‘์—…์„ ์š”์ฒญํ•˜๋Š” ๋“ฑ ๋งค์šฐ ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ๋“ฌ์ธ ๊ฒƒ์„ ..
์˜ˆ์™ธ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์‹œ๊ฐ์— ๋Œ€ํ•œ ๋‚ด ์ƒ๊ฐ
ยท
๋ฉ”๋ชจ
์ตœ๊ทผ ํ•™์Šต์„ ํ•˜๋ฉฐ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. Checked exception์€ OCP ์œ„๋ฐ˜ ์ตœ๊ทผ ๋ณธ ์˜์ƒ์—์„œ "Checked exception์€ OCP(Open Closed Principle)๋ฅผ ์œ„๋ฐ˜ํ•œ ๊ฒƒ์ด๋‹ค."๋ผ๋Š” ๋‚ด์šฉ์„ ์ ‘ํ–ˆ๋‹ค. ๋‚ด์šฉ์ธ ์ฆ‰ ํ•˜์œ„ ์˜์กด์„ฑ์—์„œ Checked exception์ด ์ถ”๊ฐ€๋˜๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ „ํŒŒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์— ๋‹ซํ˜€์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด์ „๊นŒ์ง€ Checked exception๊ณผ OCP์™€์˜ ๊ด€๊ณ„๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ๊ต‰์žฅํžˆ ์ข‹์€ ์ธ์‚ฌ์ดํŠธ๋ผ ๊ฐœ์ธ์ ์œผ๋กœ ์ข€ ๋” ์ฐพ์•„๋ณด๋ฉฐ ๋‚ด๋ฆฐ ๋‚˜๋ฆ„์˜ ๊ฒฐ๊ณผ๋Š” "์•„๋‹ˆ๋‹ค"์ด๋‹ค. Checked exception Java was a much safer language than most of its predecessors: all behaviour ..
์„œ๋ฒ„ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์€ ์–ด๋””์„œ ๋ฐœ์ƒํ• ๊นŒ?
ยท
๋ฉ”๋ชจ
์ฃผ๋ง ๋™์•ˆ ๊ฐ‘์ž๊ธฐ ์„œ๋ฒ„ ํŠœ๋‹์„ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ํ˜„์žฌ ์ƒํƒœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์ „ ์šด์˜ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ–ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๋‹จ์ผ ์„œ๋ฒ„๋กœ ์˜จ์ „ํžˆ ์ธ์Šคํ„ด์Šค ํ•œ ๋Œ€๊ฐ€ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋ž˜ํ”ฝ ์–‘์„ ํ…Œ์ŠคํŠธํ•  ์˜ˆ์ •์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์™ธ๋ถ€ ์š”์ธ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ €์‚ฌ์–‘ ์™ธ๋ถ€ RDB๋ฅผ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋‹ค. ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๋Œ€๋ถ€๋ถ„์€ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๊ฒƒ์ €๊ฒƒ ์กฐํšŒ/์ˆ˜์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•  ํ…Œ๋‹ˆ ๋„‰๋„‰ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•ด ๋‘”๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” PostgreSQL๋กœ ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์— ์ ํ•ฉํ•œ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. A, B, C ๊ฐ๊ฐ 100,000๊ฐœ, 200,000๊ฐœ, 10,000๊ฐœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ , ์—ฐ๊ด€ ๊ด€๊ณ„๋Š” A 12์ดˆ๋กœ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ..