파리가 있는 간이 서버 용기목위일

서버가 없는 응용 프로그램을 구축하려면 사고방식에 상당한 변화가 필요하다.이 모든 기능과 차가운 시작은 서버에 익숙해진 사람들에게 새로운 세상과 같다.Fly.io 함수가 아닌 서버 용기를 배치할 수 있는 서비스를 통해 이러한 문제를 완화시키려고 합니다.
AWS 폭죽을 기반으로 한 AWS Lambda는 용기 PaaS 스타일을 실행하는 방식을 제공하지만 서버가 없는 yon-demand pricing를 사용했다.
나는 그것으로 웹소켓을 기반으로 한 채팅 프로그램을 구축해 보았는데, 이렇게 하면 네가 무엇을 날고 있는지 볼 수 있을 것이다.애아가 해준 모든 것들!

서버 컨테이너 채팅 없음
TL;DR 예제 어플리케이션의 코드를 GitHub에 찾을 수 있습니다.
Node를 기반으로 간단한 채팅 애플리케이션을 구축하겠습니다.js, Express 및 Socket.이오.모두 파리 한 마리로 배치하다.io 용기!

선결 조건
이 자습서를 배우려면 다음 사항이 필요합니다.
  • A Node.js & NPM installation
  • A fly.io account
  • The flyctl CLI tool

  • 노드를 설정합니다.js 프로젝트
    NPM을 사용하여 새 노드를 생성할 수 있습니다.js 항목:
    $ mkdir flyio-websockets
    $ cd flyio-websockets
    $ npm init -y
    

    NPM 패키지 설치
    Express와 Socket을 사용할 것이기 때문입니다.입출력(I/O)을 설치하려면 먼저 설치해야 합니다.
    $ npm i express socket.io
    

    백엔드 구현
    백엔드를 수행하려면 다음 코드가 포함된 index.js 파일을 만들어야 합니다.
    const http = require("http");
    const express = require("express");
    const socketIo = require("socket.io");
    
    const app = express();
    const httpServer = http.createServer(app);
    const wsSever = socketIo(httpServer);
    
    app.get("/", (request, response) =>
      response.sendFile(__dirname + "/index.html")
    );
    
    let userNumber = 1;
    wsSever.on("connection", (socket) => {
      const userId = "User-" + userNumber++;
      socket.on("msg", (msg) =>
        wsSever.emit("msg", userId + ": " + msg)
      );
    });
    
    httpServer.listen(8080);
    
    백엔드를 만들려면 20줄도 안 되는 코드가 필요합니다.우선 HTTP와 WebSocket 서버를 설치한 다음 무엇을 해야 하는지 알려 드리겠습니다.
    HTTP 서버는 소켓을 제공합니다.입출력 클라이언트 라이브러리와 index.html 파일은 나중에 저희 클라이언트로 사용할 것입니다.
    WebSocket 서버는 WebSocket 연결을 기다리고 받은 각msg 이벤트를 모든 클라이언트에게 전달합니다.클라이언트가 누가 썼는지 볼 수 있도록 메시지에 사용자 ID를 추가합니다.
    그리고 우리는 포트8080를 들었다.

    구현 클라이언트
    HTTP 서버에서 전달될 클라이언트의 경우 다음 코드를 포함하는 index.html 파일을 만들어야 합니다.
    <!DOCTYPE html>
    
    <title>Serverless Container Chat</title>
    
    <form>Say Something: <input /></form>
    <hr>
    <div></div>
    
    <script src="/socket.io/socket.io.js"></script>
    
    <script>
      const socket = io();
    
      const form = document.querySelector("form")
      const input = document.querySelector("input")
      const div = document.querySelector("div");
    
      form.addEventListener("submit", (event) => {
        event.preventDefault();
        socket.emit("msg", input.value);
        input.value = "";
        return false;
      });
    
      socket.on("msg", (msg) => {
        div.innerHTML += `${msg}<hr>`;
      });
    </script>
    
    보시다시피 HTTP 서버도 플러그인을 위탁 관리합니다.입출력 클라이언트 라이브러리는 외부 의존 없이 즉시 포함할 수 있습니다.

    시작 스크립트 추가
    엄밀히 말하면, 우리의 현재 설정을 시도할 필요는 없지만, 잠시 후에 시도할 것이다.io 서비스는 NPM 시작 스크립트를 사용하기 때문에 하나를 만듭니다.이렇게 하면, 우리는 현지에서 모든 것이 정상인지 아닌지를 검사할 수 있다.package.json에는 다음 코드가 포함되어야 합니다.
    {
      "name": "flyio-websockets",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "start": "node ."
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.17.1",
        "socket.io": "^2.3.0"
      }
    }
    

    로컬에서 응용 프로그램 테스트
    어플리케이션을 실행하려면 지금 NPM 스크립트를 사용할 수 있습니다!
    $ npm start
    
    우리는 http://localhost:8080/ 아래의 브라우저에서 이 프로그램에 접근해서 모든 것이 정상인지 확인할 수 있다.

    파리까지.io 지원
    이제 우리는 스스로 포함하는 노드가 하나 생겼다.js 응용 프로그램, 우리는 파리를 추가할 수 있습니다.배치 정보를 포함하는 fly.toml 프로필을 만들어서io를 지원합니다.
    app = "flyio-websockets"
    
    [build]
      builtin = "node"
    
    [[services]]
      internal_port = 8080
      protocol = "tcp"
    
      [services.concurrency]
        hard_limit = 25
        soft_limit = 20
    
      [[services.ports]]
        handlers = ["http"]
        port = "80"
    
      [[services.ports]]
        handlers = ["tls", "http"]
        port = "443"
    
      [[services.tcp_checks]]
        interval = 10000
        timeout = 2000
    
    날아오르면서부터io는 <APP_NAME>.fly.dev 에 응용 프로그램을 배치할 것입니다. 선택한 이름으로 바꿔야 합니다. flyio-websocketsbuild 섹션에서는 Fly에 대해 설명합니다.우리는 노드를 운행한다.js 응용 프로그램.fly CLI는 항목을 번들로 묶어 fly로 업로드합니다.io 서비스, 저희 의존항을 설치하고 모든 내용을 Docker 이미지에 저장합니다. 이 이미지는 저희 배치의 기초가 됩니다.services 부분에서 우리가 노드에서 사용하는 용기에 특정한 포트를 정의했다.js 응용 프로그램.services.ports로 파리에게 알려주세요.io 외부에서 이 포트에 접근하는 방법
    그리고 크기 조절과 상태 검사를 위한 추가 설정도 있습니다.
    이것이 바로 그것의 전부이며, 단지 작은 TOML 파일일 뿐이다.

    어플리케이션 배포
    이제 우리는 마침내 응용 프로그램을 배치할 준비가 되었다.이오.
    다음 명령을 사용하여 배포할 수 있습니다.
    $ fly deploy
    
    이 명령은 보기 fly.toml 를 해서 우리의 파일을 업로드하고 파리에게 알려 줍니다.io 서비스로 모든 것을 구축하고 실행합니다.
    몇 초 후에 명령이 완성되어야 합니다.status 명령을 실행할 수 있습니다.
    $ fly status
    
    status 명령의 출력은 프로그램이 있는 URL을 포함해야 합니다.

    대안으로 사용할 서버 컨테이너 없음
    장기적으로 볼 때 무서버 모델은 우리가 운영 비용을 최대한 줄이는 데 도움을 줄 수 있다.그러나 모든 사람과 그들의 개는 서버가 없는 것이 적합하지 않은 문제가 있기 때문에 용기는 곧 사라지지 않을 것이다.
    날아라.io는 이 분야에서 좋은 제품인 것 같습니다. IaC 도구의 지원을 받을 때 많은 시간을 절약할 수 있다고 생각합니다.
    당신은 어떻게 생각합니까?Heroku와 비슷한 제품을 더 원하십니까, 아니면 서버가 없는 것이 올바른 방향입니까?댓글로 알려주세요!

    좋은 웹페이지 즐겨찾기