์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
-module(hello).
-export([world/0]).

world() -> io:format("Hello, world\n").



1. ๊ฐœ์š”2. ์—ญ์‚ฌ3. ํŠน์ง•
3.1. ๋ณ‘ํ–‰์„ฑ3.2. ํŒจํ„ด ๋งค์นญ3.3. ๊ฐ•๋ ฅํ•œ ๋‚ด์žฅ ๊ธฐ๋Šฅ3.4. ์žฅ์•  ํ—ˆ์šฉ
4. ์„ฑ๋Šฅ5. ๊ธฐํƒ€


๊ณต์‹ ํ™ˆํŽ˜์ด์ง€

1. ๊ฐœ์š”[ํŽธ์ง‘]

์Šค์›จ๋ด์˜ ์—๋ฆญ์Šจ์—์„œ ๊ฐœ๋ฐœํ•œ ํ•จ์ˆ˜ํ˜• ๋ณ‘ํ–‰์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด. ์Šค์›จ๋ด ๋ณธํ†  ๋ฐœ์Œ์œผ๋กœ ํ•˜๋ฉด ์—์–ด๋ž‘์ด๋‹ค. ์–ผ๋žญ, ์—์–ด๋žญ, ์—˜๋žญ, ์—˜๋ž‘ ๋“ฑ ์ „์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค์ด ์ž๊ธฐ๋“ค ์•ŒํŒŒ๋ฒณ ๋ฐœ์Œ ์Šคํƒ€์ผ์— ๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ฐœ์Œํ•œ๋‹ค. ์ด๋ฅผ ์‹ ๊ฒฝ์“ฐ๋Š” ์‚ฌ๋žŒ์€ ์•„๋ฌด๋„ ์—†์œผ๋‹ˆ ์•ˆ์‹ฌํ•ด๋„ ๋œ๋‹ค.[1] ์˜ค๋Š˜๋‚  ๊ฐ€์žฅ ๋„๋ฆฌ์“ฐ์ด๋Š” ๋ณ‘ํ–‰์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‹ค.

2. ์—ญ์‚ฌ[ํŽธ์ง‘]

