๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

    ๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜ (Layered Architecture)

    ๐Ÿ“™ 1. ๊ฐœ๋… ๊ณ„์ธตํ™” ์•„ํ‚คํ…์ฒ˜(Layered Architecture)๋Š” ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of concerns)์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ์„ ์œ ์‚ฌํ•œ ์ฑ…์ž„(๊ด€์‹ฌ)์„ ์ง€๋‹Œ Layer๋กœ ๋ถ„ํ•ดํ•˜๊ณ , ๊ฐ๊ฐ์˜ Layer๊ฐ€ ํ•˜์œ„ Layer์—๋งŒ ์˜์กดํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ด๋‹ค. ๐Ÿ“™ 2. ์‚ฌ์šฉ ๋ชฉ์  Layered Architecture๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ๋ ˆ์ด์–ด๋“ค์ด ํŠน์ • ๊ด€์‹ฌ์‚ฌ์™€ ๊ด€๋ จ๋œ ๊ฐœ์ฒด๋งŒ์„ ํฌํ•จํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•œ Layered Architecture์„ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉ์ ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋‹ค. ์ „์ฒด์ ์ธ ์‹œ์Šคํ…œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ˜๋‹ค. ํ•˜์œ„ ๊ณ„์ธต์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•จ์œผ๋กœ์จ ํ•ด๋‹น ๊ณ„์ธต์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ธ๋‹ค. ๊ฐ ๋ ˆ์ด์–ด์— ์„œ๋กœ ๋‹ค๋ฅธ ์ถ”์ƒํ™” ์ˆ˜์ค€์„ ๊ฐ€์ง„ ์ƒํƒœ์™€ ํ–‰๋™์„ ์œ„์น˜์‹œํ‚ด์œผ๋กœ์จ..

    CQS (Command Query Separation)

    CQS(Command Query Separation)์„ ์‚ดํŽด๋ณด๊ธฐ ์ „์—, ํ‘œ๋ฅผ ์ด์šฉํ•˜์—ฌ Command์™€ Query๋ฅผ ๋น„๊ตํ•ด ๋ณด๊ณ  CQS์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด์ž. ๐Ÿ“™ 1. Command & Query Command Query ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š”๊ฐ€? O X ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฐ€? X O ์˜ˆ์‹œ setter ๋ฉ”์„œ๋“œ getter ๋ฉ”์„œ๋“œ ๐Ÿ“™ 2. CQS CQS(Command Query Separation)๋Š” ๊ฐ์ฒด์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ Command์™€ Query ๋‘ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ Command ๋˜๋Š” Query ์ค‘์—์„œ ํ•˜๋‚˜์—๋งŒ ํ•ด๋‹นํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ๋ฉ”์„œ๋“œ๊ฐ€ Command ์ด๋ฉด์„œ ๋™์‹œ์— Query ์ผ์ˆ˜๋Š” ์—†๋‹ค. CQS์˜ ๋ชฉ์ ์€ ์ปค๋งจ๋“œ์™€ ์ฟผ๋ฆฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. CQS๋ฅผ ์ง€ํ‚ค๊ฒŒ ๋˜๋ฉด query ..

    ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ vs ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

    ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. ๐Ÿ“™ 1. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Object Oriented Programming, OOP) ๐Ÿ“Œ 1. ๊ฐœ๋… ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ๊ฐ์ฒด๋“ค์ด ๋ชจ์—ฌ์„œ ์ƒํ˜ธ ํ˜‘๋ ฅํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค. ๐Ÿ“Œ 2. ํŠน์ง• ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์˜ ํŠน์ง•์œผ๋กœ๋Š” ์บก์Šํ™”(Encapsulation), ์ƒ์†(Inheritance), ๋‹คํ˜•์„ฑ(Polymorphism), ์ถ”์ƒํ™”(Abstraction)๊ฐ€ ์žˆ๋‹ค. ๐Ÿ”Ž 1. ์บก์Šํ™”(Encapsulation) ๋‚ด๋ถ€๋ฅผ ์บก์Š์ฒ˜๋Ÿผ ๊ฐ์‹ธ์„œ ๊ทธ ๋‚ด๋ถ€๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ๋ณผ ์ˆ˜ ์—†๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค. ์‹ค์ œ๋กœ ๊ตฌํ˜„๋˜๋Š” ๋ถ€๋ถ„์„ ์™ธ๋ถ€๋กœ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ์ •๋ณด๋ฅผ ์€๋‹‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ”Ž 2..