Actor Model ๊ฐ์
- ๊ฐ์ฒด์งํฅ์ ํจํด์์ ๋ฉ์๋ ํธ์ถ ๋ฐฉ์์ด ๋น๋๊ธฐ๋ก ๋ณ๊ฒฝ๋ ํจํด
- Actor๋ค์ ๋ชจ๋ Thread ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ๊ฐ์ฒด์ด์ผ ํ๋ค.
- ๋ํ Actor๋ ๋ฉ์์ง์ ์ ์ก/์์ ์ ๋ํ ๋๊ธฐํ ๊ด๋ฆฌ๊น์ง ํฌํจํ๋ค.
- Actor ๋ด๋ถ์์ ๋๊ธฐํ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ค.
Actor model์ด ํ๊ณ ์ํ๋ ๋ฌธ์
-
OOP๋ฅผ ์๊ฐํด๋ณด์.
-
method call์ ํ๊ณ , ๋ด๋ถ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ฉด์ ๋์ํ๋ค๊ณ ์๊ฐํ๋ค.
-
๊ทธ๋ฐ๋ฐ ๋ณดํต OOP ํ๊ฒฝ์์ Thread์ ๋ํด ๊น์ ๊ณ ๋ฏผ์ ํ์ง๋ ์๋๋ค.
-
๋ง์ฝ ์ ๊ทธ๋ฆผ์ Thread ์ ๊ทผ๊น์ง ํฌํจํ๋ค๋ฉด ์๋์ ๊ฐ์ ๊ทธ๋ฆผ์ ๊ฐ์ง์ง๋ ๋ชจ๋ฅธ๋ค.
- ์์ ๊ฐ์ ์ํ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ์ ๋์์ ์ ๊ทผํ๊ฒ ๋๋ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๋ค.
- lock๊ณผ ๊ฐ์ ์ฒ๋ฆฌ๋ฅผ ํตํด ์๊ณ ์์ญ์ ์ฒ๋ฆฌํด์ค์ผ ํ๋ค.
Lock์ ๋ฌธ์
- Concurrency๋ฅผ ์ ํํ๋ค.
- Thread๋ฅผ ์ผ์ ์ ์งํ๊ณ ๋ณต์ํด์ผ ํ๋๋ฐ, ์ด๋ OS ์ฐจ์์์ ๋น์ผ ์์ ์ด๋ค.
- Block๋ Thread์์ ์ด๋ ํ ์๋ฏธ์๋ ์์ ์ ํ ์ ์๋ค.
- Deadlock์ ์ ๋ฐํ ์ ์๋ค.
๊ธฐ์กด์ ๋ฐฉ์์ ๋ฌธ์
- ๊ธฐ์กด ํ๊ฒฝ์์ Concurrency๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, ์ด๋ ํ ๋ฐฉ์์ผ๋ก๋ ์์ ์ ์์ํด์ผ ํ๋ค.
- ์ด๋ฅผ Task-delegate concurrency๋ผ ํ๋ค.
- ์ด๋ฐ ๊ฒฝ์ฐ ๋์ด๊ฐ ์์ ์ ๋ํ Error๋ฅผ ์์ ์ ๋๊ฒจ์ค Thread์ชฝ์์ ๋ฐ์ ๋ฐฉ๋๊ฐ ์๋ค.
- ์์ ์ธ์ด ์ฐจ์์์ ์์๋ ์์ ์ ๋ํด์๋ Error๊น์ง ์ฒ๋ฆฌ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ์ด ์ณ๋ค.
Actor Model
์์ ๋ฌธ์ ๋ก๋ถํฐ ๋ค์์ ๊ฒ์ ๋ชฉํ๋ก ๋ง๋ค์ด์ง ๊ฒ์ด Actor Model์ด๋ค.
- lock์ ์์กดํ์ง ์๊ณ ์บก์ํ๋ฅผ ํตํด ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- Cooperative Entities ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
- ์ ์ฒด App์ด ์๋ก์๊ฒ Signal์ ๋ณด๋ด๊ณ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด์ ๋์ํ๋๋ก ํจ
- ์ฐ๋ฆฌ๊ฐ ๋น์ฐํ๊ฒ ์๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋๋ก ํ๋ค.
๊ธฐ๋ณธ ๊ตฌ์กฐ
- MailBox: Queue
- Message
- Behavior: Massage์ ๋ฐ๋ผ ํ๋ ๊ฒฐ์ ๋ฐ ์คํ
- ์์ ์ State ๋ณ๊ฒฝ
- Child Actor ์์ฑ ๋ฐ ์ ๊ฑฐ
- ๋ค๋ฅธ Actor์๊ฒ ๋ฉ์์ง ์ ์ก
- ๋ฑ๋ฑ
- State: Actor์ ์คํ ์ํ(init, ready, closed) - ์์ ๋ง ๋ณ๊ฒฝ ๊ฐ๋ฅ
Lock, Blocking ๋์ message ์ ๋ฌ ๋ฐฉ์์ ์ฌ์ฉ
- ํน์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ์๋๊ณ , ํน์ ์กํฐ์๊ฒ message๋ฅผ ์ ๋ฌํ๋ค.
- ์ด ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ค๋ ํ์ ์์ฒด๊ฐ Thread ์คํ์ ๋งํ๋ ๊ฒ์ ์๋๋ค.
- ๊ฐ Actor๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ ๋ฉ์์ง๋ฅผ ์ํํ๋ค.
Error ์ฒ๋ฆฌ
- Actor๋ก ๋ง๋ค๊ฒ ๋๋ฉด์, ์ด๋ค Actor๊ฐ ๋ค๋ฅธ Actor๋ฅผ ํธ์ถํ๋์ง์ ๋ํด ์ ์ ์๋ค.
- ๊ทธ๋ฌ๋ฉด์ Hierachy๊ฐ ์๊ธฐ๊ฒ ๋๋๋ฐ, ๊ทธ ๋์ ํ์ Actor์ ์คํจ ์ฌ๋ถ๋ฅผ ๋ถ๋ชจ๊ฐ ์์์ฐจ๋ฆด ์ ์๋ค.
ํจ์ฉ
- lock์ด ํ์์๋ค. ๊ฐ actor๋ ๋ ๋ฆฝ์ ์ผ๋ก queue๋ฅผ ๊ฐ์ง๋ค.
- actor์ ์ํ๊ฐ์ ํด๋น ๊ฐ์ฒด๊ฐ ๊ฐ์ง queue๋ก๋ถํฐ ๋์ด์ค๋ ๋์์ผ๋ก๋ง ์ฒ๋ฆฌ๋๋ค. ๋์์ฑ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค.
์ ๋ฆฌ
- Message Queue๋ฅผ ๊ฐ์ฒด ๋ด๋ถ์ ๋์ด ๋๊ธฐ์ ๋ฉ์๋ ํธ์ถ์ด ์๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ํ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๊ฒ์ด Actor
- ๋ด๋ถ์ ์ผ๋ก ๋์ ์ฃผ์ฒด(Thread)๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ lock์ด ํ์์๋ค.
- Actor๋ผ๋ฆฌ๋ ์๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ผ๋ก๋ง ์ํฅ์ ๋ฏธ์น ์ ์๋ค. ์ง์ ๋ณ๊ฒฝ์ ๋ถ๊ฐํ๋ค.
์ดํด๋ฅผ ์ํ ๊ทธ๋ฆผ ๋ชจ์
- ์ฌ์ง์ ๊ฒฝ์ฐ Concurrency with Actor Model(ํ์์ ๋ชจ๋ธ)๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค.