๐ŸŒฑ Spring Boot ์‹œ์ž‘ํ•˜๊ธฐ 18- Layer Architecture ๊ฐœ๋… ์ •๋ฆฌ

๊น€์„ธํ˜„ยท2025๋…„ 10์›” 23์ผ

Spring

๋ชฉ๋ก ๋ณด๊ธฐ
18/19

๋‚ ์งœ:2025-10-23


ํ•™์Šต ๋ชฉํ‘œ

-3 Layer Architecture ๊ตฌ์กฐ ์ดํ•ด
-Controller, Service, Repository ๊ฐ ๊ณ„์ธต์˜ ์—ญํ• ๊ณผ ์ฑ…์ž„ ํŒŒ์•…
-๊ณ„์ธต ๊ฐ„ ํ†ต์‹  ๊ทœ์น™ ์ดํ•ด
-DTO(Data Transfer Object) ๊ฐœ๋… ์ดํ•ด


โœ… 3 Layer Architecture๋ž€?

๐Ÿ”น3 Layer Architecture(3๊ณ„์ธต ๊ตฌ์กฐ) ๋Š”
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ญํ• ์— ๋”ฐ๋ผ 3๊ฐœ์˜ ๋…ผ๋ฆฌ์  ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

์ด ๊ตฌ์กฐ๋Š” ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ, ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ํ•ต์‹ฌ์ ์ธ ์„ค๊ณ„ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๐Ÿ”น 3๊ฐœ์˜ ์ฃผ์š” ๊ณ„์ธต

๊ณ„์ธต๋‹ค๋ฅธ ์ด๋ฆ„์—ญํ• 
Controller LayerPresentation Layer์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณ„์ธต
Service LayerBusiness Layer / Application Layer๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(ํ•ต์‹ฌ ๊ธฐ๋Šฅ)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณ„์ธต
Repository LayerData Access Layer๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ณ„์ธต

โœ… 3 Layer Architecture์˜ ๋ชฉ์ 

๐Ÿ”น ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ
โ†’ ๊ฐ ๊ณ„์ธต์ด ๋งก์€ ์ผ๋งŒ ์ˆ˜ํ–‰

๐Ÿ”น ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด์„ฑ
โ†’ ํ•œ ๊ณ„์ธต ์ˆ˜์ • ์‹œ ๋‹ค๋ฅธ ๊ณ„์ธต ์˜ํ–ฅ ์ตœ์†Œํ™”

๐Ÿ”น ๊ฐ€๋…์„ฑ ๋ฐ ์ดํ•ด๋„ ํ–ฅ์ƒ
โ†’ ์—ญํ• ์ด ๋ช…ํ™•ํ•ด ์ฝ”๋“œ ํ๋ฆ„ ํŒŒ์•…์ด ์‰ฌ์›€

๐Ÿ”น ํ…Œ์ŠคํŠธ ์šฉ์ด
โ†’ ๊ฐ ๊ณ„์ธต ๋‹จ์œ„๋กœ ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ

๐Ÿ”น ํ™•์žฅ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ
โ†’ ํŠน์ • ๊ณ„์ธต๋งŒ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ


โœ… ๊ฐ ๊ณ„์ธต์˜ ์—ญํ• 

1๏ธโƒฃ Controller Layer**

์‚ฌ์šฉ์ž ์š”์ฒญ(Request) ์„ ๋ฐ›์•„ *์‘๋‹ต(Response) *์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณ„์ธต
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž…๊ตฌ ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ํ•ด์•ผ ํ•  ์ผ
-HTTP ์š”์ฒญ ๋งคํ•‘ (@GetMapping, @PostMapping ๋“ฑ)
-์š”์ฒญ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ (@RequestParam, @RequestBody ๋“ฑ)
-์‘๋‹ต ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋ฐ ๋ฐ˜ํ™˜
-์˜ˆ์™ธ ์ฒ˜๋ฆฌ

๐Ÿ”น ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ผ
-๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ
-๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง์ ‘ ์ ‘๊ทผ


2๏ธโƒฃ Service Layer**

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ๊ณ„์ธต์œผ๋กœ,
โ€œ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€โ€๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ํ•ด์•ผ ํ•  ์ผ
-๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™ ๊ตฌํ˜„
-๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ
-์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์กฐํ•ฉ
-ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ (@Transactional)