1986๋…„ ํ†ต์‹ ์žฅ๋น„๋ฅผ ๋งŒ๋“œ๋Š” ์—๋ฆญ์Šจ์‚ฌ์—์„œ ๊ตํ™˜๊ธฐ ๋ฐ ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ ์„ค๋น„๋ฅผ ์œ„ํ•œ ์–ธ์–ด๋กœ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค. ๊ทธ ์ด์œ ๊ฐ€ AT&T ์—ฐ๊ตฌ์†Œ์—์„œ UNIX์™€ C์–ธ์–ด๋ฅผ ๊ฐœ๋ฐœ ํ›„ ๋™์ข…์—…๊ณ„์˜ ์‚ฌ์šฉ์— ์ œ์•ฝ์„ ๊ฑธ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์กฐ ์•”์ŠคํŠธ๋กฑ ์—ฐ๊ตฌ์›์˜ ์ฃผ๋„ ํ•˜์— ์ง„ํ–‰๋˜์—ˆ๊ณ , ํ•จ์ˆ˜ํ˜• ์–ธ์–ด ๋””์ž์ธ์„ ์„ ํƒํ•œ ๊ฒƒ์€ ์‹ ๋ขฐ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์˜ ํ™•๋ณด์— ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ๋‹ค. ๋‹ค๋ฅธ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๋“ค๊ณผ ๋‹ฌ๋ฆฌ, ์‹œ์ž‘ ๋‹จ๊ณ„๋ถ€ํ„ฐ ๊ธฐ์—…์˜ ์—„๊ฒฉํ•œ ๋ฆด๋ฆฌ์ฆˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ˜๋“œ์‹œ ํ†ต๊ณผํ•ด์•ผ ํ–ˆ๋˜ Erlang์˜ ๊ฐœ๋ฐœ์€ ๊ณ ๋‚œ์˜ ์—ฐ์†์ด์—ˆ๋‹ค. ๊ฐ€๋ น, ๋ณ‘ํ–‰ ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ ๋ฐ ๋ฉ€ํ‹ฐ ์ฝ”์–ด ์ฒ˜๋ฆฌ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ณ„ํš๋œ ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ๋‹ค. ์†๋„๊ฐ€ ๋А๋ ค์„œ ๊ฒ€์ฆ ์‹œ์Šคํ…œ์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜์ž ๋‹น์‹œ๋กœ์„œ๋Š” ์–ด๋–ป๊ฒŒ๋“  ์ฅ์–ด ์งœ๋‚ด์–ด ์„ ํƒํ•œ ๊ฒฐ๊ณผ์ผ ๋ฟ์ด๋‹ค. ์ง€๊ธˆ์€ Erlang์˜ ๋Œ€ํ‘œ์ ์ธ ํŠน์ง•์ด ๋˜์—ˆ๋‹ค. ํ˜„์žฌ์™€ ๊ฐ™์€ ๋ชจ์Šต์„ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฑฐ์ณ๊ฐ„ ๊ณผ์ •์€ HOPLํ•™ํšŒ์˜ History of erlang์— ์ž์„ธํžˆ ๊ธฐ๋ก๋˜์–ด ์žˆ๋‹ค. ๋ˆˆ๋ฌผ ์—†์ธ ๋ณผ ์ˆ˜ ์—†๋‹ค. ์š”์•ฝํ•˜๋ฉด ์ ˆ์ฐจํ˜• ์–ธ์–ด๋“ค์ด ์‹œ๋„ํ•˜๋Š” ์ตœ์ ํ™”๋ฅผ ์‹œ๋„ํ•˜๋Š” ๋Œ€์‹ , ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ์˜ฌ๋ฆฐ๋‹ค๋Š” ์ ‘๊ทผ๋“ค์˜ ์—ฐ์†์ด๋‹ค. ๋‹น์‹œ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•ด ์ ์šฉํ•ด์•ผ ํ–ˆ๋˜ ์ด๋Ÿฌํ•œ ์‹œ๋„๋“ค์€ Erlang ์‚ฌ์šฉ ๋ชฉ์ ๊ณผ ์žฅ๋‹จ์ ์ด ๋งค์šฐ ๋šœ๋ ทํ•œ ์–ธ์–ด๋กœ์„œ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๊ณ , ์ด ๋ถ€๋ถ„์€ ๋ฒ”์šฉ์–ธ์–ด๋กœ์„œ์˜ Erlang์˜ ํ•œ๊ณ„๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ ์™„๋ฃŒ ์งํ›„ ์‹ค์ œ ์ž‘๋™์—์„œ "nine nines" ์ฆ‰, 99.9999999%์˜ ์ž‘๋™์œจ์ด๋ผ๋Š” ๊ฒฝ์ด์ ์ธ ์ˆ˜์ค€์˜ ์•ˆ์ •์ ์ธ ์šด์˜์„ ๊ธฐ๋กํ•˜๊ฒŒ ๋œ๋‹ค. ๊ณ„์‚ฐํ•ด๋ณด๋ฉด 24์‹œ๊ฐ„ ์„œ๋น„์Šค๋ฅผ 30๋…„ ๋™์•ˆ ์šด์˜ํ–ˆ์„ ๋•Œ ์„œ๋น„์Šค๊ฐ€ ๋ฉˆ์ถ˜ ์‹œ๊ฐ„(downtime)์ด ์ด 1์ดˆ ๋ฏธ๋งŒ์ด๋ผ๋Š” ๋œป์ด ๋œ๋‹ค! ํ•œ ์ค„์˜ Erlang ์ฝ”๋“œ๋Š” ์—ฌ๋Ÿฌ ์ค„์˜ C ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฐ€์น˜๋ฅผ ๊ฐ€์ง„ ๊ฒƒ์œผ๋กœ ํ‰๊ฐ€๋˜์—ˆ๋‹ค.[2]

