JiwonDev

#0 ์Šคํ”„๋ง, ์ž๋ฐ”์˜ ๋ด„์ด ์˜ค๊ธฐ๊นŒ์ง€

by JiwonDev

ํ•ด๋‹น ๊ธ€์€ ๊น€์˜ํ•œ๋‹˜์˜ ์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

# EJB ์ง€์˜ฅ

์ž๋ฐ”๊ฐ€ ๋‚˜์˜จ 2000๋…„๋Œ€, ๊ทธ ๋‹น์‹œ ์ž๋ฐ” ์ง„ํ˜•์—์„œ๋Š” EJB (Enterprise Java Beans) ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ์ˆ  ์ŠคํŽ™์œผ๋กœ ์ œ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค. EJB๋Š” "๋Œ€๊ทœ๋ชจ์ด๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•œ ๋ถ„์‚ฐ ๊ฐ์ฒด ํ™˜๊ฒฝ"์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋“ฑ์žฅํ–ˆ์—ˆ๊ณ , ๊ทธ ๋‹น์‹œ EJB ์•ˆ์— ๋…น์•„๋“  ๊ฐ์ฒด์ง€ํ–ฅ์„ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ก ๋“ค์€ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

 

[ WebServer - EJB - DB ]์˜ 3๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ UI๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ›๋Š” ๊ฐœ๋…, ์žฌ์‚ฌ์šฉ์„ฑ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ, ๋‹ค๋ฅธ ๊ณณ์— ๋–จ์–ด์ง„ EJB ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š”๋“ฑ ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•œ๋‹ค๋ฉด EJB๊ฐ€ ์ •๋ง '๋งค๋ ฅ์ ์œผ๋กœ' ๋ณด์˜€์Šต๋‹ˆ๋‹ค. 

 

์ทจ์ง€๋Š” ์ข‹์•˜์œผ๋‚˜, ์„œ๋น„์Šค๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๋ณด๋‹ค EJB ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ ๊ธฐ๋ณธ ์ฝ”๋“œ๋“ค์ด ๋„ˆ๋ฌด ๋งŽ๋‹ค๋Š” ํฐ ๋‹จ์ ๊ณผ ํ•จ๊ป˜ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์„ ์ •๋ง ๋จธ๋ฆฌ์•„ํ”„๊ฒŒ ๋งŒ๋“ค์—ˆ์ฃ .

  • EJB๋กœ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋ฒผ์šด ๊ฐ์ฒด๋กœ๋„ ๊ฐ€๋Šฅํ•œ ์ผ์„ ๊ตณ์ด EJB๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ณ ๊ฐ€์˜ ์ž๋ฐ” WAS ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง•๊ณผ ๋ฐฐํฌ๊ฐ€ ์–ด๋ ค์šด๊ฑด ๋ค.
  • ๋ฒค๋” ์‚ฌ๋งˆ๋‹ค EJB ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ์ด ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์˜ ์„ค์ •๊ณผ ๋ณ€๊ฒฝ์ด ์ƒ๋‹นํžˆ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.
  • ์œ„์˜ 3๊ฐ€์ง€ ๋ฌธ์ œ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ ์ž์ฒด๊ฐ€ ํŠน์ • ๊ธฐ์ˆ , ์ปจํ…Œ์ด๋„ˆ์— ์ข…์†์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์žฌ์‚ฌ์šฉ์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค.
  • EJB ์ฝ”๋“œ์˜ ์ƒ์‚ฐ์„ฑ, ์œ ์ง€๋ณด์ˆ˜๋Š” ์ตœ์•…์ด์—ˆ๊ณ  EJB๊ฐ€ ๊ฐ€์ง„ ๊ฐœ๋…์€ ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ”์ฝ”๋“œ๋กœ ์ถฉ๋ถ„ํžˆ ๋Œ€์ฒด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํŠนํžˆ DB ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จํ•ด์„œ๋Š”, ์ด๊ฒŒ ์ •๋ง ๊ธฐ์—…์—์„œ ๋งŒ๋“  ๊ธฐ์ˆ ์ด ๋งž๋‚˜ ์‹ถ์„์ •๋„๋กœ ๋Š๋ฆฌ๊ณ  ์•ˆ๋˜๋Š” ๊ฒƒ์ด ๋งŽ์•˜๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์‹ค๋ฌด ๊ฐœ๋ฐœ์ž๋“ค์ด EJB ์ง€์˜ฅ์—์„œ ์ฝ”๋”ฉํ• ๋ฐ”์— ๋‚ด๊ฐ€ ์ง์ ‘ ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ”์ฝ”๋“œ๋กœ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฒ ๋‹ค. ๋ผ๊ณ  ๋งํ•˜๋ฉฐ ์ˆœ์ˆ˜ ์ž๋ฐ”๋ฅผ ์ด์šฉํ•œ ๊ฐœ๋ฐœ์šฉ ๋ฐฉ๋ฒ•๋ก ๊ณผ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ๋‚˜์˜ค๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.


