소프트웨어 개발/프로그래밍 언어

[Elixir] 엘릭서 라이브뷰 란?

산삼인생 2023. 4. 13. 19:24
728x90

프로그래밍 언어 엘릭서(Elixir)를 들어보셨나요?

고가용성, 분선 처리가 가능한 얼랭 가상 머신 위에서 동작하는

쉽고 접근성이 뛰어난 엘릭서 프로그래밍 언어를 알아보고

엘릭서 라이브뷰에 대해서 알아보도록 하겠습니다.

 

목차

     

    1. 엘릭서 프로그래밍 언어 란?

    얼랭(Erlang) 가상 머신(BEAM) 위에서 동작하는 함수형, 동시성 프로그래밍 언어입니다.

    엘릭서는 얼랭(처음부터 분산 시스템을 위한 언어로 설계됨)의 특징인 분산 처리, 장애 내구성, 실시간, 무정지 애플리케이션 을 공유하는 고가용성 프로그래밍 언어입니다.

    2022년 자료에 따르면 개발자들에게 사랑 받는 언어 2위에 랭크 되어 있으며,

    엘릭서 프로그래밍 언어로 만든 프레임워크인 Phoenix가 연봉 1위에 랭크되었습니다.

    2022년 언어별 개발자 연봉 순위를 보면 Erlang은 2위, Elixir는 6위에 랭크되었습니다.

    핫한 언어임에는 틀림이 없는것 같습니다.

     

    공식 홈페이지 : https://elixir-lang.org/

     

    elixir-lang.github.com

    Website for Elixir

    elixir-lang.org

     

    JavaScript를 위한 TypeScript

    Java VM 위에 동작하는 Kotlin

    Java VM 위에서 동작하는 Clojure

    등과 같이 얼랭 가상 머신 위에서 동작하는 프로그래밍 언어 입니다.

    그냥 얼랭 프로그래밍 언어로 개발하면 될것 같은데 

    왜 굳이 엘릭서(Elixir) 프로그래밍 언어를 새로 만들었을까요?

    얼랭 프로그래밍 언어가 좀 문법이 독특합니다.

    자바 프로그래머가 쉽게 접근할 수가 없습니다.

    그런 벽을 엘릭서(Elixir) 프로그래밍 언어가 허물어줍니다.

    쉽게 개발 가능하게 해줍니다.

     

    2. 엘릭서 프로그래밍 언어 장점?

    엘릭서 프로그래밍 언어 공식 홈페이지에서 제공되는 내용입니다.

    엘릭서 프로그래밍 언어는 확장성과 유지보수성이 뛰어난 애플리케이션을 구축하기 좋은 언어입니다.

     

    1) 확장성

    모든 엘릭서 코드는 격리된 가벼운 실행 쓰레드(프로세스) 내에서 실행되며 메시지를 통해 정보 교환을 합니다. 이 방식은 분산을 위한 기반을 제공하며 개발자가 여러 노드에서 작업을 조정할 수 있도록 확장성을 갖게 됩니다.

     

    2) 결함허용

    결함 허용과 메시지로 전달을 통한 이벤트 기반 프로그래밍이 가능함

     

    3) 함수형 프로그래밍

    개발자가 짧고, 간결하며, 유지보수성이 뛰어난 코드를 작성하는데 도움을 줍니다.

     

    4) 확장성 및 DSL

    확장을 쉽게할 수 있도록 설계되어 개발자 생산성을 높이고, 언어를 특정 도메인으로 자연스럽게 확장할 수 있습니다.

     

    5) 성장하는 생태계

    개발을 쉽게 해주는 훌륭한 도구 세트 제공.

    Mix는 프로젝트 생성, 작업관리, 테스트 실행 등을 쉽게 해주는 빌드 도구입니다.

     

    6) 대화식 개발

    IEx라는 대화형 셀을 지원함으로써 자동 완성, 디버깅 도구, 코드 재로딩을 가능하게 합니다.

     

    7) Erlang 호환

    Erlang 언어 가상머신 위에서 동작하기 때문에 런타임 비용 없이 Erlang 함수를 호출 할 수 있습니다.

     

     

    3. 라이브뷰(Liveview) 란?

    라이브뷰(LiveView) 란 무엇일까요?

    라이브뷰(LiveView)는 브라우저에서 자바스크립트를 사용하지 않고, 서버에서 렌더링 된 HTML을 웹소켓을 통해 조작하는 방식입니다.

    거의 모든 상태 처리를 서버에서 해주기 때문에

    프론트엔드를 위한 REST API, 프론트엔드 자바스크립트 코드가 필요없어 집니다.

    프론트엔드 개발이 심플해집니다.

    라이브뷰에 대한 상세한 내용을 알고자 하신다면 아래 참고자료를 통해서 확인 바랍니다.

    LiveView를 요약하면 다음과 같습니다.

    요약하면 LiveView는 몇 가지 고유한 기능을 제공합니다.
    • LiveView는 지속적인 websocket 연결을 사용하여 상태 저장 경량 Elixir 프로세스로 이벤트를 보냅니다. 따라서 LiveView 애플리케이션은 사용자 이벤트에 거의 즉각적으로 반응합니다 . 그리고 클라이언트와 서버는 항상 동기화 상태를 유지합니다.
    • 서버 측 렌더링을 수행하는 다른 기술은 종종 모든 사용자 이벤트에 대해 전체 페이지를 전송하지만 LiveView는 변경된 사항을 정확히 알고 클라이언트에 변경된 값만 전송합니다.
    • 서버의 변경 사항을 여러 클라이언트에 푸시할 수도 있습니다. 이는 분산된 실시간 애플리케이션을 구축하는 데 정말 중요합니다 .
    • LiveView는 PubSub, 현재 상태 추적 및 인증 시스템이 내장된 Phoenix 플랫폼 위에 구축되었습니다 . 그리고 전체 스택은 확장성이 뛰어나고 내결함성이 있는 Erlang VM에서 실행되므로 Phoenix는 수백만 개의 동시 웹 소켓 연결을 안정적으로 처리할 수 있습니다.
    • 간단하지만 강력한 프로그래밍 모델로 사용하기 편리합니다!
    대체로 LiveView를 사용하면 대화형 실시간 웹 앱을 더 빠르고 적은 코드로 구축할 수 있습니다.

     

    4. 참고자료

    공식홈페이지 : https://elixir-lang.org/

     

    elixir-lang.github.com

    Website for Elixir

    elixir-lang.org

    위키백과 Elixir

    https://ko.wikipedia.org/wiki/Elixir

     

    Elixir - 위키백과, 우리 모두의 백과사전

    위키백과, 우리 모두의 백과사전. 엘릭서(Elixir)는 얼랭(Erlang) 가상 머신(BEAM) 위에서 동작하는 함수형, 동시성 프로그래밍 언어이다. 엘릭서는 얼랭이 보유하고 있는 분산 처리, 장애 내구성, 실

    ko.wikipedia.org

     

    liftIO 2022 : 웹 개발의 모순과 Elixir 가 특효약인 이유 - 한국축산데이터 CTO Max(이재철)

    https://www.youtube.com/watch?v=lAaD-6OQSHE 

     

    Phoenix.LiveView 설명

    https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html

     

    Phoenix.LiveView — Phoenix LiveView v0.18.18

    Settings View Source Phoenix.LiveView behaviour (Phoenix LiveView v0.18.18) LiveView provides rich, real-time user experiences with server-rendered HTML.The LiveView programming model is declarative: instead of saying "once event X happens, change Y on the

    hexdocs.pm

     

    What is phoenix liveview?

    https://pragmaticstudio.com/tutorials/what-is-phoenix-liveview

     

    The Pragmatic Studio

    Premium video courses for software developers. Real apps. Real code. Really good stuff!

    pragmaticstudio.com

    How We Got to LiveView

    https://fly.io/blog/how-we-got-to-liveview/

     

    How We Got to LiveView

    I'm Chris McCord. I work at Fly.io and created Phoenix, an Elixir web framework. Phoenix provides features out-of-the-box that are difficult in other languages and frameworks. This is a post about how we created LiveView, our flagship feature.

    fly.io

    Walk-Through of Phoenix LiveView

    https://elixirschool.com/blog/phoenix-live-view/

     

    Blog · Elixir School

    Learn how to use Phoenix LiveView for real-time features without complicated JS frameworks. It’s here! Phoenix LiveView leverages server-rendered HTML and Phoenix’s native WebSocket tooling so you can build fancy real-time features without all that com

    elixirschool.com