๊ทธ๋Ÿฐ๋ฐ Erlang์ด ์—๋ฆญ์Šจ์—์„œ ์ž๋ฆฌ์žก์„ ์ฆˆ์Œ ๊ฐœ๋ฐœ์ž๋“ค์ด ์งค๋ ธ๋‹ค. ์—๋ฆญ์Šจ์ด ํ•œ์ฐธ ์‚ฝ์„ ํ‘ธ๋˜ ์‹œ์ ˆ์— ํšจ์œจ์„ฑ์„ ์ถ”๊ตฌํ•œ๋‹ค๊ณ  "์˜คํ”ˆ์†Œ์Šค ๋น„์ฆˆ๋‹ˆ์Šค๋กœ ์•Œ์•„์„œ ๋จน๊ณ ์‚ฌ์„ธ์š”."ํ•˜๊ณ  ๋‚ด๋ณด๋‚ด ๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค. ๋‹น์‹œ ๊ธฐ๋ก์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ์—๋ฆญ์Šจ์˜ ๊ฒฝ์˜์ง„์€ ๋ณดํ†ต์˜ ๋ง‰์žฅ ๊ฒฝ์˜์ง„๋“ค์ด ๊ทธ๋ ‡๋“ฏ ์žฅ๋ถ€์ƒ์˜ ์ด์ต์„ ์œ„ํ•ด ๊ผฌํˆฌ๋ฆฌ ์žก์„๋งŒํ•œ ๋ถ€๋ถ„์ด ์žˆ๋Š” ์‚ฌ์›๋“ค์„ ๊ทธ๋ƒฅ ๋‹ค ํ•ด๊ณ ํ–ˆ๋‹ค.[3] ์—ญ์‹œ IT๊ธฐ์—…์—์„œ๋Š” ๊ฒฝ์˜ํ•™ ๋ฐฐ์šด ๋†ˆ๋“ค์ด ๋ฌธ์ œ ๋ฌผ๋ก  ์—๋ฆญ์Šจ๊ฐ™์€ ๊ธฐ์ˆ  ๊ธฐ์—…์ด ๊ธฐ์ˆ ์ž ์—†์ด ๋Œ์•„๊ฐ€๋Š”๊ฑด ๋ง๋„ ์•ˆ๋˜๋ฏ€๋กœ ๋‹ค์Œ CEO๋Š” ์ด๋“ค์„ ๋‹ค์‹œ ํšŒ์‚ฌ๋กœ ๋ชจ์•„์•ผ ํ–ˆ๋‹ค(โ€ฆ)

์–ผ๋žญ์€ ์˜ค๋Š˜๋‚  ๋ณ‘ํ–‰์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์ด ์š”๊ตฌ๋˜๋Š” ๋งŽ์€ ๋ถ„์•ผ์— ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‹ค. Erlang VM ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํ•˜๋“œ์›จ์–ด์™€ ํ†ต์‹ ์žฅ๋น„์˜ ๋ฐœ์ „์— ๋”ฐ๋ผ ๊พธ์ค€ํžˆ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์žˆ๋‹ค.

3. ํŠน์ง•[ํŽธ์ง‘]

3.1. ๋ณ‘ํ–‰์„ฑ[ํŽธ์ง‘]