# Java์˜ ๋Œ€์ฒ˜, EJB์˜ ๋ชฐ๋ฝ

EJB๋Š” ๋„ˆ๋ฌด๋‚˜ ๊ตฌ๋ ธ๊ธฐ์— ๋ฒ„๋ ค์ง€๋Š”๊ฑด ๋‹น์—ฐํ•œ ์ˆ˜์ˆœ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ Java ์ง„ํ˜•์—์„œ ์ด๋Œ€๋กœ๊ฐ€๋‹ค๊ฐ„ Java๊ฐ€ ๋งํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์— EJB๊ฐ€ ๊ตฌ๋ฆฐ ๊ฒƒ์„ ์ธ์ •ํ•˜๊ณ , Hibernate์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๋ฐ๋ ค์™€ ํ•ด๋‹น ๊ธฐ์ˆ ์„ ์ž๋ฐ”์˜ ํ‘œ์ค€์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์„ ์ด๋ฆ„์„ ๋ฐ”๊ฟ” 2006๋…„์— ์ •์‹์ถœ์‹œํ•œ๊ฒƒ์ด Java Persistence API, ๋ฐ”๋กœ JPA ์ด๋‹ค.

2021.06.13 - [Backend/JDBC & JPA] - #1 JPA ๊ฐœ์š”

 

๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” 2003๋…„์— ๋‹น์‹œ ์—„์ฒญ ์œ ๋ช…ํ–ˆ๋˜ ์ž๋ฐ” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ๋ฐœ์ž๋“ค(์œ ๊ฒ ํœ ๋กœ, ์–€ ์นด๋กœํ”„)์ด ๋กญ ์กด์Šจ์„ ์˜์ž…ํ•˜์—ฌ ์ฑ…์˜ ์ฃผ์š” ๊ฐœ๋…์„ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•œ ์ž๋ฐ” ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์ž๊ณ  ์ œ์•ˆํ•˜์˜€๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ Spring Framework ์˜ ์‹œ์ดˆ์˜€๋‹ค. ๊ทธ ๋‹น์‹œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ƒ๋‹นํžˆ ํ˜์‹ ์ ์˜€๋Š”๋ฐ, ์ˆœ์ˆ˜ํ•œ ์˜คํ”ˆ ์†Œ์Šค๋กœ ์šด์˜ํ•˜๋‹ค๋ณด๋‹ˆ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์› ๊ณ  ์•„์‰ฌ์šด์ ์ด ๋งŽ์•˜๊ธฐ์— 2009๋…„์— VMware ํšŒ์‚ฌ๊ฐ€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ธ์ˆ˜ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. (๋ผ์ด์„ ์Šค๋Š” ๊ทธ๋Œ€๋กœ Apache License 2.0 ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์œ ์ง€ํ•˜์˜€๋‹ค.)

 

์ฐธ๊ณ ๋กœ Spring์ด๋ผ๋Š” ์ด๋ฆ„์€ ์–€ ์นด๋กœํ”„๊ฐ€ EJB๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ง€์˜ฅ๊ฐ™์€ ๊ฒจ์šธ์„ ๋๋‚ผ, ์ƒˆ๋กœ์šด ๋ด„(Spring)์ด๋ผ๋Š” ์˜๋ฏธ๋กœ ์ง€์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํ˜„์žฌ(2021)์—๋„ ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ ์ฝ”๋“œ๋ฅผ ์œ ๊ฒ ํœ ๋Ÿฌ, ๋กญ ์กด์Šจ, ์–€ ์นด๋กœํ”„๊ฐ€ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค.

2010๋…„ ์ดํ›„ ์Šคํ”„๋ง์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”, ๋ฐœ์ „ํ–ˆ๋Š”๊ฐ€๋Š” ๋‚˜์ค‘์— ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

 

