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

๐Ÿ’Ž48

[Java] ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(Garbage Collection) C/C++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Memory Leak)๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์‚ฌ์šฉ์žํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ํ•ด์ œ ํ•ด์ฃผ์–ด์•ผ ํ–ˆ์ง€๋งŒ, JAVA์—์„œ๋Š” JVM(Java Virtual Machine)์ด ๊ตฌ์„ฑ๋œ JRE(Java Runtime Environment)๊ฐ€ ์ œ๊ณต๋˜๋ฉฐ, ๊ทธ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ธ Garbage Collection(์ดํ•˜ GC)์ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋ฅผ ํŒŒ๊ดดํ•œ๋‹ค. GC์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ธฐ ์ „์— 'stop-the-world'๋ผ๋Š” ์šฉ์–ด๋ฅผ ์•Œ์•„์•ผํ•œ๋‹ค. 'stop-the-world'๋ž€, GC๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด JVM์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค GC ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ 'stop-the-world'๋Š” ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๋Œ€๊ฐœ์˜ ๊ฒฝ์šฐ GC ํŠœ๋‹์€.. 2021. 8. 11.
[Java] ๋žŒ๋‹ค์‹ ๋žŒ๋‹ค์‹(Lambda Expression) ํ•จ์ˆ˜์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์œผ๋กœ 'y = f(x)' ํ˜•ํƒœ์˜ ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ด๋‹ค. ์ฆ‰, ๋žŒ๋‹ค์‹์€ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ์‹(expression)์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ํ•จ์ˆ˜๋ฅผ ๋žŒ๋‹ค์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์ด ํ•„์š” ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋žŒ๋‹ค์‹์€ ์ต๋ช… ํ•จ์ˆ˜(Anonymous Function)์˜ ํ•œ ์ข…๋ฅ˜๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ” 8๋ถ€ํ„ฐ ์ง€์›ํ•˜๋ฉฐ ์ž๋ฐ”๋Š” ๋žŒ๋‹ค์‹์„ ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. '๋žŒ๋‹ค์‹ → ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ์ฝ”๋“œ ๋ธ”๋ก → ์ต๋ช… ๊ตฌํ˜„ ๊ฐ์ฒด' ์ต๋ช… ํ•จ์ˆ˜(Anonymous Function) : ํ•จ์ˆ˜์˜ ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜๋กœ, ์ต๋ช… ํ•จ์ˆ˜๋“ค์€ ๋ชจ๋‘ ์ผ๊ธ‰ ๊ฐ์ฒด์ด๋‹ค. ์ผ๊ธ‰ ๊ฐ์ฒด์ธ ํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๋Š” ๋“ฑ์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ณ€์ˆ˜.. 2021. 8. 10.
[DevOps] ์ปจํ…Œ์ด๋„ˆ์˜ ์ดํ•ด : ์™œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค‘์š”ํ•ด์กŒ์„๊นŒ? Immutable Infrastructure (๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ) ํƒ„์ƒ ๋ฐฐ๊ฒฝ mutable Infrastructure (๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ์ธํ”„๋ผ) ์šฐ๋ฆฌ๋Š” ์œˆ๋„์šฐ์ฆˆ๋‚˜ ๋งฅ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ณด์•ˆ, ์•ˆ์ •์„ฑ ๊ทธ๋ฆฌ๊ณ  ์„ฑ๋Šฅ ๋“ฑ์˜ ์ด์œ ๋กœ OS(์šด์˜์ฒด์ œ)๋ฅผ ์ž์ฃผ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค. OS๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‚ด์šฉ์ด๋‚˜ ์„ค์ •์ด ์ˆ˜์‹œ๋กœ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ, ์ƒˆ๋กœ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋„ ๋ณ€๊ฒฝํ•œ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•˜๋˜ ๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด๋“ค์€ ์—…๋ฐ์ดํŠธ๋‚˜ ์„ค์ • ๋ณ€๊ฒฝ ๋“ฑ์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜์˜€๊ณ , ์„œ๋ฒ„์šฉ ์†Œํ”„ํŠธ์›จ์–ด๋„ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ด€๋ฆฌํ–ˆ๋‹ค. ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ์—๋Š” OS ์„ค์ • ๋ณ€๊ฒฝ์ด๋‚˜ ์—…๋ฐ์ดํŠธ ๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์— ์„œ๋น„์Šค์˜ ์•ˆ์ •์„ฑ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ์„œ๋ฒ„ ํ™˜๊ฒฝ ์ž์ฒด๊ฐ€ ํŒŒ๊ดด๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์–ธ์ œ ์–ด๋Š .. 2021. 8. 3.
[DevOps] DevOps์˜ ์ดํ•ด 'DevOps : Infrastructure as Code with ํ…Œ๋ผํผ(Terraform) and AWS ์ดˆ๊ธ‰, ์ž…๋ฌธํŽธ'์„ ๋ณด๊ณ  ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. DevOps : Infrastructure as Code with ํ…Œ๋ผํผ(Terraform) and AWS ์ดˆ๊ธ‰, ์ž…๋ฌธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜ ์ด ๊ฐ•์˜๋Š” DevOps์˜ ๊ธฐ๋ณธ ์ด๋ก ๊ณผ ํ•จ๊ป˜ DevOps์˜ ๊ธฐ๋ณธ ์ค‘ ํ•˜๋‚˜์ธ Infrastructure as Code(IaC)์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๋ณธ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด IT๊ธฐ๋ฐ˜์˜ ์„œ๋น„์Šค๋ฅผ DevOps๊ด€์ ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๊ณ , ์„œ๋น„์Šค www.inflearn.com 1. DevOps์˜ ์ดํ•ด ๊ฐœ๋… ๋ฐ๋ธŒ์˜ต์Šค๋Š” ํ•ฉ์„ฑ์–ด : ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ(Development) + ์šด์˜(Operations) ํ˜„์žฌ๋Š” ๋‹จ์ˆœํžˆ ๊ฐœ๋ฐœ๊ณผ ์šด์˜์˜ ํ†ตํ•ฉ.. 2021. 7. 29.
[Java] ์ŠคํŠธ๋ฆผ Stream ๊ฐœ๋… ์ŠคํŠธ๋ฆผ์€ ๋ฐ˜๋ณต์ž ์ŠคํŠธ๋ฆผ์€ ์ปฌ๋ ‰์…˜(๋ฐฐ์—ด ํฌํ•จ)์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฐธ์กฐํ•ด์„œ ๋žŒ๋‹ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ณต์ž์ด๋‹ค. ๋žŒ๋‹ค์‹, ์ŠคํŠธ๋ฆผ ๋‘˜ ๋‹ค ์ž๋ฐ” 8๋ถ€ํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 8์ด์ „์—๋Š” Iterator๋ฅผ ์‚ฌ์šฉํ•จ ํŠน์ง• 1. ๋žŒ๋‹ค์‹์œผ๋กœ ์š”์†Œ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ŠคํŠธ๋ฆผ์ด ์ œ๊ณตํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์š”์†Œ ์ฒ˜๋ฆฌ ๋ฉ”์†Œ๋“œ๋Š” ํ•จ์ˆ˜์  ์ธํ„ฐํŽ˜์ด์Šค ๋งค๊ฐœํƒ€์ž…์„ ๊ฐ€์ง„๋‹ค. ๋งค๊ฐœ๊ฐ’์œผ๋กœ ๋žŒ๋‹ค์‹ ๋˜๋Š” ๋ฉ”์†Œ๋“œ ์ฐธ์กฐ๋ฅผ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค. ์™ธ๋ถ€ ๋ฐ˜๋ณต์ž(ex. Iterator) - ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋กœ ์ง์ ‘ ์ปฌ๋ ‰์…˜ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์š”์ฒญํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ ํŒจํ„ด ๋‚ด๋ถ€ ๋ฐ˜๋ณต์ž - ๊ฐœ๋ฐœ์ž ์ฝ”๋“œ๊ฐ€ ๋žŒ๋‹ค์‹์ด๋˜๊ณ , ์ปฌ๋ ‰์…˜์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์š”์†Œ๋“ค์„ ๋ฐ˜๋ณตํ•˜๋Š” ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•ด์„œ ๋žŒ๋‹ค์‹์„ ์š”์†Œ๋งˆ๋‹ค ์ ์šฉ์‹œํ‚ด. - ์ปฌ๋ ‰์…˜ ๋‚ด๋ถ€์—์„œ ์š”์†Œ๋“ค์„ ๋ฐ˜๋ณต.. 2021. 7. 28.
[Java] ์ œ๋„ค๋ฆญ(Generic) ๊ฐœ๋… ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์™œ ํ•„์š”ํ• ๊นŒ? 1. ์ค‘๋ณต๋˜๋Š” ์†Œ์Šค๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ์†Œ์Šค์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ทน๋Œ€ํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ณ„๋กœ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•  ํ•„์š” ์—†์ด ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์—์„œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ๋ฐ”๊ฟ” ์กฐ๋ฆฝํ•˜๋“ฏ ์ฝ”๋“œ ์žฌํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 2. ๊ฐ์ฒด ์ƒ์„ฑ์‹œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ฐ์ดํ„ฐํƒ€์ž…์— ๋Œ€ํ•œ ์ œํ•œ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ํšจ๊ณผ → ์ปดํŒŒ์ผ ํƒ€์ž„์— ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‚˜ ํƒ€์ž… ์บ์ŠคํŒ…(ํ˜•๋ณ€ํ™˜)์„ ์ œ๊ฑฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์„ฑ๋Šฅ ํ–ฅ์ƒ → ํ˜•๋ณ€ํ™˜์ด ํ•„์š”์—†๊ณ , ํƒ€์ž…์•ˆ์ •์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค. extends T(์ƒํ•œ ๊ฒฝ๊ณ„), ? super T(ํ•˜ํ•œ ๊ฒฝ๊ณ„), ?(์™€์ผ๋“œ ์นด๋“œ) ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œํ•œํ•˜๊ฒŒ ๋˜๋ฉด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์€ ์ƒ์† ๊ด€๊ณ„์—์„œ ์žˆ๋‹ค. ์ƒ์† ๊ด€๊ณ„์—์„œ ์ž์‹์€ ๋ถ€๋ชจ์˜ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.. 2021. 7. 28.
[Java] ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (Java Virtual Machine) JVM(Java Virtual Machine) Java๋กœ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ๋จธ์‹ . ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋œปํ•˜๋Š” ๋ง๋กœ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ฃผ์ฒด์ด๋‹ค. ์šด์˜์ฒด์ œ ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์œผ๋กœ Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๋Š” ๊ฒƒ ๋ฌผ๋ฆฌ์ ์ธ ์‹ค์ œ์˜ ๊ธฐ๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ ์ถ”์ƒ์ ์ธ ์žฅ์น˜์ด๋‹ค. ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ž˜์Šค ๋กœ๋”(Class Loader)๋ฅผ ํ†ตํ•ด ์ฝ์–ด ๋“ค์—ฌ์„œ ์ž๋ฐ” API์™€ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์—์„œ javac ๋ช…๋ น์„ ํ†ตํ•ด ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class)๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ JVM์ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๋ฉฐ ์‹คํ–‰ํ•œ๋‹ค. JVM ๊ตฌ์„ฑ์š”์†Œ 1. Class Loader JVM์€ ๋Ÿฐํƒ€์ž„์‹œ์— ์ฒ˜์Œ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ํ•ด๋‹น.. 2021. 7. 28.
[Spring] DI(Dependency Injection) ๊ฐœ๋… DI๋Š” Dependency Injection ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์ด๋ผ๋Š” ๋œป์œผ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ†ต์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค. '๊ฐ์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›๋Š”๋‹ค'๋Š” ๊ฒƒ์€ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋„˜๊ฒจ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ์Šค์Šค๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ œ์–ด๊ถŒ์„ (์Šคํ”„๋ง์—) ์œ„์ž„ํ•˜์—ฌ (์Šคํ”„๋ง์ด) ๋งŒ๋“ค์–ด ๋†“์€ ๊ฐ์ฒด๋ฅผ ๋„˜๊ฒจ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๊ณ , ๋Ÿฐํƒ€์ž„์‹œ์— ์˜์กด๊ด€๊ณ„๊ฐ€ ๊ฒฐ์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. SOLID ์›์น™์—์„œ O ์— ํ•ด๋‹นํ•˜๋Š” Open Closed Principle ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด์„œ ๋””์ž์ธ ํŒจํ„ด ์ค‘ ์ „๋žตํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ƒ์„ฑ์ž ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ „๋žตํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. OCP : ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™ ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜์กด๊ด€๊ณ„ ์ฃผ์ž…์—๋Š” ํฌ๊ฒŒ .. 2021. 5. 2.
[Spring] PSA (Portable Service Abstraction) ์Šคํ”„๋ง 3๋Œ€ ํŠน์ง•(IoC/DI, AOP, PSA) ์ค‘ PSA์— ์•Œ์•„๋ณธ๋‹ค. ๊ฐœ๋… PSA๋Š” Portable Service Abstraction์œผ๋กœ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์„œ๋น„์Šค ์ถ”์ƒํ™”์ด๋‹ค. ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ์ ์šฉํ•ด ๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ๋‹ค์ˆ˜์˜ ๊ธฐ์ˆ ์„ ๊ณตํ†ต์˜ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ๊ฒƒ์„ ์„œ๋น„์Šค ์ถ”์ƒํ™”๋ผ๊ณ  ํ•œ๋‹ค. ์ถ”์ƒํ™” ๊ณ„์ธต์„ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ค ๊ธฐ์ˆ ์„ ๋‚ด๋ถ€์— ์ˆจ๊ธฐ๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํŽธ์˜์„ฑ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์„œ๋น„์Šค ์ถ”์ƒํ™”(Service Abstraction)์ด๋ผ ํ•œ๋‹ค. ์„œ๋น„์Šค ์ถ”์ƒํ™”(Service Abstraction)๋กœ ์ œ๊ณต๋˜๋Š” ๊ธฐ์ˆ ์„ ๋‹ค๋ฅธ ๊ธฐ์ˆ  ์Šคํƒ์œผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ํ™•์žฅ์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์ด Portable Service Abstraction์ด๋‹ค. Spring์€ Spring Web MVC, Spring Transacti.. 2021. 5. 2.