๋ณ‘ํ–‰์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Erlang์€ ๊ฐ€๋ฒผ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋ฉ”์‹œ์ง€ ํŒจ์‹ฑ์— ์˜ํ•ด ์ž‘์—…์„ ์ง€์‹œ๋ฐ›๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉฐ ETS, DETS ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ œ์™ธํ•˜๋ฉด ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ „ํ˜€ ์—†๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค. ์ด๋Š” ์–ธ๋œป๋ณด๊ธฐ์— MPI(Message Passing Interface)์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, MPI๊ฐ€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ƒ๋‹นํ•œ ๋น„์šฉ์ด ๋“œ๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ Erlang์˜ ํ”„๋กœ์„ธ์Šค๋Š” ํ‰๋ฒ”ํ•œ PC์—์„œ๋„ ์ˆ˜์‹ญ๋งŒ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์•„๋ฌด ๋ฌธ์ œ ์—†์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ , ์‹คํ–‰ํ•˜๊ณ , ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋ผ ํ•˜์—ฌ๋„ ํ†ต์‹ ๋ง์„ ํ†ตํ•ด ์›๊ฒฉ์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ์–ด๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋Œ€๋Ÿ‰์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋ฌถ๋Š” ๋ฐ ์œ ๋ฆฌํ•˜๋‹ค.

3.2. ํŒจํ„ด ๋งค์นญ[ํŽธ์ง‘]

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

3.3. ๊ฐ•๋ ฅํ•œ ๋‚ด์žฅ ๊ธฐ๋Šฅ[ํŽธ์ง‘]

Erlang์€ ํ†ต์‹  ์ธํ”„๋ผ๋ฅผ ์œ„ํ•œ ์–ธ์–ด์ธ ๋งŒํผ Erlang ์ž์ฒด๋งŒ์œผ๋กœ ํ†ต์‹ ๋ง์—์„œ ์š”๊ตฌ๋˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ๋“ค์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๊ธฐ๋Šฅ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด ๋ฉ”๋ชจ๋ฆฌ Key Value ์ €์žฅ์†Œ์ธ ETS[4], ETS์˜ ๋””์Šคํฌ ์ €์žฅ์†Œ์ธ DETS, ํŠธ๋žœ์ ์…˜์ด ์ง€์›๋˜๋Š” DBMS์ธ Mnesia[5], ์—๋ฆญ์Šจ์˜ ์ธํ”„๋ผ ํ”Œ๋žซํผ์ธ OTP[6] ๋“ฑ์ด ์žˆ์œผ๋ฉฐ, ๋ชจ๋‘ ์ธํ”„๋ผ ๊ตฌ์ถ•์šฉ์œผ๋กœ ๊ฒ€์ฆ๋˜์–ด์žˆ์–ด ์‹ ๋ขฐ์„ฑ์ด๋‚˜ ์„ฑ๋Šฅ ๋ฉด์—์„œ ๋†’์€ ์ˆ˜์ค€์„ ์ž๋ž‘ํ•œ๋‹ค.

3.4. ์žฅ์•  ํ—ˆ์šฉ[ํŽธ์ง‘]

๋ณธ๋ž˜ ์ธํ”„๋ผ ๊ตฌ์ถ•์„ ์œ„ํ•œ ์–ธ์–ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ์žฅ์• ํ—ˆ์šฉ ๊ตฌ์กฐ๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ํŠน์ง•์ด๋‹ค. ์•„์ด๋””์–ด ์ž์ฒด๋Š” ์•„์ฃผ ๋‹จ์ˆœํ•ด์„œ ๋ณ‘ํ–‰ ํ”„๋กœ์„ธ์Šค ๊ฐ€์šด๋ฐ ์ผ๋ถ€๋ฅผ ๊ฐ์‹œ์ž๋กœ ์‚ฌ์šฉํ•ด์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ณ  ์žฌ์‹œ์ž‘ ์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ํ”„๋กœ์„ธ์Šค๋Š” ์•„์ฃผ ์ž‘์€ ์ž‘์—… ๋‹จ์œ„๋“ค์ด๋ผ์„œ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ „์ฒด ์ž‘๋™์˜ ์ผ๋ถ€์— ๋ถˆ๊ณผํ•˜๋ฏ€๋กœ ๋ถ€๋ถ„์ ์ธ ์žฅ์• ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์€ ๊ณ„์† ์‚ด์•„์„œ ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค[7]. ๋˜ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๊ฐ์ž ์ž๊ธฐ๋งŒ์˜ ํž™๊ณผ ์Šคํƒ์„ ํ• ๋‹น๋ฐ›์•„์„œ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ž˜์„œ Java๊ฐ€ "write once, run everywhere"๋ผ๋ฉด Erlang์€ "write once, run forever"๊ฐ€ ํŠน์ง•์ด๋ผ๊ณ  ๋งํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ์‹ค์ œ Erlang์œผ๋กœ ์ž‘์„ฑ๋œ ํ†ต์‹ ์žฅ๋น„ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๊ฐ€์šฉ์„ฑ 99.9999999%๋ฅผ ์ฐ๊ธฐ๋„ ํ•œ๋‹ค.

