๋์์ฑ ๋ฐ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ์กํฐ ๋ชจ๋ธ์ ํ์ํด ๋ณด์ธ์. ์ผ๋ญ๊ณผ ์์นด ๊ตฌํ, ๊ทธ ์ด์ , ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ฌธ์ ํด๊ฒฐ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์. ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ธ๋ก๋ฒ ๊ฐ์ด๋์ ๋๋ค.
์กํฐ ๋ชจ๋ธ: ์ผ๋ญ(Erlang)๊ณผ ์์นด(Akka)๋ฅผ ์ด์ฉํ ๋์์ฑ ๋ฐ ํ์ฅ์ฑ
์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ธ๊ณ์์ ์ฆ๊ฐํ๋ ์ํฌ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋์์๋ ๊ณผ์ ์ ๋๋ค. ์ค๋ ๋์ ๋ฝ๊ณผ ๊ฐ์ ์ ํต์ ์ธ ๋์์ฑ ์ ๊ทผ ๋ฐฉ์์ ๊ธ๋ฐฉ ๋ณต์กํด์ง๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค. ์กํฐ ๋ชจ๋ธ์ ๊ฐ๋ ฅํ ๋์์ ์ ๊ณตํ๋ฉฐ, ๋์์ฑ ๋ฐ ๋ถ์ฐ ์์คํ ์ ์ค๊ณํ๋ ๊ฒฌ๊ณ ํ๊ณ ์ฐ์ํ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ ์กํฐ ๋ชจ๋ธ์ ๋ํด ๊น์ด ํ๊ณ ๋ค์ด ๊ทธ ์์น์ ํ๊ตฌํ๊ณ , ๋ ๊ฐ์ง ์ฃผ์ ๊ตฌํ์ธ ์ผ๋ญ๊ณผ ์์นด์ ์ด์ ์ ๋ง์ถฅ๋๋ค.
์กํฐ ๋ชจ๋ธ์ด๋ ๋ฌด์์ธ๊ฐ?
์กํฐ ๋ชจ๋ธ์ ๋์์ฑ ์ปดํจํ ์ ์ํ์ ๋ชจ๋ธ์ ๋๋ค. ์ด๋ '์กํฐ'๋ฅผ ์ปดํจํ ์ ๊ธฐ๋ณธ ๋จ์๋ก ์ทจ๊ธํฉ๋๋ค. ์กํฐ๋ ๋น๋๊ธฐ์ ๋ฉ์์ง ํจ์ฑ์ ํตํด ์๋ก ํต์ ํ๋ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด์ ๋๋ค. ์ด ๋ชจ๋ธ์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋ณต์กํ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ํ์์ฑ์ ์ ๊ฑฐํ์ฌ ๋์์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
์กํฐ ๋ชจ๋ธ์ ํต์ฌ ์์น:
- ์กํฐ: ์ํ์ ๋์์ ์บก์ํํ๋ ๊ฐ๋ณ์ ์ด๊ณ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด์ ๋๋ค.
- ๋ฉ์์ง ํจ์ฑ: ์กํฐ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์์ผ๋ก์จ ํต์ ํฉ๋๋ค. ๋ฉ์์ง๋ ๋ถ๋ณ์ ๋๋ค.
- ๋น๋๊ธฐ ํต์ : ๋ฉ์์ง๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ ์ก๋๋ฉฐ, ์ด๋ ๋ฐ์ ์๊ฐ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋ ผ๋ธ๋กํน(non-blocking) ์ฐ์ฐ๊ณผ ๋์ ๋์์ฑ์ ์ด์งํฉ๋๋ค.
- ๊ฒฉ๋ฆฌ: ์กํฐ๋ ์์ ๋ง์ ๋น๊ณต๊ฐ ์ํ๋ฅผ ๊ฐ์ง๋ฉฐ ์๋ก ๊ฒฉ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์์์ ๋ฐฉ์งํ๊ณ ๋๋ฒ๊น ์ ๋จ์ํํฉ๋๋ค.
- ๋์์ฑ: ์ฌ๋ฌ ์กํฐ๊ฐ ๋์์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก, ์ด ๋ชจ๋ธ์ ๋ณธ์ง์ ์ผ๋ก ๋์์ฑ์ ์ง์ํฉ๋๋ค.
์กํฐ ๋ชจ๋ธ์ ๊ตฌ์ฑ ์์๊ฐ ์๋ก ๋ค๋ฅธ ๋จธ์ ์ ์์นํ๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด ํต์ ํ ์ ์๋ ๋ถ์ฐ ์์คํ ์ ๊ตฌ์ถํ๋ ๋ฐ ํนํ ์ ํฉํฉ๋๋ค. ์กํฐ๊ฐ ์๋ก๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ฅ์ ๋ก๋ถํฐ ๋ณต๊ตฌํ ์ ์์ผ๋ฏ๋ก ๋ด๊ฒฐํจ์ฑ์ ์ํ ๋ด์ฅ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ผ๋ญ: ์กํฐ ๋ชจ๋ธ์ ์ ๊ตฌ์
์ผ๋ญ์ ๋งค์ฐ ๋์ ๋์์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ๊ฐ์ถ ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํด ํน๋ณํ ์ค๊ณ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐ ๋ฐํ์ ํ๊ฒฝ์ ๋๋ค. 1980๋ ๋์ ์๋ฆญ์จ(Ericsson)์์ ํต์ ์ค์์น์ ์๊ตฌ ์ฌํญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์๋๋ฐ, ์ด ์ค์์น๋ค์ ๊ทน๋์ ์ ๋ขฐ์ฑ๊ณผ ์๋ง์ ๋์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฅ๋ ฅ์ด ํ์ํ์ต๋๋ค.
์ผ๋ญ์ ์ฃผ์ ํน์ง:
- ๋ด์ฅ ๋์์ฑ: ์ผ๋ญ์ ๋์์ฑ ๋ชจ๋ธ์ ์กํฐ ๋ชจ๋ธ์ ์ง์ ๊ธฐ๋ฐํฉ๋๋ค. ์ธ์ด ์์ฒด๊ฐ ์ฒ์๋ถํฐ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ํด ์ค๊ณ๋์์ต๋๋ค.
- ๋ด๊ฒฐํจ์ฑ: ์ผ๋ญ์ 'let it crash'(์ถฉ๋์ ํ์ฉํ๋ผ) ์ฒ ํ๊ณผ ๊ฐ๋ ํธ๋ฆฌ(supervision trees)๋ ์์คํ ์ ๋งค์ฐ ๊ฒฌ๊ณ ํ๊ฒ ๋ง๋ญ๋๋ค. ํ๋ก์ธ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์๋์ผ๋ก ์ฌ์์๋ ์ ์์ต๋๋ค.
- ํซ ์ฝ๋ ์ค์ํ: ์ผ๋ญ์ ์คํ ์ค์ธ ์์คํ ์ ์ค๋จํ์ง ์๊ณ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ด๋ ๊ณ ๊ฐ์ฉ์ฑ์ด ์๊ตฌ๋๋ ์์คํ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ถ์ฐ: ์ผ๋ญ์ ์ฌ๋ฌ ๋ ธ๋์์ ์ํํ๊ฒ ์๋ํ๋๋ก ์ค๊ณ๋์ด ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
- OTP (Open Telecom Platform): OTP๋ ๋ณต์กํ ์ผ๋ญ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋จ์ํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋์์ธ ์์น ๋ชจ์์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ฐ๋ ์(supervisors), ์ํ ๋จธ์ (state machines) ๋ฐ ๊ธฐํ ์ ์ฉํ ์ถ์ํ๊ฐ ํฌํจ๋ฉ๋๋ค.
์ผ๋ญ ์์ : ๊ฐ๋จํ ์นด์ดํฐ ์กํฐ
์ผ๋ญ์ผ๋ก ์์ฑ๋ ๊ฐ๋จํ ์นด์ดํฐ ์กํฐ์ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ์กํฐ๋ increment ๋ฐ get ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ์นด์ดํธ๋ฅผ ์ ์งํฉ๋๋ค.
-module(counter).
-export([start/0, increment/1, get/1]).
start() ->
spawn(?MODULE, loop, [0]).
increment(Pid) ->
Pid ! {increment}.
get(Pid) ->
Pid ! {get, self()}.
loop(Count) ->
receive
{increment} ->
io:format("Incrementing...~n"),
loop(Count + 1);
{get, Sender} ->
Sender ! Count,
loop(Count)
end.
์ด ์์ ์์:
start()๋ ์๋ก์ด ์กํฐ(ํ๋ก์ธ์ค)๋ฅผ ์์ฑํ๊ณ ์ํ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.increment(Pid)๋ ์กํฐ์๊ฒ increment ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค.get(Pid)๋ ์กํฐ์๊ฒ get ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ ๋ฐ์ ์๋ฅผ ์ง์ ํฉ๋๋ค.loop(Count)๋ ๋ค์ด์ค๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ณ ์นด์ดํธ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฉ์ธ ๋ฃจํ์ ๋๋ค.
์ด๋ ์ผ๋ญ ์กํฐ ๋ด์ ๋ฉ์์ง ํจ์ฑ๊ณผ ์ํ ๊ด๋ฆฌ์ ํต์ฌ ๊ฐ๋ ์ ๋ณด์ฌ์ค๋๋ค.
์ผ๋ญ ์ฌ์ฉ์ ์ด์ :
- ๋์ ๋์์ฑ: ์ผ๋ญ์ ์์ฒญ๋ ์์ ๋์ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ด๊ฒฐํจ์ฑ: ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ฅ์ ๋ก๋ถํฐ ๋ณต๊ตฌํ๋ ๋ด์ฅ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค.
- ํ์ฅ์ฑ: ์ฌ๋ฌ ์ฝ์ด์ ๋จธ์ ์ ๊ฑธ์ณ ์ฝ๊ฒ ํ์ฅ๋ฉ๋๋ค.
- ์ ๋ขฐ์ฑ: ๊ณ ๊ฐ์ฉ์ฑ๊ณผ ์ ํ์์ด ์๊ตฌ๋๋ ์์คํ ์ ์ํด ์ค๊ณ๋์์ต๋๋ค.
- ์ ์ฆ๋ ์ค์ : ์๋ฆญ์จ, ์์ธ ์ฑ(์ด๊ธฐ) ๋ฑ๊ณผ ๊ฐ์ ํ์ฌ์์ ๋งค์ฐ ๊น๋ค๋ก์ด ์ํฌ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ๋ก๋์ ํ๊ฒฝ์์ ์ฌ์ฉ๋์์ต๋๋ค.
์ผ๋ญ ์ฌ์ฉ์ ์ด๋ ค์:
- ํ์ต ๊ณก์ : ์ผ๋ญ์ ๋ค๋ฅธ ๋ง์ ์ธ๊ธฐ ์๋ ์ธ์ด์๋ ๋ค๋ฅธ ๊ตฌ๋ฌธ๊ณผ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ๋๋ฒ๊น : ๋์์ฑ ์์คํ ์ ๋๋ฒ๊น ์ ๋ ๋ณต์กํ ์ ์์ต๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ์ํ๊ณ๊ฐ ์ฑ์ํ์ง๋ง, ๋ค๋ฅธ ์ธ์ด๋งํผ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ ์ ์์ต๋๋ค.
์์นด: JVM์ ์ํ ์กํฐ ๋ชจ๋ธ
์์นด(Akka)๋ ์๋ฐ ๊ฐ์ ๋จธ์ (JVM)์์ ๋์์ฑ, ๋ถ์ฐ, ๋ด๊ฒฐํจ์ฑ์ ๊ฐ์ถ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ํดํท์ด์ ๋ฐํ์์ ๋๋ค. ์ค์นผ๋ผ์ ์๋ฐ๋ก ์์ฑ๋ ์์นด๋ ์กํฐ ๋ชจ๋ธ์ ๊ฐ๋ ฅํจ์ ์๋ฐ ์ํ๊ณ๋ก ๊ฐ์ ธ์ ๋ ๋์ ๋ฒ์์ ๊ฐ๋ฐ์๋ค์ด ์ ๊ทผํ ์ ์๊ฒ ํฉ๋๋ค.
์์นด์ ์ฃผ์ ํน์ง:
- ์กํฐ ๊ธฐ๋ฐ ๋์์ฑ: ์์นด๋ ์กํฐ ๋ชจ๋ธ์ ๊ฒฌ๊ณ ํ๊ณ ํจ์จ์ ์ธ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค.
- ๋น๋๊ธฐ ๋ฉ์์ง ํจ์ฑ: ์กํฐ๋ ๋น๋๊ธฐ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ๋ฉฐ, ๋ ผ๋ธ๋กํน ์ฐ์ฐ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๋ด๊ฒฐํจ์ฑ: ์์นด๋ ์กํฐ์ ์คํจ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ฐ๋ ์(supervisors)์ ์ค๋ฅ ์ฒ๋ฆฌ ์ ๋ต์ ์ ๊ณตํฉ๋๋ค.
- ๋ถ์ฐ ์์คํ : ์์นด๋ ์ฌ๋ฌ ๋ ธ๋์ ๊ฑธ์ณ ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๊ฒ ํฉ๋๋ค.
- ์ง์์ฑ: ์์นด ํผ์์คํด์ค(Akka Persistence)๋ ์กํฐ๊ฐ ์์ ์ ์ํ๋ฅผ ์๊ตฌ ์ ์ฅ์์ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ ์ ์๊ฒ ํฉ๋๋ค.
- ์คํธ๋ฆผ: ์์นด ์คํธ๋ฆผ(Akka Streams)์ ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฐ์ํ ์คํธ๋ฆฌ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ด์ฅ ํ ์คํธ ์ง์: ์์นด๋ ๋ฐ์ด๋ ํ ์คํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์กํฐ์ ๋์์ ์ฝ๊ฒ ์์ฑํ๊ณ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
์์นด ์์ : ๊ฐ๋จํ ์นด์ดํฐ ์กํฐ (์ค์นผ๋ผ)
๋ค์์ ์์นด๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นผ๋ผ๋ก ์์ฑ๋ ๊ฐ๋จํ ์นด์ดํฐ ์กํฐ ์์ ์ ๋๋ค:
import akka.actor._
object CounterActor {
case object Increment
case object Get
case class CurrentCount(count: Int)
}
class CounterActor extends Actor {
import CounterActor._
var count = 0
def receive = {
case Increment =>
count += 1
println(s"Count incremented to: $count")
case Get =>
sender() ! CurrentCount(count)
}
}
object CounterApp extends App {
import CounterActor._
val system = ActorSystem("CounterSystem")
val counter = system.actorOf(Props[CounterActor], name = "counter")
counter ! Increment
counter ! Increment
counter ! Get
counter ! Get
Thread.sleep(1000)
system.terminate()
}
์ด ์์ ์์:
CounterActor๋ ์กํฐ์ ๋์์ ์ ์ํ๊ณIncrement์Get๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.CounterApp์ActorSystem์ ์์ฑํ๊ณ , ์นด์ดํฐ ์กํฐ๋ฅผ ์ธ์คํด์คํํ์ฌ ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค.
์์นด ์ฌ์ฉ์ ์ด์ :
- ์น์ํจ: JVM ์์์ ๊ตฌ์ถ๋์ด ์๋ฐ ๋ฐ ์ค์นผ๋ผ ๊ฐ๋ฐ์๋ค์๊ฒ ์ ๊ทผ์ฑ์ด ์ข์ต๋๋ค.
- ๊ฑฐ๋ํ ์ํ๊ณ: ๋ฐฉ๋ํ ์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ ์ํ๊ณ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- ์ ์ฐ์ฑ: ์๋ฐ์ ์ค์นผ๋ผ๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค.
- ๊ฐ๋ ฅํ ์ปค๋ฎค๋ํฐ: ํ๋ฐํ ์ปค๋ฎค๋ํฐ์ ํ๋ถํ ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค.
- ๊ณ ์ฑ๋ฅ: ์กํฐ ๋ชจ๋ธ์ ํจ์จ์ ์ธ ๊ตฌํ.
- ํ ์คํ : ์กํฐ์ ๋ํ ๋ฐ์ด๋ ํ ์คํธ ์ง์.
์์นด ์ฌ์ฉ์ ์ด๋ ค์:
- ๋ณต์ก์ฑ: ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ๋ง์คํฐํ๊ธฐ ๋ณต์กํ ์ ์์ต๋๋ค.
- JVM ์ค๋ฒํค๋: JVM์ ๋ค์ดํฐ๋ธ ์ผ๋ญ์ ๋นํด ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ์กํฐ ๋์์ธ: ์กํฐ์ ๊ทธ ์ํธ์์ฉ์ ๋ํ ์ ์คํ ์ค๊ณ๊ฐ ํ์ํฉ๋๋ค.
์ผ๋ญ๊ณผ ์์นด ๋น๊ต
์ผ๋ญ๊ณผ ์์นด ๋ชจ๋ ๊ฒฌ๊ณ ํ ์กํฐ ๋ชจ๋ธ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค. ๋ ์ค ์ด๋ ๊ฒ์ ์ ํํ ์ง๋ ํ๋ก์ ํธ์ ์๊ตฌ ์ฌํญ๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ฒฐ์ ์ ๋๊ธฐ ์ํ ๋น๊ต ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
| ํน์ง | ์ผ๋ญ | ์์นด |
|---|---|---|
| ํ๋ก๊ทธ๋๋ฐ ์ธ์ด | ์ผ๋ญ | ์ค์นผ๋ผ/์๋ฐ |
| ํ๋ซํผ | BEAM (์ผ๋ญ VM) | JVM |
| ๋์์ฑ | ๋ด์ฅ, ์ต์ ํ๋จ | ์กํฐ ๋ชจ๋ธ ๊ตฌํ |
| ๋ด๊ฒฐํจ์ฑ | ๋ฐ์ด๋จ, "let it crash" | ๊ฒฌ๊ณ ํจ, ๊ฐ๋ ์ ํฌํจ |
| ๋ถ์ฐ | ๋ด์ฅ | ๊ฐ๋ ฅํ ์ง์ |
| ์ํ๊ณ | ์ฑ์ํ์ง๋ง ๋ ์์ | ๋ฐฉ๋ํ ์๋ฐ ์ํ๊ณ |
| ํ์ต ๊ณก์ | ๋ ๊ฐํ๋ฆ | ๋ณดํต |
| ์ฑ๋ฅ | ๋์์ฑ์ ๊ณ ๋๋ก ์ต์ ํ๋จ | ์ข์, ์ฑ๋ฅ์ JVM ํ๋์ ์์กด |
์ผ๋ญ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ ๋์ ์ ํ์ผ ์ ์์ต๋๋ค:
- ๊ทน๋์ ์ ๋ขฐ์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ.
- ๋์์ฑ์ด ์ฃผ์ ๊ด์ฌ์ฌ์ธ ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ.
- ์์ฒญ๋ ์์ ๋์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ.
- ํ๋ก์ ํธ๋ฅผ ์ฒ์๋ถํฐ ์์ํ๋ฉฐ ์๋ก์ด ์ธ์ด๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ์ด๋ ค ์๋ ๊ฒฝ์ฐ.
์์นด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ ๋์ ์ ํ์ผ ์ ์์ต๋๋ค:
- ์ด๋ฏธ ์๋ฐ๋ ์ค์นผ๋ผ์ ์ต์ํ ๊ฒฝ์ฐ.
- ๊ธฐ์กด ์๋ฐ ์ํ๊ณ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ.
- ํ๋ก์ ํธ๊ฐ ๊ทน๋์ ๋ด๊ฒฐํจ์ฑ์ ๋ํ ๊ฐ์กฐ๊ฐ ๋ํ ๊ฒฝ์ฐ.
- ๋ค๋ฅธ ์๋ฐ ๊ธฐ๋ฐ ์์คํ ๊ณผ ํตํฉํด์ผ ํ๋ ๊ฒฝ์ฐ.
์กํฐ ๋ชจ๋ธ์ ์ค์ ์ ์ฉ ์ฌ๋ก
์กํฐ ๋ชจ๋ธ์ ๋ค์ํ ์ฐ์ ๋ถ์ผ์ ๊ด๋ฒ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํต์ ์์คํ : ์ผ๋ญ์ ์๋ ํต์ ์ค์์น๋ฅผ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ, ๊ทธ ์ ๋ขฐ์ฑ๊ณผ ํ์ฅ์ฑ ๋๋ฌธ์ ์ด ๋ถ์ผ์์ ๊ณ์ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
- ์ธ์คํดํธ ๋ฉ์์ง: ์๋ ์ผ๋ญ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ ์์ธ ์ฑ์ ์กํฐ ๋ชจ๋ธ์ด ์ด๋ป๊ฒ ์์ฒญ๋ ์์ ๋์ ์ฌ์ฉ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๋์ง ๋ณด์ฌ์ฃผ๋ ๋ํ์ ์ธ ์์ ๋๋ค. (์ฐธ๊ณ : ์์ธ ์ฑ์ ์ํคํ ์ฒ๋ ์งํํ์ต๋๋ค.)
- ์จ๋ผ์ธ ๊ฒ์: ๋ฉํฐํ๋ ์ด์ด ์จ๋ผ์ธ ๊ฒ์์ ์ข ์ข ์กํฐ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ฒ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ํ๋ ์ด์ด ์ํธ์์ฉ์ ์ฒ๋ฆฌํ๋ฉฐ, ๊ฒ์ ์๋ฒ๋ฅผ ํ์ฅํฉ๋๋ค.
- ๊ธ์ต ๊ฑฐ๋ ์์คํ : ๊ณ ๋น๋ ๋งค๋งค ํ๋ซํผ์ ๋๋์ ๊ฑฐ๋๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฅ๋ ฅ ๋๋ฌธ์ ์กํฐ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
- IoT ์ฅ์น: IoT ๋คํธ์ํฌ์์ ์๋ง์ ์ฅ์น ๊ฐ์ ํต์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ง์ดํฌ๋ก์๋น์ค: ์กํฐ ๋ชจ๋ธ์ ๋ด์ฌ๋ ๋์์ฑ์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
- ์ถ์ฒ ์์ง: ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ฐ์ธํ๋ ์ถ์ฒ์ ์ ๊ณตํ๋ ์์คํ ์ ๊ตฌ์ถํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ: ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ ์ฒ๋ฆฌํ๊ณ ๋ณ๋ ฌ ๊ณ์ฐ์ ์ํํฉ๋๋ค.
๊ธ๋ก๋ฒ ์ฌ๋ก:
- ์์ธ ์ฑ (๊ธ๋ก๋ฒ): ์ด๊ธฐ์ ์์ญ์ต ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ผ๋ญ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋์์ต๋๋ค.
- ์๋ฆญ์จ (์ค์จ๋ด): ํต์ ์ฅ๋น ๊ตฌ์ถ์ ์ผ๋ญ์ ์ฌ์ฉํฉ๋๋ค.
- ํด๋ผ๋ (์ค์จ๋ด): ๊ฒฐ์ ์ฒ๋ฆฌ ์์คํ ๊ตฌ์ถ์ ์์นด๋ฅผ ํ์ฉํฉ๋๋ค.
- ๋ผ์ดํธ๋ฒค๋ (๊ธ๋ก๋ฒ): ์์นด๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋น์ค ๋ฐ ์ง์์ ์ ๊ณตํ๋ ํ์ฌ์ ๋๋ค.
- ๊ธฐํ ๋ค์ ๊ธฐ์ (๊ธ๋ก๋ฒ): ๋ฐ๋๊ณผ ๋ด์์ ๊ธ์ต ๋ถ์ผ๋ถํฐ ์์์์ ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ์ด๋ฅด๊ธฐ๊น์ง ์ ์ธ๊ณ ๋ค์ํ ๋ถ์ผ์ ์ฌ๋ฌ ์กฐ์ง์์ ์ฌ์ฉ๋ฉ๋๋ค.
์กํฐ ๋ชจ๋ธ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์กํฐ ๋ชจ๋ธ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ๋จ์ผ ์ฑ ์ ์์น์ ๋ฐ๋ผ ์กํฐ ์ค๊ณ: ๊ฐ ์กํฐ๋ ๋ช ํํ๊ณ ์ ์ ์๋ ๋ชฉ์ ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค. ์ด๋ ์กํฐ๋ฅผ ์ดํดํ๊ณ , ํ ์คํธํ๊ณ , ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ๋ถ๋ณ์ฑ: ๋์์ฑ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ์กํฐ ๋ด์์ ๋ถ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ๋ฉ์์ง ์ค๊ณ: ๋ฉ์์ง๋ฅผ ์ ์คํ๊ฒ ์ค๊ณํ์ญ์์ค. ๋ฉ์์ง๋ ๋ ๋ฆฝ์ ์ด์ด์ผ ํ๋ฉฐ ๋ช ํํ ํ๋์ด๋ ์ด๋ฒคํธ๋ฅผ ๋ํ๋ด์ผ ํฉ๋๋ค. ๋ฉ์์ง ์ ์๋ฅผ ์ํด sealed ํด๋์ค/ํธ๋ ์ดํธ(์ค์นผ๋ผ) ๋๋ ์ธํฐํ์ด์ค(์๋ฐ) ์ฌ์ฉ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๊ฐ๋ : ์กํฐ ์คํจ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ์ ํ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๊ฐ๋ ์ ๋ต์ ๊ตฌํํ์ญ์์ค. ์กํฐ ๋ด์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ช ํํ ์ ๋ต์ ์ ์ํ์ญ์์ค.
- ํ ์คํ : ์กํฐ์ ๋์์ ๊ฒ์ฆํ๊ธฐ ์ํด ํฌ๊ด์ ์ธ ํ ์คํธ๋ฅผ ์์ฑํ์ญ์์ค. ๋ฉ์์ง ์ํธ์์ฉ ๋ฐ ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ํ ์คํธํ์ญ์์ค.
- ๋ชจ๋ํฐ๋ง: ์กํฐ์ ์ฑ๋ฅ๊ณผ ์ํ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊น ์ ๊ตฌํํ์ญ์์ค.
- ์ฑ๋ฅ ๊ณ ๋ ค: ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์๋ ๋ฉ์์ง ํฌ๊ธฐ์ ๋ฉ์์ง ํจ์ฑ ๋น๋์ ์ ์ํ์ญ์์ค. ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด ์ ์ ํ ์๋ฃ ๊ตฌ์กฐ์ ๋ฉ์์ง ์ง๋ ฌํ ๊ธฐ์ ์ฌ์ฉ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋์์ฑ ์ต์ ํ: ๋์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ์์ ํ ํ์ฉํ๋๋ก ์์คํ ์ ์ค๊ณํ์ญ์์ค. ์กํฐ ๋ด์์ ๋ธ๋กํน ์ฐ์ฐ์ ํผํ์ญ์์ค.
- ๋ฌธ์ํ: ์กํฐ์ ๊ทธ ์ํธ์์ฉ์ ์ ์ ํ ๋ฌธ์ํํ์ญ์์ค. ์ด๋ ํ๋ก์ ํธ๋ฅผ ์ดํดํ๊ณ , ์ ์ง๋ณด์ํ๊ณ , ํ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ฒฐ๋ก
์กํฐ ๋ชจ๋ธ์ ๋์์ฑ ๋ฐ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ๋ ฅํ๊ณ ์ฐ์ํ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ์ผ๋ญ๊ณผ ์์นด ๋ชจ๋ ์ด ๋ชจ๋ธ์ ๊ฒฌ๊ณ ํ ๊ตฌํ์ ์ ๊ณตํ๋ฉฐ, ๊ฐ๊ฐ ๊ณ ์ ํ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ผ๋ญ์ ๋ด๊ฒฐํจ์ฑ๊ณผ ๋์์ฑ์์ ๋ฐ์ด๋๋ฉฐ, ์์นด๋ JVM ์ํ๊ณ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์กํฐ ๋ชจ๋ธ์ ์์น๊ณผ ์ผ๋ญ ๋ฐ ์์นด์ ๊ธฐ๋ฅ์ ์ดํดํจ์ผ๋ก์จ, ํ๋ ์ธ๊ณ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๋งค์ฐ ํ๋ ฅ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ ์ค ์ด๋ ๊ฒ์ ์ ํํ ์ง๋ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ํ์ ๊ธฐ์กด ์ ๋ฌธ ์ง์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ด๋ค ๊ตฌํ์ ์ ํํ๋ ์กํฐ ๋ชจ๋ธ์ ๊ณ ์ฑ๋ฅ์ ์ ๋ขฐํ ์ ์๋ ์ํํธ์จ์ด ์์คํ ์ ๊ตฌ์ถํ๋ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ์ฑํ์ ๋ด์๊ณผ ๋ฐ๋์ ๋ฒํํ ๊ธ์ต ์ค์ฌ์ง๋ถํฐ ์ธ๋์ ์ค๊ตญ์ ๊ธ์ฑ์ฅํ๋ ๊ธฐ์ ํ๋ธ์ ์ด๋ฅด๊ธฐ๊น์ง ์ ์ธ๊ณ์ ์ผ๋ก ํ์ฉ๋๋ ์ง์ ํ ๊ธ๋ก๋ฒ ํ์์ ๋๋ค.