ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 서버와 Elixir Phoenix 기능
    Elixir 프로그래밍 2019. 10. 1. 21:11

    웹 서버의 기능

    위의 그림은 웹서버의 기능을 간략히 표현한것 입니다. 

     

    • 웹서버는 클라이언트(브라우저)의 접속과 요청을 받아 그에 해당하는 응답을 주는 기능을 합니다.
    • 웹서버는 여러가지 항목에 대한 응답을 하며, 클라이언트는 어떤 항목을 원하는지를 URI 로 지정하여 웹서버에 요청하게 됩니다.
    • 웹서버는 요청을 받은 URI에 따른 응답을 주며, HTML 또는 JSON 응답을 줍니다.
    • 웹서버는 응답 HTML이나 JSON을 생성하기 위해 DB에 있는 자료를 참조하기도 합니다.

     

    결국, 웹 서버는 다음의 기능을 수행할 수 있어야 합니다.

     

    • 클라이언트의 접속을 받을수 있어야 한다.
    • 클라이언트의 요청에 따라 해당하는 처리를 하는 함수로 분기를 시킬수 있어야 한다.
    • DB의 자료를 참조할 수 있어야 한다.
    • DB의 자료를 HTML 또는 JSON응답으로 변환할 수 있어야 한다.
    • 응답 데이터를 클라이언트 측에 전달할 수 있어야 한다. 

    Elixir Phoenix 프레임워크는 위의 모든 기능을 가지고 있습니다. 

    아래의 그림은 Phoenix 의 어떤 부분이 웹서버의 각 기능을 수행하는지에 대한 그림입니다.

     

    Elixir Phoenix의 웹 서버 기능

    • cowboy lib : HTTP 서버의 기능을 수행합니다. HTTP 서버가 라이브러리 형태로 동작하기 때문에 별도의 아파치 같은 별도의 위부 HTTP 서버 프로그램이 불필요 합니다. 환경설정에서 어떤 Port 를 사용할지, SSL을 사용하는 경우 인증서의 지정등 HTTP 서버의 모든 기능을 수행합니다. 
    • Router Module : 클라이언트의 URI를 해석하여 지정된 모듈의 함수를 호출하는 기능을 수행합니다. 처리함수에서의 사용 편이성을 위해 URI를 분석하여 Map으로 변환하여 처리 함수에 전달하는 기능도 수행합니다.
    • .ex Module : 우리가 작성하는 응답처리 함수 입니다. Elixir의 일반 모듈과 함수 입니다. 어떤 URI에 따라 어떤 모듈의 어떤 함수가 호출될지는 Router에서 지정하게 됩니다. 
    • Ecto Lib : Elixir의 DB 처리 라이브러리 입니다. Java의 iBatis 와 같은 역할을 합니다. DB에 대한 쉬운 조회,수정,생성의 기능을 제공합니다. 
    • EEx : DB의 record 또는 Elixir의 Map, List와 같은 자료를 HTML으로 변환하는 기능을 수행합니다. JSP 와 같은 역할을 합니다. 직관적이며 Elixir의 모든 기능을 사용가능하므로, 자료를 쉽게 HTML 화 할 수 있습니다.

    이외에 Endpoint 라는 기능도 있으며, 이는 HTTP 에 대한 Header 처리, Session 처리등의 웹서버의 공통 기능에 대한 처리를 수행합니다. Endpoint는 Elixir 공식 프로젝트중 하나인 Plug를 이용하는데, 이에 대한 내용은 나중에 적도록 하겠습니다.

     

    Elixir의 Phoenix 를 배운다는 것은, 결국 위에 있는 각 기능의 사용법을 배우는 것입니다.  cowboy에 대해서는 따로 개발작업 없이 설정만 하면 되므로 실제 배워야하는 항목은 Router, Ecto , EEx 입니다. 

     

Designed by Tistory.