4. ์„ฑ๋Šฅ[ํŽธ์ง‘]

์ธํ„ฐ๋„ท ์ƒ์— ๋Œ์•„๋‹ค๋‹ˆ๋Š” Erlang์˜ ์„ฑ๋Šฅ๊ณผ ๊ด€๋ จ๋œ ๋ฒค์น˜๋งˆํฌ๋“ค์„ ๋ณด๋ฉด ํ•จ์ˆ˜ vs ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์—์„œ๋Š” ์—ฐ์‚ฐ ์†๋„๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ์ด ์ƒ๋‹นํžˆ ํ˜•ํŽธ์—†๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ์ด์œ ๊ฐ€ ์žˆ๋‹ค. ์ผ๋‹จ Erlang์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์–ธ์–ด๋‹ค. ํ•จ์ˆ˜ ํ•˜๋‚˜๋ฅผ ๊ฐ€์ง€๊ณ  ๋น„๊ตํ•˜๋ฉด ๋А๋ฆด ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ๊ทธ ๋Œ€์‹  Erlang์€ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋ฏธ์นœ๋“ฏ์ด ์ตœ์ ํ™” ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ ๋•๋ถ„์— ๋™์‹œ์„ฑ ์ œ์–ด๋Š” ์ˆ˜๋งŒ ๋‹จ์œ„๋ฅผ ๊ฐ€๋ณ๊ฒŒ ์—ฌ๊ธฐ๋ฉฐ, SMP ์‹œ๋Œ€ ์ดํ›„์—๋Š” ์ˆ˜๋ฐฑ๋งŒ ๋‹จ์œ„๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์–ผ๋žญ ์Šคํƒ€์ผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ, ์—ฌ๋Ÿฌ๊ฐœ์˜ process๋กœ ์—ฐ์‚ฐ์„ ์ชผ๊ฐœ์„œ MapReduce ์ฒ˜๋Ÿผ ๋งŒ๋“ค๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ C๋ณด๋‹ค๋„ ๋น ๋ฅธ ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ Erlang์€ ํ†ต์‹ ์žฅ๋น„์šฉ ์–ธ์–ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•„๋ผ๋Š” ๊ฒƒ๋ณด๋‹ค ์‹ค์‹œ๊ฐ„์„ฑ์˜ ์œ ์ง€๋ฅผ ์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ธด๋‹ค. ๊ทธ๋ž˜์„œ ๋Œ๋ ค์•ผ ํ•˜๋Š” ์ž‘์—…์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ํ•„์š”๋กœ ํ•œ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ๊ทธ ์ฆ‰์‹œ ๋น„์Šทํ•œ ์ž‘์—…์ด ๋˜ ๋“ค์–ด์™€๋„ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋Šฅ๋ ฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋„‰๋„‰ํ•˜๊ฒŒ ํผ๋จน์–ด ๋‘”๋‹ค. ์• ์ดˆ์— ํ†ต์‹ ์žฅ๋น„๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ ์ „๋ถ€๊ฐ€ ํ†ต์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ์œผ๋กœ ๋ถ™์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋‚„ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ฌผ๋ก  ๊ทธ๋ ‡๋‹ค๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์ด ๋‚˜์œ๊ฑด ์•„๋‹ˆ๋‹ค. ์‹ค ์ž‘์—…์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋ณด๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ž์ฒด๋Š” ๋Œ€๋‹จํžˆ ํšจ์œจ์ ์ด๋‹ค.

5. ๊ธฐํƒ€[ํŽธ์ง‘]

๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ƒ์†Œํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ง€๋งŒ, ๋ณ‘ํ–‰์„ฑ ๋ถ„์•ผ์—์„œ๋Š” ์ฃผ๋ฅ˜์–ธ์–ด์— ์†ํ•œ๋‹ค. CouchDB, SimpleDB, Riak ๋“ฑ NoSQL DB์—์„œ ๋งต๋ฆฌ๋“€์Šค์˜ ๊ตฌํ˜„ ํ˜น์€ DBMS์˜ ์ „์ฒด ๊ตฌํ˜„์„ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฑ„ํŒ…๊ณผ ๋ฉ”์‹œ์ง•, RabbitMQ, WhatsApp ์„œ๋ฒ„, ๊ธˆ์œต์‹œ์Šคํ…œ, ๊ฒŒ์ž„ ์„œ๋ฒ„[8]์™€ ๊ฐ™์€ ๋ถ„์•ผ์— ์ด์šฉ๋œ๋‹ค. ์ด ์ค‘ WhatsApp์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์œ ๋ช…ํ•œ๋ฐ, 12์ฝ”์–ด(24 ๋…ผ๋ฆฌ์ฝ”์–ด) ํ”„๋กœ์„ธ์„œ, 100GB ๋ฉ”๋ชจ๋ฆฌ์˜ ํ•˜๋“œ์›จ์–ด๋กœ ์‹ค ์„œ๋น„์Šค์—์„œ ์„œ๋ฒ„๋‹น 200๋งŒ๊ฑด ์ด์ƒ์˜ ์—ฐ๊ฒฐ์„ ๋ฐ›์•˜์—ˆ๊ณ , ์ตœ๊ทผ์—๋Š” ๊ฐœ๋ณ„ ์„œ๋ฒ„์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ข€๋” ์ค„์ด๊ณ  ๊ฐ๊ฐ 100๋งŒ๊ฐœ ์ •๋„์˜ ์—ฐ๊ฒฐ์„ ์ˆ˜์šฉํ•˜๊ณ  ์žˆ๋‹ค.[9] ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์˜ ๋ฉ”์‹œ์ง€ ํŒจ์‹ฑ ๋””์ž์ธ์— ๋งŽ์€ ์˜ํ–ฅ์„ ์ฃผ๋Š” ์–ธ์–ด๊ธฐ๋„ ํ•œ๋ฐ, ๋ง‰์ƒ Erlang๊ณผ ๋น„์Šทํ•œ ๋ฉ”์‹œ์ง€ ํŒจ์‹ฑ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค๋Š” ์–ธ์–ด์น˜๊ณ  Erlang ๊ฐ™์ด ๋ฉ”์‹œ์ง€ ํŒจ์‹ฑ์ด ์ž˜ ํ™œ์šฉ๋˜๋Š” ์–ธ์–ด๊ฐ€ ์—†๋‹ค.[10]

์–ผ๋žญ์„ ๊ฐœ๋ฐœํ•œ ์—๋ฆญ์Šจ์˜ ๊ฒฝ์šฐ SGSN-MME[11] ์„ค๋น„๋ฅผ ์–ผ๋žญ์œผ๋กœ ๊ฐœ๋ฐœํ•œ๋‹ค. ์„ธ๋Œ€๋ณ„๋กœ ๋‹ค๋ฅด๊ธด ํ•˜์ง€๋งŒ LTE์— ์‚ฌ์šฉ๋˜๋Š” MME์˜ ๊ฒฝ์šฐ ์—๋ฆญ์Šจ ์žฅ๋น„์˜ ์„ธ๊ณ„์‹œ์žฅ ์ ์œ ์œจ์ด 50%๋ฅผ ๋„˜๋Š”๋‹ค. ์ƒ์—…์ ์œผ๋กœ ์ƒ๋‹นํžˆ ํฌ๊ฒŒ ์„ฑ๊ณตํ•œ ๋•๋ถ„์— ์—๋ฆญ์Šจ์—์„œ๋„ ์–ผ๋žญ์˜ ์žฅ๊ธฐ์ ์ธ ๊ฐœ๋Ÿ‰์— ๊ฝค ํˆฌ์ž๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค.

