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

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์œˆ๋„์šฐ, WSL, JVM ์œผ๋กœ ์–•๊ฒŒ ์•Œ์•„๋ณด๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜์™€ ํŒŒ์ผ์‹œ์Šคํ…œ

โญ์„œ๋ก 

์ œ ์šด์˜์ฒด์ œ๋ฅผ ๋จผ์ € ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.
์ €์˜ ์šด์˜์ฒด์ œ๋Š” Window ์ด๋ฉฐ, ์œˆ๋„์šฐ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” wsl2 ๋ฅผ ํ†ตํ•ด Ubuntu ๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.  
  
์ด ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ์Šค์ฟผ๋“œ์˜ ๋ฆฌ๋ˆ…์Šค ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋ฐ ํฌ๋กค๋ง ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ, ์ œ ์œˆ๋„์šฐ์—์„œ IDE๋กœ ํฌ๋กค๋ง ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํ›„์— wsl ์— ์ ‘์†ํ•ด์„œ Ubuntu ํ™˜๊ฒฝ์—์„œ crontab ์„ ์‚ฌ์šฉํ•ด์„œ ํฌ๋กค๋ง์„ ์ž๋™ํ™” ํ•  ๊ณ„ํš์ด์—ˆ๊ณ , ํฌ๋กค๋ง ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์…€๋ ˆ๋‹ˆ์›€์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ์˜๋ฌธ์ด ์ƒ๊ฒผ๊ณ , ์˜๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ์ฐพ์•„๊ฐ€๋ฉฐ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

1. ์œˆ๋„์šฐ์™€ wsl ์€ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๊ณต์œ ํ•˜์ง€๋งŒ, ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ์™œ ์„œ๋กœ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ธ์ง€ ?? 
2. OS ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์ด๋ž‘ Java ๋กœ setProperty ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ๊ฑด์ง€ ??

โญ๋ณธ๋ก 

wsl ๋ž€?

 

wsl ์€ Windows Subsystem for Linux ๋ž€ ํ’€๋„ค์ž„์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์œˆ๋„์šฐ10 ์ดํ›„์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, Linux๋ฐฐํฌํŒ(Ubuntu, Debian, Fedora)์„ Window ์‚ฌ์šฉ์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์™œ wsl ๊ฐ€ ๋‚˜์™”์„๊นŒ์š”?

์ถœ์ฒ˜ : ์ฝ”๋“œ์Šค์ฟผ๋“œ ๋ฃจ์นด์Šค

์šด์˜์ฒด์ œ์˜ ์—ญ์‚ฌ๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด Unix์™€ Linux ๋Š” ์ƒ๊ธด์ง€ ์˜ค๋ž˜ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ์— ๋ฐ˜ํ•ด ์œˆ๋„์šฐ 8์€ ๋น„๊ต์  ์ตœ๊ทผ์—์„œ์•ผ ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ์ฃ .

๊ทธ๋ ‡๋‹ค๋ฉด, ๋‹น์—ฐํžˆ ์ˆ˜๋งŽ์€ ๊ธฐ์ˆ ๋“ค์ด Unix / Linux ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด ์กŒ์„ ๊ฒƒ์ด๊ณ , ์˜ค๋ž˜๋œ ์—ญ์‚ฌ๋งŒํผ ์•ˆ์ •์„ฑ์ด ๋›ฐ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์œˆ๋„์šฐ ์‚ฌ์šฉ์ž๋„ ๊ฐ€๋ณ๊ฒŒ Unix์™€ Linux ๋ฐฐํฌํŒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ฒผ๊ณ , Microsoft ๊ฐ€ ์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ์œ„ํ•ด wsl ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ wsl ์€ ๋ฌด์—‡์„ ์ง€์›ํ•˜๋‚˜์š”?
  1. ์œˆ๋„์šฐ์™€ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ™์€ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์œˆ๋„์šฐ์—์„œ ์ž‘์—…ํ•œ ํ•œ ํŒŒ์ผ๋‹น wsl2 ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ๋ฐฉํ™”๋ฒฝ ์—ด์–ด์ฃผ๊ณ , scp ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๊ณ , ๋””๋ ‰ํ† ๋ฆฌ๋„ ๊ณ„์† ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์„ ๊ฒƒ์ธ๋ฐ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๊ณต์œ ํ•จ์œผ๋กœ์จ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•ด์ค๋‹ˆ๋‹ค.
  2. wsl์˜ ์œˆ๋„์šฐ์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ ค๋ฉด CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ(ํŒŒ์ผ์‹œ์Šคํ…œ), ๋„คํŠธ์›Œํฌ๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • wsl ์ด ์œˆ๋„์šฐ์™€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ(ํŒŒ์ผ์‹œ์Šคํ…œ), ๋„คํŠธ์›Œํฌ๋ฅผ ์–ด๋””์„œ ๊ตฌํ• ๊นŒ์š”..? ์ฐจ๋ผ๋ฆฌ wsl ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํŽธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  3. ์œˆ๋„์šฐ์™€ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ๊ณต์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.(ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)
    • wsl ๊ฐ€ ํƒ„์ƒํ•œ ๋ฐฐ๊ฒฝ์„ ์ƒ๊ฐํ•ด ๋ณด๋ฉด, Unix / Linux ๋ฐฐํฌํŒ์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • linux ๊ธฐ๋ฐ˜์˜ docker, aws ...
      • crontab
    • ์‹คํ–‰ ํ™˜๊ฒฝ์ด ๊ฐ™๋‹ค๋Š” ๋ง์€ wsl ์—์„œ ์‹คํ–‰ํ•˜๋‚˜ ์œˆ๋„์šฐ์—์„œ ์‹คํ–‰ํ•˜๋‚˜ ์ฐจ์ด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
      • ํ”„๋กœ๊ทธ๋žจ์„ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋‚˜ ์œˆ๋„์šฐ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋‚˜ ๊ฐ™์œผ๋ฉด wsl ์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด, 1๋ฒˆ์— ๋Œ€ํ•ด ๋‹ต์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ๋œ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์˜ ๊ธฐ์ˆ ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ , ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ณต์œ ํ•˜์—ฌ ํŒŒ์ผ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•˜๋Š” ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ณ ์ž ํ•œ Microsoft ์˜ ๋…ธ๋ ฅ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜, ๋…๋ฆฝ๋œ ์‹คํ–‰ ํ™˜๊ฒฝ์˜ ๋‹จ์ ์€ A ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด, B ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ํฌ๋กฌ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์œˆ๋„์šฐ(OS) ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋“ฑ๋กํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋กค๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์œˆ๋„์šฐ์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€๋งŒ, wsl ์—์„œ๋Š” ํฌ๋กฌ๋“œ๋ผ์ด๋ฒ„๊ฐ€ wsl ์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•„์„œ ํฌ๋กค๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ•œ ๋ฒˆ๋งŒ ๋“ฑ๋กํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Aํ™˜๊ฒฝ, Bํ™˜๊ฒฝ ๋‘ ๊ตฐ๋ฐ์—์„œ ์‹คํ–‰๋  ์ˆœ ์—†์„๊นŒ์š”?

JVM์˜ ์žฅ์ 

 

์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„œ๋กœ ๋‹ค๋ฅธ OS ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ OS ๋งˆ๋‹ค ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ์ผ์€ ๋งค์šฐ ๊ท€์ฐฎ์€ ์ผ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์œˆ๋„์šฐ์™€ wsl , ๋˜๋Š” ec2์— JDK ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ ์™ธ์—๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ด ์ค€ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š”, ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ JVM(Java Virtual Machine) ์ด๋ž€ ๋…๋ฆฝ๋œ ์‹คํ–‰ ํ™˜๊ฒฝ ์œ„์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

JVM ๋•๋ถ„์— ์šฐ๋ฆฌ๋Š” OS์— ์ƒ๊ด€์—†์ด ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
OS์— ์ƒ๊ด€์—†์ด ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์€ JVM๊ณผ OS๋Š” ๋‹ค๋ฅธ ์‹คํ–‰ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์‹คํ–‰ ํ™˜๊ฒฝ์ด๋ž€ ๊ฒƒ์€ JVM ๋‚ด์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜์™€ OS์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
๋งˆ์น˜, wsl ์˜ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ์œˆ๋„์šฐ์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์ด ๋‹ฌ๋ผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋…๋ฆฝ์ ์ธ ๊ฒƒ์ฒ˜๋Ÿผ์š”.

 ๊ทธ๋ž˜์„œ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ OS๊ฐ€ ์•„๋‹Œ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(JVM)์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•ด์ฃผ๋ฉด OS๊ฐ€ ๋‹ค๋ฅธ ์–ด๋– ํ•œ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ๋„ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ๋™ํ•  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ System.setProperty ์™€ IDE(์ธํ…”๋ฆฌ์ œ์ด)์˜ ๋„์›€์„ ๋ฐ›์•„ Edit Configuration ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณณ์— ๋“ฑ๋กํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” JVM ์ธ์Šคํ„ด์Šค ์ „์ฒด ๋ ˆ๋ฒจ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, OS์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด System.getenv ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ , ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๋ ˆ๋ฒจ์— ์ ์šฉํ•œ๋‹ค๋ฉด ํ”ํžˆ ์•Œ๊ณ  ์žˆ๋Š” application.properties ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ด ๊ฐ’์„ Environment ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ฅผ ํ†ตํ•ด, 2๋ฒˆ์— ๋Œ€ํ•ด ๋‹ต์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OS์™€ JVM ์€ ์„œ๋กœ ๋…๋ฆฝ๋œ ์‹คํ–‰ ํ™˜๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— OS์— ๋“ฑ๋กํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜์™€ System.setProperty ๋Š” ๋‹ค๋ฅด๋‹ค.
OS์— ๋“ฑ๋กํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ System.getenv ๋กœ ๊บผ๋‚ด์˜ค์ง€ ์•Š๋Š” ์ด์ƒ, JVM ์—์„œ OS์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

์ด ๊ธ€์„ ์ฝ๊ณ , ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ๋ ˆ๋ฒจ์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ฐ€๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!