์ฐธ๊ณ ๋กœ ์Šคํ”„๋ง์ด ํ˜„์—…์— ์‚ฌ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ•œ ๋•Œ๋Š” 2006๋…„์ธ๋ฐ, ๊ทธ๋•Œ ๋‹น์‹œ ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋“ค์€ SSH๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ตฌ์„ฑ์œผ๋กœ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋‹ค. SSH๋ž€ ์Šคํ”„๋ง ์ฝ”์–ด(Spring) + ์ŠคํŠธ๋Ÿฟ์ธ (Strutcs) + ํ•˜์ด๋ฒ„๋„ค์ดํŠธ (Hibernate) ๋กœ ๊ตฌ์„ฑํ•˜์˜€๊ณ  ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” DI์™€ AOP ๊ธฐ๋Šฅ์„ ์ค‘์‹ฌ์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ๋‚˜์˜ค๋ฉฐ ์ŠคํŠธ๋Ÿฟ์ธ ์˜ ์‚ฌ์šฉ๋ฅ ์ด ์ค„๋‹ค๊ฐ€, 2013๋…„์— ๊ณต์‹ ์ง€์›์ด ์ข…๋ฃŒ๋˜์—ˆ๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ŠคํŠธ๋Ÿฟ์ธ  -> ์Šคํ”„๋ง MVC or ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›ค์œผ๋กœ ๋„˜์–ด์˜ค๊ฒŒ ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ ์ „์„ธ๊ณ„์ ์œผ๋กœ ์ž๋ฐ” ๊ฐœ๋ฐœ์— ์Šคํ”„๋ง, JPA์˜ ์‚ฌ์šฉ๋ฅ ์€ ๋†’์•˜์ง€๋งŒ ํ•œ๊ตญ๊ณผ ์ค‘๊ตญ์˜ ๊ฒฝ์šฐ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋‹ค์‹ถ์ด ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์‹ ๊ธฐ์ˆ ์— ๋ณด์ˆ˜์ ์ธ ์ž…์žฅ๋„ ์žˆ๊ฒ ์ง€๋งŒ, ์ฐธ๊ณ ํ•  ๊ณต์‹๋ฌธ์„œ๊ฐ€ ์ „๋ถ€ ์˜๋ฌธ์ด๋ผ ์–ด๋ ค์›€๋„ ๋งŽ์•˜๋‹ค๊ณ ํ•œ๋‹ค. ํ•œ๊ตญ์—์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ˜•์„ฑ๋˜๊ณ  ๊ธฐ์ˆ ์„ ๋ฐ›์•„๋“ค์ด๊ธฐ ์‹œ์ž‘ํ•œ๊ฒŒ 2015๋…„ ๋ฌด๋ ต์ด๋‹ค. 

 


# Spring Framework ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ

์Šคํ”„๋ง์ด ๊ฐ€์ง„ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์€, ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ DB๋ฅผ ํŽธํ•˜๊ฒŒ ์ ‘๊ทผํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์ ์œผ๋กœ ์„ค๊ณ„ํ•ด์„œ ์–ป๋Š” ์ด์ ์ผ ๋ฟ์ด๊ณ  ์Šคํ”„๋ง์˜ ๋ณธ์งˆ์€ '์ˆœ์ˆ˜ํ•œ Java๋กœ ์ข‹์€ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์„ค๊ณ„ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ' ์ด๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋กญ ์กด์Šจ์˜ ์ฑ…์— ์žˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐœ๋…๋“ค์„ ๋„์ž…ํ•˜์—ฌ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๊ณ ์žˆ๋‹ค. 

  • ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ๋กœ์„œ ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌ
    - ๊ฐ๊ฐ์˜ ๊ฐ์ฒด ์ƒ์„ฑ, ์†Œ๋ฉธ๊ณผ ๊ฐ™์€ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ์Šคํ”„๋ง์œผ๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

  • POJO(Plain Old Java Object) ๋ฐฉ์‹์˜ ํ”„๋ ˆ์ž„์›Œํฌ
    - ์ผ๋ฐ˜์ ์ธ J2EE ํ”„๋ ˆ์ž„์›Œํฌ (EJB)์— ๋น„ํ•ด ๊ตฌํ˜„์„ ์œ„ํ•ด ํŠน์ •ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ƒ์†์„ ๋ฐ›์„ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ฆ‰ ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ๊ทธ๋Œ€๋กœ ์ง€์›ํ•˜๊ธฐ์— ์šฉ์ดํ•˜๊ณ  ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ณ๋‹ค.

  • ์ œ์–ด ๋ฐ˜์ „(๋˜๋Š” ์ œ์–ด์˜ ์—ญ์ „)(IoC: Inversion of Control)์„ ์ง€์›
    - ์ปจํŠธ๋กค์˜ ์ œ์–ด๊ถŒ์ด ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋ ˆ์ž„์›Œํฌ์— ์žˆ์–ด์„œ ํ•„์š”์— ๋”ฐ๋ผ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉ์ž์˜ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

  • ์˜์กด์„ฑ ์ฃผ์ž…(DI: Dependency Injection)์„ ์ง€์›
    - ๊ฐ๊ฐ์˜ ๊ณ„์ธต์ด๋‚˜ ์„œ๋น„์Šค๋“ค ๊ฐ„์— ์˜์กด์„ฑ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์ค€๋‹ค.

  • ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(AOP: Aspect-Oriented Programming)์„ ์ง€์›
    - ํŠธ๋ž™์žญ์…˜์ด๋‚˜ ๋กœ๊น…, ๋ณด์•ˆ๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์—์„œ ๊ณตํ†ต์  ๊ธฐ๋Šฅ์˜ ๊ฒฝ์šฐ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ™•์žฅ์„ฑ์ด ๋†’์Œ
    - ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์— ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ์‹ธ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    - ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์Šคํ”„๋ง์—์„œ ์ง€์›๋˜๊ณ  ์žˆ๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•˜๊ธฐ๋„ ์šฉ์ดํ•˜๋‹ค.

  • ์Šคํ”„๋ง์˜ ๊ธฐ์ˆ ๋“ค์€ 20์—ฌ๊ฐœ์˜ ๋ชจ๋“ˆ๋กœ ์„ธ๋ถ„ํ™” ๋˜์–ด์žˆ๊ณ  ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์˜ ํ†ตํ•ฉ์ด ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