๋‹ค๋ฅธ ์–ธ์–ด๋“ค ์ฒ˜๋Ÿผ Erlang๋„ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์†Œ๊ฐœ๋˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋””์ž์ธ๊ณผ ๊ธฐ๋Šฅ์€ ๋ณธ๋ž˜์˜ ๊ตํ™˜๊ธฐ์— ์š”๊ตฌ๋˜์—ˆ๋˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ์˜ ์‹ค์‹œ๊ฐ„ ๋ณ‘ํ–‰ ์ฒ˜๋ฆฌ์™€ ๊ณ ๊ฐ€์šฉ์„ฑ์— ๋ชฐ๋นต๋˜์–ด ์žˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ€๋ถ„๋“ค์€ ์–ด๋А ์ˆ˜์ค€์ด๋ƒ ํ•˜๋ฉด ์–ผ๋žญ์˜ ์ฝ”์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปจํผ๋Ÿฐ์Šค์—์„œ "์šฐ๋ฆฌ ๊ทธ๋ž˜ํ”ฝ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ[12]๋Š” ์ฉ์—ˆ์Œ ใ…‹" ํ•˜๊ณ  ๋น„์›ƒ๋Š” ์ˆ˜์ค€์ด๋‹ค. ์•ž์œผ๋กœ ๊ฐœ๋Ÿ‰ํ•  ์—ฌ์ง€๊ฐ€ ์žˆ๊ธด ํ•˜๊ฒ ์ง€๋งŒ ํ˜„ ์‹œ์ ์—์„œ๋Š” ๊ฐˆ ๊ธธ์ด ๋ฉ€๋‹ค.

์–ผ๋žญ์˜ ํƒ€์ž… ์‹œ์Šคํ…œ์€ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์—์„œ๋Š” ๋น„๊ต์  ๋น„์ฃผ๋ฅ˜์— ์†ํ•˜๋Š” ๊ฐ•ํƒ€์ž…[13]์— ๋™์ ํƒ€์ž…์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค.

Erlang์„ ์œ„ํ•œ ๊ฐœ๋ฐœ ํˆด๋กœ๋Š” VS Code์˜ erlang ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์ด ์žˆ๋‹ค.

2019๋…„ 4์›” 20์ผ Erlang์˜ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ธ ์กฐ ์•”์ŠคํŠธ๋กฑ์ด ํ ์„ฌ์œ ์ฆ์œผ๋กœ ์ธํ•œ ๊ฐ์—ผ์œผ๋กœ ํƒ€๊ณ„ํ•˜์˜€๋‹ค. ํ–ฅ๋…„ 68์„ธ. #
[1] ๊ธฐ์›์ด ํ†ต์‹ ๊ณตํ•™์—์„œ ์œ ๋ช…ํ•œ ๋ด๋งˆํฌ ์ˆ˜ํ•™์ž์ธ Agner Krarup Erlang์˜ ์ด๋ฆ„์—์„œ ๋”ฐ์˜จ ์ด๋ฆ„์ด๋‹ค.
[2] IT์ œํ’ˆ ์ƒ๋ช… ์ฃผ๊ธฐ์˜ ๋Œ€๋‹ค์ˆ˜๊ฐ€ ์œ ์ง€๋ณด์ˆ˜๋ผ๋Š” ์ ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ต‰์žฅํ•œ ์ด์ ์ด๋‹ค. ์‹ค์€ ์—ฌ๊ธฐ ํ•จ์ •์ด ํ•˜๋‚˜ ์žˆ๋Š”๋ฐ, ํ•œ ๋ช…์˜ Erlang ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ‡ด์‚ฌ๋Š” ์—ฌ๋Ÿฌ ๋ช…์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ‡ด์‚ฌ(+ ์žฌ๊ตฌ์ธ/๊ต์œก ๋น„์šฉ)์™€ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ๊ฒƒ.
[3] ๋‹น์‹œ ํ•ด๊ณ ๋œ ์ธ์›์ด 2๋งŒ๋ช…์ด ๋„˜๋Š”๋‹ค.
[4] Erlang Term Storage
[5] ๋ณธ๋ž˜๋Š” ๊ธฐ์–ต์ƒ์‹ค์„ ์˜๋ฏธํ•˜๋Š” Amnesia์˜€๋Š”๋ฐ, DBMS ์ด๋ฆ„์œผ๋กœ๋Š” ๋ถ€์ ์ ˆํ•œ ์˜๋ฏธ๋ผ ์ƒ๊ฐ๋˜์–ด A๋ฅผ ๋นผ๋ฒ„๋ ธ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ A๋ฅผ ๋บ€๋‹ค๊ณ  ์ ์ ˆํ•œ ์ด๋ฆ„์ด ๋˜๋Š”๊ฑด์ง€๋Š” ์˜๋ฌธ์ด๋‹ค. ์šฐ์„  a-๋ผ๋Š” ์ ‘๋‘์–ด๋Š” ๋ฐ˜๋Œ€์˜ ๋œป์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด ๋งž๋‹ค...
[6] Open Telecom Platform
[7] ์ง„์งœ ๋ฌด์‹œํ•˜๋Š”๊ฑด ์•„๋‹ˆ๊ณ  ์žฅ์• ๋ฅผ ๋ณต๊ตฌ ํ•˜๋Š” ์‹œ์Šคํ…œ์ด ์กด์žฌํ•œ๋‹ค. ๋”๋ถˆ์–ด์„œ sasl ํ˜น์€ ๊ธฐํƒ€ ๋กœ๊ทธ ๊ด€๋ จ๋œ ๋ชจ๋“ˆ๋ฅผ ๋„์›Œ๋‘๋ฉด ์ž๋™์œผ๋กœ ์˜ค๋ฅ˜ ์ถ”์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ก ๋ฐ ๋ณด๊ณ ํ•˜๊ฒŒ ๋œ๋‹ค.
[8] ์ฝœ ์˜ค๋ธŒ ๋“€ํ‹ฐ ์‹œ๋ฆฌ์ฆˆ์™€ ๋ฆฌ๊ทธ ์˜ค๋ธŒ ๋ ˆ์ „๋“œ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ์„œ๋ฒ„ ๋“ฑ์— ์“ฐ์ธ๋‹ค.
[9] 2014๋…„ ์ž๋ฃŒ ๊ธฐ์ค€ ๋™์ ‘์ž 1์–ต 5์ฒœ๋งŒ๋ช…์„ ์ฑ„ํŒ…์„œ๋ฒ„ 150๋Œ€๋กœ ์ˆ˜์šฉํ•˜๊ณ  ์žˆ๋‹ค.
[10] ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์ด ๋‚˜๋น ์„œ๊ฐ€ ์•„๋‹ˆ๊ณ  Erlang์ด ๋Œ€๋‹จํžˆ ๊ทน๋‹จ์ ์ธ ๋””์ž์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
[11] ์ด๋™ ํ†ต์‹ ๋ง์—์„œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ์ค‘๊ณ„ํ•˜๋Š” ์„ค๋น„๋‹ค.
[12] wx๋ฅผ ์“ด๋‹ค.
[13] ์‹ค์ˆ˜์™€ ์ •์ˆ˜์˜ ์ž๋™ ๋ณ€ํ™˜์ด ์žˆ์œผ๋ฏ€๋กœ ํ•™๋ฌธ์  ์˜๋ฏธ์˜ ๊ฐ•ํƒ€์ž…์€ ์•„๋‹ˆ๋‹ค.