โญ์๋ก
์ ์ด์์ฒด์ ๋ฅผ ๋จผ์ ์๊ฐํฉ๋๋ค.
์ ์ ์ด์์ฒด์ ๋ 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 ์ ๋ฌด์์ ์ง์ํ๋์?
- ์๋์ฐ์ ํ์ผ์์คํ
์ ๊ณต์ ํฉ๋๋ค.
- ๊ฐ์ ํ์ผ์์คํ ์ ์ง์ํ์ง ์๋๋ค๋ฉด ์๋์ฐ์์ ์์ ํ ํ ํ์ผ๋น wsl2 ๋ก ๋ณด๋ด๊ธฐ ์ํด ๋คํธ์ํฌ ๋ฐฉํ๋ฒฝ ์ด์ด์ฃผ๊ณ , scp ๋ช ๋ น์ด ์ฌ์ฉํ๊ณ , ๋๋ ํ ๋ฆฌ๋ ๊ณ์ ๊ด๋ฆฌํด์ผ ํ๋ ๋จ์ ์ด ์์ ๊ฒ์ธ๋ฐ ํ์ผ์์คํ ์ ๊ณต์ ํจ์ผ๋ก์จ ๋จ์ ์ ํด๊ฒฐํด์ค๋๋ค.
- wsl์ ์๋์ฐ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํฉ๋๋ค.
- ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ค๋ฉด CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ(ํ์ผ์์คํ ), ๋คํธ์ํฌ๊ฐ ํ์ํ ๊ฒ์ ๋๋ค.
- wsl ์ด ์๋์ฐ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ์ง ์๋๋ค๋ฉด CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ(ํ์ผ์์คํ ), ๋คํธ์ํฌ๋ฅผ ์ด๋์ ๊ตฌํ ๊น์..? ์ฐจ๋ผ๋ฆฌ wsl ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ํธํ๊ฒ ์ต๋๋ค.
- ์๋์ฐ์ ์คํ ํ๊ฒฝ์ ๊ณต์ ํ์ง ์์ต๋๋ค.(ํ๊ฒฝ ๋ณ์๋ฅผ ๊ณต์ ํ์ง ์์ต๋๋ค)
- wsl ๊ฐ ํ์ํ ๋ฐฐ๊ฒฝ์ ์๊ฐํด ๋ณด๋ฉด, Unix / Linux ๋ฐฐํฌํ์ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
- linux ๊ธฐ๋ฐ์ docker, aws ...
- crontab
- ์คํ ํ๊ฒฝ์ด ๊ฐ๋ค๋ ๋ง์ wsl ์์ ์คํํ๋ ์๋์ฐ์์ ์คํํ๋ ์ฐจ์ด๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค.
- ํ๋ก๊ทธ๋จ์ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ์คํํ๋ ์๋์ฐ ํ๊ฒฝ์์ ์คํํ๋ ๊ฐ์ผ๋ฉด wsl ์ ์ฌ์ฉํ ํ์๊ฐ ์์ ๊ฒ์ ๋๋ค.
- wsl ๊ฐ ํ์ํ ๋ฐฐ๊ฒฝ์ ์๊ฐํด ๋ณด๋ฉด, Unix / Linux ๋ฐฐํฌํ์ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
์ด๋ฅผ ํตํด, 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์ ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ด ๊ธ์ ์ฝ๊ณ , ํ๊ฒฝ๋ณ์๋ฅผ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ๊ณผ ์ํฅ์ ๋ผ์น๋ ๋ ๋ฒจ์ด ๋ค๋ฅด๋ค๋ ๊ฒ์ ์๊ณ ๊ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!