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

์Šคํ„ฐ๋””50

[์˜ค๋ธŒ์ ํŠธ] ๋ถ€๋ก A '๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„' ๋ถ€๋ก A์—์„œ๋Š” ์‚ฌ์ „์กฐ๊ฑด, ์‚ฌํ›„์กฐ๊ฑด, ๋ถˆ๋ณ€์‹์„ ์•Œ์•„๋ณด๊ณ  ๋‹คํ˜•์„ฑ์˜ ์ธก๋ฉด์—์„œ ์Šˆํผํƒ€์ž…๊ณผ ์„œ๋ธŒํƒ€์ž…์ด ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ๊ณ„์•ฝ์˜ ๊ด€์ ์—์„œ ์„ค๋ช…ํ•œ๋‹ค. ๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„(Design by Contract, DBC)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜‘๋ ฅ์— ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ์ œ์•ฝ๊ณผ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค(p.535). ๊ณ„์•ฝ์— ์˜ํ•œ ์„ค๊ณ„ ๊ตฌ์„ฑ์š”์†Œ ์‚ฌ์ „์กฐ๊ฑด (precondition): ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์œ„ํ•ด ๋งŒ์กฑ๋ผ์•ผ ํ•˜๋Š” ์กฐ๊ฑด. ์š”๊ตฌ์‚ฌํ•ญ(requires)์„ ๋ช…์‹œํ•˜๋ฉฐ, ์‚ฌ์ „์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์˜๋ฌด๋‹ค. ์‚ฌํ›„์กฐ๊ฑด (postcondition): ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ ํ›„์— ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด์žฅํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด. ์‚ฌํ›„์กฐ๊ฑด(effects)์„ ์„œ๋ฒ„๊ฐ€ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ์ค˜์•ผ ํ•˜๋ฉฐ, ์ด.. 2023. 2. 3.
[์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํ‚น ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ] 2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต Chapter 2 : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์›๋ฆฌ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ server ํ•ญ์ƒ host์ด๋‹ค. ๊ณ ์ •๋œ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ณดํ†ต ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋‹ค. client ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•˜๊ณ  ํ†ต์‹ ํ•œ๋‹ค. ๊ฐ€๋” ๋˜๋Š” ํ•ญ์ƒ ์ผœ์ ธ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์†Œ ๋ณ€๋™ ๊ฐ€๋Šฅ (๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ์ฃผ์†Œ๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ) ์„œ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ˆ) HTTP, IMAP, FTP P2P ๊ตฌ์กฐ ํ•ญ์ƒ ์ผœ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ”ผ์–ด๋ผ๋Š” ๊ฐ„ํ—์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ํ˜ธ์ŠคํŠธ ์Œ์ด ์„œ๋กœ ์ง์ ‘ ํ†ต์‹ ํ•˜๊ฒŒ ํ•œ๋‹ค. Self-scalability ํ•˜๋‹ค. ์ƒˆ๋กœ์šด ํ”ผ์–ด๋Š” ์ž‘์—… ๋ถ€ํ•˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ด์ง€๋งŒ, ์„œ๋น„์Šค ๋Šฅ๋ ฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ๋„ ์•ˆ์ •์ ์œผ๋กœ ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ์„ธ.. 2023. 1. 28.
[์˜ค๋ธŒ์ ํŠธ] 15์žฅ '๋””์ž์ธ ํŒจํ„ด๊ณผ ํ”„๋ ˆ์ž„์›Œํฌ' 15์žฅ์€ ์„ค๊ณ„๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด๊ณผ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์ด์ „ movie ์˜ˆ์ œ์— ์ ์šฉ๋œ ๋””์ž์ธ ํŒจํ„ด์„ ์†Œ๊ฐœํ•œ๋‹ค. ๋””์ž์ธ ํŒจํ„ด์ด๋ž€? - ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‹ค(์„ค๊ณ„ ์žฌ์‚ฌ์šฉ). - ๋””์ž์ธ ํŒจํ„ด์€ ํŠน์ • ์ •ํ™ฉ(context)๋‚ด์—์„œ ์ผ๋ฐ˜์ ์ธ ์„ค๊ณ„ ๋ฌธ์ œ(problem)๋ฅผ ํ•ด๊ฒฐ(solution)ํ•˜๋ฉฐ, ํ˜‘๋ ฅํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค ์‚ฌ์ด์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์„œ์ˆ ํ•œ๋‹ค(p.516). - ํŒจํ„ด์€ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ์˜ ํ…œํ”Œ๋ฆฟ์ด๋‹ค(p.517). - ํŠน์ •ํ•œ ๋ณ€๊ฒฝ์„ ์บก์Аํ™”ํ•จ์œผ๋กœ์จ ํ˜‘๋ ฅ์„ ์ผ๊ด€์„ฑ ์žˆ๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๋”ฐ๋ผ์„œ, ์–ด๋–ค ๋””์ž์ธ ํŒจํ„ด์ด ์–ด๋–ค ๋ณ€๊ฒฝ์„ ์บก์Аํ™”ํ•˜๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. Strate.. 2023. 1. 21.
Lambdas and Stream Streams API ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๋Š” ์ปฌ๋ ‰์…˜์ด๋ผ๋„ ์šฐ๋ฆฌ๊ฐ€ ์–ป๊ณ ์ž ํ•˜๋Š” ์ •๋ณด๋Š” ๋น„์Šทํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, '์ด๋Ÿฌํ•œ ์กฐ๊ฑด์— ๋งž๋Š” ์•„์ดํ…œ์„ ์ค˜', '์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•ด์„œ ๋ชจ๋“  ์•„์ดํ…œ์„ ๋ฐ”๊ฟ”์ค˜, ' '์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋Š” ์ง€์›Œ์ค˜', ๋˜๋Š” '์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์š”์†Œ๋“ค์„ ์ •๋ ฌํ•ด ์ค˜' ๋“ฑ์„ ์ปฌ๋ ‰์…˜์— ์š”์ฒญํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด for๋ฌธ๊ณผ Iterator๋ฅผ ์ด์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์— ๋งž๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์™”๋‹ค. List๋ฅผ ์ •๋ ฌํ•  ๋•Œ๋Š” Collections.sort()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐฐ์—ด์„ ์ •๋ ฌํ•  ๋•Œ๋Š” Arrays.sort()๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. Streams API๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ถ”์ƒํ™” ํ•ด์„œ ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ ๋ฌด์—‡์ด๋“  ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ด ์ค€๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ.. 2023. 1. 19.
[์˜ค๋ธŒ์ ํŠธ] 14์žฅ '์ผ๊ด€์„ฑ ์žˆ๋Š” ํ˜‘๋ ฅ' 14์žฅ์€ ์„ค๊ณ„๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ์„ ์บก์Аํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์†Œ๊ฐœํ•œ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์œ ์‚ฌํ•œ ํ˜‘๋ ฅ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ผ๊ด€์„ฑ ์žˆ๋Š” ํ˜‘๋ ฅ ํŒจํ„ด์„ ์ ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๋ฉฐ ์œ ์—ฐํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ผ๊ด€์„ฑ ์žˆ๋Š” ํ˜‘๋ ฅ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์ฑ…์—์„œ๋Š” ์ €๋ฒˆ์— ๋‹ค๋ฃจ์—ˆ๋˜ ํ•ธ๋“œํฐ ์š”๊ธˆ์ œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ฝ”๋“œ๋กœ ์„ค๋ช…ํ•ด ์ฃผ๋Š” ๊ฑฐ ์ข‹์€๋ฐ... ์ฝ”๋“œ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค.... ใ… ใ…  ์บก์Аํ™” ์ข…๋ฅ˜ ๊ฐœ๋ณ„ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ ๋ฐ์ดํ„ฐ ์บก์Аํ™” : ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ private์œผ๋กœ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋„๋ก ์บก์Аํ™”ํ•œ ๊ฒƒ. ๋ฉ”์„œ๋“œ ์บก์Аํ™” : ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€ ํ–‰๋™์„ ์บก์Аํ™”ํ•œ ๊ฒƒ ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ ๊ฐ์ฒด ์บก์Аํ™” : ๊ฐ์ฒด์™€ ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์บก์Аํ™”ํ•œ ๊ฒƒ. (ํ•ฉ์„ฑ์„.. 2023. 1. 14.
[์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํ‚น ํ•˜ํ–ฅ์‹ ์ ‘๊ทผ] 1. ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท Chapter 1 : ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์™€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์ด๋ž€? ๋‘˜ ์ด์ƒ์˜ ํ†ต์‹  ๊ฐœ์ฒด ๊ฐ„์— ๊ตํ™˜๋˜๋Š” ๋ฉ”์‹œ์ง€ ํฌ๋งท, ์ˆœ์„œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฉ”์‹œ์ง€์˜ ์†ก์ˆ˜์‹ ๊ณผ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ์— ๋”ฐ๋ฅธ ํ–‰๋™๋“ค์„ ์ •์˜ํ•˜๋ฉฐ, ์ธํ„ฐ๋„ท์˜ ๋ชจ๋“  ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์€ ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅธ๋‹ค. The Network edge hosts: clients and servers ์„œ๋ฒ„๋Š” ๋ณดํ†ต ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋‚ด์— ์žˆ์Œ The Network core Packet Switching ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ํŒจํ‚ท์ด๋ผ๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ๋กœ ๋ถ„ํ• ํ•ด์„œ ๋ณด๋ƒ„ ์†ก์‹  ์ธก๊ณผ ์ˆ˜์‹  ์ธก ์‚ฌ์ด์—์„œ ๊ฐ ํŒจํ‚ท์€ ํ†ต์‹  ๋งํฌ์™€ ํŒจํ‚ท ์Šค์œ„์น˜(๋ผ์šฐํ„ฐ/๋งํฌ ๊ณ„์ธต ์Šค์œ„์น˜)๋ฅผ ๊ฑฐ์นจ ํŒจํ‚ท์€ ๋งํฌ์˜ ์ตœ๋Œ€ ์ „์†ก๋ฅ ๊ณผ ๊ฐ™์€ ์†๋„๋กœ ๊ฐ๊ฐ์˜ ํ†ต์‹  ๋งํฌ์—์„œ ์ „์†ก๋จ ํŒจํ‚ท ์Šค์œ„์น˜๋Š” store-and-forward ๋ฐฉ์‹์„ ์ด์šฉํ•จ ํŒจํ‚ท ์Šค์œ„.. 2023. 1. 7.