๐Ÿ”น ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ผ
-HTTP ์š”์ฒญ/์‘๋‹ต ์ฒ˜๋ฆฌ
-SQL ์ฟผ๋ฆฌ ์ง์ ‘ ์ž‘์„ฑ


3๏ธโƒฃ Repository Layer**

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” ๊ณ„์ธต์œผ๋กœ,
๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น ํ•ด์•ผ ํ•  ์ผ
-CRUD(Create, Read, Update, Delete) ์—ฐ์‚ฐ ์ˆ˜ํ–‰
-์ฟผ๋ฆฌ ์ตœ์ ํ™”
-์—”ํ‹ฐํ‹ฐ(Entity) ๋งคํ•‘ ๊ด€๋ฆฌ

๐Ÿ”น ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ์ผ
-๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ
-HTTP ์‘๋‹ต ์ƒ์„ฑ


โœ… ๊ณ„์ธต ๊ฐ„ ํ†ต์‹  ๊ทœ์น™

๊ตฌ๋ถ„ํ—ˆ์šฉ ์—ฌ๋ถ€์„ค๋ช…
Controller โ†’ Serviceโœ… ํ—ˆ์šฉ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์„œ๋น„์Šค ๋กœ์ง์œผ๋กœ ์ „๋‹ฌ
Service โ†’ Repositoryโœ… ํ—ˆ์šฉ๋กœ์ง ์ˆ˜ํ–‰ ํ›„ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์š”์ฒญ
Controller โ†’ RepositoryโŒ ๊ธˆ์ง€๊ณ„์ธต์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ์ ‘๊ทผ์€ ๊ตฌ์กฐ๋ฅผ ๊นจ๋œจ๋ฆผ
Repository โ†’ ControllerโŒ ๊ธˆ์ง€ํ•˜์œ„ ๊ณ„์ธต์ด ์ƒ์œ„ ๊ณ„์ธต์„ ํ˜ธ์ถœํ•ด์„œ๋Š” ์•ˆ ๋จ

๐Ÿ“Œ ์ฆ‰, ์ƒ์œ„ ๊ณ„์ธต โ†’ ํ•˜์œ„ ๊ณ„์ธต ํ˜ธ์ถœ๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.


โœ… DTO (Data Transfer Object)

๐Ÿ”น DTO๋ž€?

๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ˆœ์ˆ˜ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋กœ,
๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”น DTO์˜ ์—ญํ• 
-Client โ†” Server ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
->SON ์š”์ฒญ/์‘๋‹ต์„ ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜

-๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ์ด๋™
->Controller โ†’ Service, Service โ†’ Repository ๋“ฑ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

-๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์—†์Œ
->์˜ค์ง ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๋งŒ ๋‹ด๋‹น


๐Ÿ”น ์˜ˆ์‹œ ๊ฐœ๋… ํ๋ฆ„

1.Client๊ฐ€ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก
2.Controller์—์„œ @RequestBody๋ฅผ ํ†ตํ•ด DTO๋กœ ๋งคํ•‘
3.DTO ๋ฐ์ดํ„ฐ๋ฅผ Service๋กœ ์ „๋‹ฌ
4.Service์—์„œ ์ฒ˜๋ฆฌ ํ›„ ๋‹ค์‹œ DTO๋กœ ์‘๋‹ต


๐Ÿงฉ ์ •๋ฆฌ

๊ตฌ๋ถ„ํ•ต์‹ฌ ํฌ์ธํŠธ
Controller์š”์ฒญ๊ณผ ์‘๋‹ต ์ฒ˜๋ฆฌ ๋‹ด๋‹น
Service๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋‹ด๋‹น
Repository๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐ ์ €์žฅ ๋‹ด๋‹น
DTO๋ฐ์ดํ„ฐ ์ „๋‹ฌ์šฉ ๊ฐ์ฒด (๋กœ์ง X)
ํ†ต์‹  ๊ทœ์น™์ƒ์œ„ โ†’ ํ•˜์œ„ ๊ณ„์ธต๋งŒ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
๊ตฌ์กฐ์  ์žฅ์ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ, ํ™•์žฅ์„ฑ ํ–ฅ์ƒ
profile
๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ•œ ๊ฑธ์Œ

0๊ฐœ์˜ ๋Œ“๊ธ€