728x90
반응형
Erlang(얼랭)은 높은 동시성(Concurrency), 분산 처리(Distributed Computing), 내결함성(Fault-tolerance)을 갖춘 소프트웨어를 작성하기 위해 설계된 함수형 프로그래밍 언어입니다. 주로 실시간 통신 시스템과 같은 고성능 애플리케이션에서 널리 사용됩니다.
📌 특징과 장점
- 동시성(Concurrency)
- Erlang은 경량 프로세스(Lightweight Process, Actor 모델)를 사용하여 수십만 개의 프로세스를 쉽게 처리할 수 있습니다.
- 메시지 전달 방식으로 프로세스 간 통신을 처리하며, 데이터 공유를 지양합니다.
- 내결함성(Fault-tolerance)
- 애플리케이션이 실패하더라도 빠르게 복구할 수 있도록 'Let it crash'(실패 허용)라는 철학을 기반으로 합니다.
- Supervisor 프로세스를 통해 장애가 발생한 프로세스를 자동으로 재시작하여 안정성을 유지합니다.
- 분산 처리(Distributed Computing)
- 여러 대의 서버에 쉽게 분산 배포하여 하나의 큰 시스템으로 작동할 수 있습니다.
- Mnesia라는 분산 데이터베이스를 통해 데이터를 효율적으로 관리할 수 있습니다.
- 핫 코드 로딩(Hot Code Loading)
- 시스템을 중단하지 않고 런타임에 코드 변경이나 업데이트가 가능합니다.
- 중단 없이 서비스를 지속 운영해야 하는 통신 시스템 등에서 필수적인 기능입니다.
- 함수형 프로그래밍(Functional Programming)
- 순수 함수형 프로그래밍 언어로, 코드가 간결하며 상태 변경을 최소화합니다.
- 불변성(Immutability)을 지원하여 병렬 프로그래밍에서 오류 발생 가능성을 낮춥니다.
📌 주요 응용 분야
- 통신 및 메시징 시스템
- WhatsApp, RabbitMQ, Ejabberd와 같은 고성능 메시징 및 채팅 서비스가 Erlang을 기반으로 구축되었습니다.
- 분산 데이터베이스 및 저장 시스템
- CouchDB, Riak 등 분산형 NoSQL 데이터베이스가 Erlang으로 작성되었습니다.
- 게임 서버
- 온라인 게임 및 멀티 플레이어 서버 환경에서 높은 동시성을 처리할 때 유리합니다.
📌 기본 문법 예시
간단한 함수 정의 및 패턴 매칭 예시입니다.
-module(factorial).
-export([fact/1]).
fact(0) -> 1;
fact(N) when N > 0 -> N * fact(N - 1).
1> factorial:fact(5).
120
📌 OTP 프레임워크
Erlang은 OTP(Open Telecom Platform)라는 강력한 프레임워크와 함께 제공됩니다. OTP는 표준화된 동시성 구조와 애플리케이션 설계 패턴을 제공하여 신뢰성 있는 시스템 구축을 돕습니다.
- Supervisor(프로세스 관리)
- GenServer(범용 서버 프로세스)
- Application(애플리케이션 관리 및 배포)
- GenEvent(이벤트 처리)
📌 장단점 요약
장점 ✅ 단점 ❌
높은 동시성 처리 | 배우는 데 시간이 걸리는 문법 |
뛰어난 장애 내성 | 넓지 않은 커뮤니티, 상대적으로 적은 라이브러리 |
강력한 분산 컴퓨팅 | 일반 웹 개발에서는 널리 쓰이지 않음 |
실시간 시스템 적합성 | 성능 최적화가 필요한 연산 작업에는 덜 적합 |
📌 결론
Erlang은 동시성과 분산 컴퓨팅, 안정성이 요구되는 통신 분야와 같이 특화된 영역에서 매우 강력한 성능을 제공합니다. 최근에는 Elixir라는 언어가 Erlang의 VM(BEAM)을 기반으로 개발되어, 웹 개발자들에게도 주목받고 있습니다.
728x90
반응형
'쪼꼬만 노트 > Erlang' 카테고리의 다른 글
🚩 Erlang 학습 로드맵 (0) | 2025.03.18 |
---|