쪼꼬만 노트/Erlang

Erlang(얼랭) 프로그래밍 언어에 대하여

jet132 2025. 3. 18. 13:18
728x90
반응형

Erlang(얼랭)은 높은 동시성(Concurrency), 분산 처리(Distributed Computing), 내결함성(Fault-tolerance)을 갖춘 소프트웨어를 작성하기 위해 설계된 함수형 프로그래밍 언어입니다. 주로 실시간 통신 시스템과 같은 고성능 애플리케이션에서 널리 사용됩니다.

📌 특징과 장점

  1. 동시성(Concurrency)
    • Erlang은 경량 프로세스(Lightweight Process, Actor 모델)를 사용하여 수십만 개의 프로세스를 쉽게 처리할 수 있습니다.
    • 메시지 전달 방식으로 프로세스 간 통신을 처리하며, 데이터 공유를 지양합니다.
  2. 내결함성(Fault-tolerance)
    • 애플리케이션이 실패하더라도 빠르게 복구할 수 있도록 'Let it crash'(실패 허용)라는 철학을 기반으로 합니다.
    • Supervisor 프로세스를 통해 장애가 발생한 프로세스를 자동으로 재시작하여 안정성을 유지합니다.
  3. 분산 처리(Distributed Computing)
    • 여러 대의 서버에 쉽게 분산 배포하여 하나의 큰 시스템으로 작동할 수 있습니다.
    • Mnesia라는 분산 데이터베이스를 통해 데이터를 효율적으로 관리할 수 있습니다.
  4. 핫 코드 로딩(Hot Code Loading)
    • 시스템을 중단하지 않고 런타임에 코드 변경이나 업데이트가 가능합니다.
    • 중단 없이 서비스를 지속 운영해야 하는 통신 시스템 등에서 필수적인 기능입니다.
  5. 함수형 프로그래밍(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