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

HAProxy ๋ž€?High Availability Proxy ๋Š” ๊ณ ์„ฑ๋Šฅ์˜ TCP/HTTP ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œL4(TCP Layer) / L7(HTTP Layer) ๋ ˆ๋ฒจ์—์„œ ๋™์ž‘ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์—ญํ• ๋‹ค์ˆ˜์˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐ(Load Balancing)์„œ๋ฒ„ ์žฅ์•  ์‹œ ์ž๋™์œผ๋กœ failover(๊ณ ๊ฐ€์šฉ์„ฑ)HTTP ์š”์ฒญ์„ ๋ถ„์„ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๊ธฐ(Reverse Proxy, ๋ผ์šฐํŒ…)TLS ์ข…๋ฃŒ, ์„ธ์…˜ ์œ ์ง€, ๋ณด์•ˆ ํ•„ํ„ฐ๋ง ๋“ฑ ๊ณ ๊ธ‰ ๊ธฐ๋ŠฅOSI 7๊ณ„์ธต๊ณผ HAProxy ์œ„์น˜๊ณ„์ธต์„ค๋ช…HAProxy ๊ธฐ๋ŠฅL4(์ „์†ก๊ณ„์ธต, TCP)IP + Port ๊ธฐ์ค€์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐmode tcpL7(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต, HTTP/HTTPS)HTTP ๋ฉ”์„œ๋“œ, ๊ฒฝ๋กœ, ์ฟ ํ‚ค ๋“ฑ์„ ๋ถ„์„ํ•ด ๋ผ์šฐํŒ…mode http๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ์‹HAProxy๋Š” ๋‹ค์–‘ํ•œ ..
HTTP (HyperText Transfer Protocol)| HTTP ๋ฉ”์‹œ์ง€์— ๋ชจ๋“  ๊ฒƒ์„ ์ „์†กHTML, TEXT์ด๋ฏธ์ง€, ์Œ์„ฑ, ์˜์ƒ, ํŒŒ์ผJSON, XML (API)๊ฑฐ์˜ ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ์„œ๋ฒ„๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋„ ๋Œ€๋ถ€๋ถ„ HTTP ์‚ฌ์šฉํŠน์ง•ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ๊ตฌ์กฐRequest-Response ๊ตฌ์กฐํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์‘๋‹ต์„ ๋Œ€๊ธฐ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‘๋‹ต๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ(stateless)์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กด โŽ์žฅ์  : ์„œ๋ฒ„ ํ™•์žฅ์„ฑ ๋†’์Œ(์Šค์ผ€์ผ ์•„์›ƒ)๋‹จ์  : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ์ „์†ก```Stateful, Stateless ์ฐจ์ด ์˜ˆ์‹œ ) ๊ตฌ๋งค ๊ณผ์ • - Stateful > ๊ตฌ๋งค ๋ฌผํ’ˆ ์„ ํƒ > ๊ตฌ๋งค ๊ฐฏ์ˆ˜ ์„ ํƒ > ๊ฒฐ์ œ ๋ฐฉ์‹ ์„ ํƒ > ์ด..
IP (์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ์—ญํ• )์ง€์ •ํ•œ IP ์ฃผ์†Œ(IP Address)์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌํŒจํ‚ท(Packet)์ด๋ผ๋Š” ํ†ต์‹  ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌIP ํ”„๋กœํ† ์ฝœ์˜ ํ•œ๊ณ„๋น„์—ฐ๊ฒฐ์„ฑํŒจํ‚ท์„ ๋ฐ›์„ ๋Œ€์ƒ์ด ์—†๊ฑฐ๋‚˜ ์„œ๋น„์Šค ๋ถˆ๋Šฅ ์ƒํƒœ์—ฌ๋„ ํŒจํ‚ท ์ „์†ก๋น„์‹ ๋ขฐ์„ฑํ”„๋กœ๊ทธ๋žจ ๊ตฌ๋ถ„๊ฐ™์€ IP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์—์„œ ํ†ต์‹ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‘˜ ์ด์ƒ์ด๋ผ๋ฉด?TCP์ธํ„ฐ๋„ท ํ”„๋กœ์ฝ”ํ†จ ์Šคํƒ์˜ 4๊ณ„์ธตํ”„๋กœํ† ์ฝœ ๊ณ„์ธตTCP ํŠน์ง•| ์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ(Transmission Control Protocol)์—ฐ๊ฒฐ์ง€ํ–ฅ - TCP 3 way handshake(๊ฐ€์ƒ์—ฐ๊ฒฐ)๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๋ณด์ฆ์ˆœ์„œ๋ณด์žฅ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœTCP 3 way handshakeUDP ํŠน์ง•| ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๊ทธ๋žจ ํ”„๋กœํ† ์ฝœ(User Datagram Protocol)๊ธฐ๋Šฅ์ด ๊ฑฐ์˜ ์—†์Œ์—ฐ๊ฒฐ์ง€ํ–ฅ X(TCP 3 way handsh..
ZSet์€ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ €์žฅ๋˜๋Š” ๊ณ ์œ ํ•œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ๊ฐ ์›์†Œ๋Š” ์ ์ˆ˜(Score) ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ์ •๋ ฌ1. Redis Sorted Set(ZSet) ์ด๋ž€?Key-Value ์ €์žฅ ๊ตฌ์กฐ์ง€๋งŒ, ๊ฐ Value์— Score(์ˆซ์ž)๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.์ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž๋™ ์ •๋ ฌ๋จ์ค‘๋ณต๋œ ๊ฐ’์€ ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ(Unique), Score๋Š” ์ค‘๋ณต ๊ฐ€๋Šฅ๋น ๋ฅธ ์กฐํšŒ ์†๋„(O(log N))๋กœ ๋žญํ‚น, ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, TTL ๊ธฐ๋ฐ˜ ์บ์‹ฑ ๋“ฑ์— ์œ ์šฉํ•˜๋‹ค.์ฃผ์š” ๋ช…๋ น์–ด1. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€(ZADD)ZADD key score1 member1 [score2 member2 ... ]2. ๋ฐ์ดํ„ฐ ์กฐํšŒ(ZRANGE, ZREVRANGE)์˜ค๋ฆ„์ฐจ์ˆœ ์กฐํšŒ(ZRANGE)๋‚ด๋ฆผ์ฐจ์ˆœ ์กฐํšŒ(ZREVRANGE)3. ํŠน์ • ๊ฐ’์˜ ์ˆœ์œ„ ์กฐํšŒ์˜ค๋ฆ„์ฐจ์ˆœ ์ˆœ์œ„ ์กฐํšŒ(ZRANK)๋‚ด๋ฆผ์ฐจ์ˆœ..
์ธ๊ธฐ๊ธ€ ์š”๊ตฌ์‚ฌํ•ญ์ผ ๋‹จ์œ„๋กœ ์ƒ์œ„ 10๊ฑด ์ธ๊ธฐ๊ธ€ ์„ ์ •๋งค์ผ ์˜ค์ „ 1์‹œ ์—…๋ฐ์ดํŠธ์ข‹์•„์š” ์ˆ˜/๋Œ“๊ธ€ ์ˆ˜/์กฐํšŒ์ˆ˜ ๊ธฐ๋ฐ˜ ์ ์ˆ˜ ๊ณ„์‚ฐ์ ์ˆ˜ = (์ข‹์•„์š” ์ˆ˜ * 3) + (๋Œ“๊ธ€ ์ˆ˜ * 2) + (์กฐํšŒ์ˆ˜ * 1)์ตœ๊ทผ 7์ผ ์ธ๊ธฐ๊ธ€ ๋‚ด์—ญ ์กฐํšŒ์„ค๊ณ„๋งค์ผ ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ ํŠธ๋ž˜ํ”ฝ์€ ์ˆ˜๋ฐฑ~์ˆ˜์ฒœ๋งŒ ๊ฑด ์ด์ƒํ•˜๋ฃจ๋™์•ˆ ์ƒ์„ฑ๋œ ๋ชจ๋“  ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•ด์„œ,์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ƒ์œ„ 10๊ฑด์„ ์ฐพ์•„์•ผํ•˜๋Š” ์ž‘์—…์ด๋Ÿฌํ•œ ์ž‘์—…์€ 1์‹œ๊ฐ„ ๋งŒ์— ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค.๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ณ ๋ คํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.์˜ค์ „ 12์‹œ๊ฐ€ ๋˜์ž๋งˆ์ž, ์ „๋‚  ์ž‘์„ฑ๋œ ๊ฒŒ์‹œ๊ธ€์„ ๋ชจ๋‘ ์ˆœํšŒ๊ฐ ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•ด์„œ ์ข‹์•„์š” ์ˆ˜, ์กฐํšŒ์ˆ˜, ๋Œ“๊ธ€ ์ˆ˜๋ฅผ ์กฐํšŒ๊ฒŒ์‹œ๊ธ€์˜ ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐ๋ชจ๋“  ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•ด์„œ ์ƒ์œ„ 10๊ฑด์„ ์„ ์ •๋ฐฐ์น˜ ์ž‘์—…์„ ํ†ตํ•ด ๋ฌธ์ œ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ œํ•œ์‚ฌํ•ญ์ด ..
Apache Kafka๋Š” ๋ถ„์‚ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ์œผ๋กœ, ๋Œ€๊ทœ๋ชจ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์—ญํ• ์„ ํ•œ๋‹ค.Kafka๋Š” ๋†’์€ ํ™•์žฅ์„ฑ, ๋‚ด๊ฒฐํ•จ์„ฑ(fault tolerance), ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ธฐ์—…์˜ ๋กœ๊ทธ ์ฒ˜๋ฆฌ, ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ, ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๋“ฑ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.1. Kafka๋ž€?๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์†ก์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง€ ์‹œ์Šคํ…œPub/Sub(๋ฐœํ–‰-๊ตฌ๋…) ๋ชจ๋ธ ๊ธฐ๋ฐ˜์˜ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ๊ฐ€๋Šฅ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ ๋ฐ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ํ๋กœ ํ™œ์šฉ2. Kafka ์•„ํ‚คํ…์ฒ˜1. Producer(์ƒ์‚ฐ์ž)Kafka์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๋Š” ์—ญํ• ๋ฉ”์‹œ์ง€๋ฅผ Topic์—๊ฒŒ ๊ฒŒ์‹œ(Publish) ํ•จacks ์„ค์ •์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ „์†ก ๋ณด์žฅ ์ˆ˜์ค€ ์กฐ์ ˆ ๊ฐ€๋Šฅ (acks=0, 1, all..
๊ฒŒ์‹œ๊ธ€ ํ…Œ์ด๋ธ” ์„ค๊ณ„column_nameTypeDescriptionarticle_idBIGINTPrimary KeytitleVARCHAR(100)์ œ๋ชฉcontentVARCHAR(3000)๋‚ด์šฉboard_idBIGINT๊ฒŒ์‹œํŒID(Shard Key)writer_idBIGINT์ž‘์„ฑ์žIDcreated_atDATETIME์ƒ์„ฑ์‹œ๊ฐ„modified_atDATETIME์ˆ˜์ •์‹œ๊ฐ„์—ฌ๊ธฐ์„œ Shard Key๋Š” ๊ฒŒ์‹œํŒ ID์™œ? ๊ฒŒ์‹œ๊ธ€ ์„œ๋น„์Šค๋Š” ๊ฒŒ์‹œํŒ ๋‹จ์œ„๋กœ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ์—, ๊ฒŒ์‹œํŒ ๋‹จ์œ„๋กœ ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก์ด ์กฐํšŒ๋˜๋Š” ๊ฒƒprimary key ์ƒ์„ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Snowflake ์‚ฌ์šฉ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ๊ณ ์œ ํ•œ 64bit ID๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ๋„ ์ค‘๋ณต ์—†์ด ์ˆœ์ฐจ์  ID๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™[1bit][41bits:ํƒ€์ž„์Šคํƒฌํ”„][10bit..
ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ ๋ฉ์ฒญํ•œ ์ง“1jdk๋ฅผ 21๋กœ ์„ค์ •ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์„ธํŒ…์„ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ, gradle build๋Š” ๋ฌธ์ œ์—†์ด ๋˜๋Š”๋ฐ ์™œ?์ž๊พธ ์ด๋”ฐ์œ„ ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š”์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๋Œ....build.gradle ์—์„œ๋„ 21ํ”„๋กœ์ ํŠธ ์„ธํŒ…์—์„œ๋„ 21๋ฌด์ˆ˜ํžˆ ์„ค์ • ์ ์šฉ์„ ๋ฐ˜๋ณตํ•˜๋‹ค ๋ฐœ๊ฒฌํ•œ ๋ฉ์ฒญํ•œ ์ง“intellij ์„ธํŒ… ์ž์ฒด์—์„œ 17๋กœ ๋˜์–ด์žˆ์Œ....์ด๊ฑธ 21๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋‹ˆ ์ •์ƒ ๋™์ž‘..... ๋ช‡๋ถ„์„ ์“ธ๋ฐ์—†์ด ๋‚ ๋ ธ๋„คใ… 
KIMHYEYUN
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก