서버리스 기능 소개

5651 단어 aws
서버리스 기능은 클라우드라고도 하는 관리형 인프라에서 호스팅되는 기능입니다. 그들은 인스턴스 유지, 가동 시간 및 확장에 대한 모든 책임을 스스로 집니다. 개발자로서 걱정해야 할 것은 비즈니스 가치를 제공하는 기능입니다. 코딩해야 하는 모든 추가 시간을 상상할 수 있습니까?!

주기적으로 나는 좋은 아이디어(또는 내가 생각하기에 좋은 아이디어)를 얻고 그것을 만들고 싶지만 아직 그것에 돈을 쓰고 싶지는 않습니다. 이 시나리오에서 서버리스 기능은 생명의 은인이었습니다. 대부분의 클라우드 공급자는 매달 일정량의 함수 호출을 무료로 허용할 것입니다. 즉, 사용하기 시작할 때까지 라이브 솔루션을 무료로 개발할 수 있습니다. 이것은 신생 기업에게 엄청난 것입니다!

청구서도 정말 훌륭합니다. 기능이 실행될 때만 비용을 지불합니다! 그냥 거기에 앉아 인스턴스 비용을 지불할 필요가 없습니다! 이것은 대기업에서 일하는 개발자에게는 큰 의미가 없을 수 있지만 비즈니스에서 기술을 채택하려는 경우 이러한 종류의 정보는 매우 중요합니다. 재정적 절감은 사업의 큰 부분을 차지합니다.

예를 들어 Google Cloud Platform , Amazon Web ServicesMicrosoft Azure 과 같은 서버리스 기능을 갖춘 클라우드 컴퓨팅 회사가 많이 있습니다.

하루 종일 서버리스에 대해 이야기하거나 서버를 구축하고 작동 방식을 보여줄 수 있습니다. 부담 없이 따라해 보세요. 이 예에서는 일반적으로 AWS라고도 하는 Amazon Web Services에서 Lambda Functions을 사용합니다.

간단한 Hello World 함수를 살펴보겠습니다.

const plainOldFunction = () => {
  console.log('Hello World');
}

module.plainOldFunction = plainOldFunction;


호출 후...

const { plainOldFunction } = require("./functions");

plainOldFunction();


"Hello World"의 예상 출력이 표시됩니다.




다음은 클라우드에서 호출되는 함수로 AWS 핸들러를 사용하는 함수입니다. 이벤트 개체가 필요합니다(아래 참조 예). 이름이 "firstName"인 필드가 있는 이벤트 본문의 개체에 액세스할 수 있을 것으로 예상합니다.

const awsHandler = (event, context) => {
  try {
    console.log(`Hello ${event.body.firstName}`);
  } catch (error) {
    return console.error(error);
  }
};



API 게이트웨이에서 Lambda 함수가 호출될 때 AWS 이벤트가 인수로 표시되는 모습입니다. api 게이트웨이에 대한 자세한 정보는 찾을 수 있습니다here.

{
    "resource": "/",
    "path": "/",
    "httpMethod": "GET",
    "requestContext": {
        "resourcePath": "/",
        "httpMethod": "GET",
        "path": "/Prod/",
        ...
    },
    "headers": {
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "accept-encoding": "gzip, deflate, br",
        "Host": "70ixmpl4fl.execute-api.us-east-2.amazonaws.com",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
        "X-Amzn-Trace-Id": "Root=1-5e66d96f-7491f09xmpl79d18acf3d050",
        ...
    },
    "multiValueHeaders": {
        "accept": [
            "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
        ],
        "accept-encoding": [
            "gzip, deflate, br"
        ],
        ...
    },
    "queryStringParameters": null,
    "multiValueQueryStringParameters": null,
    "pathParameters": null,
    "stageVariables": null,
    "body": {
      "firstName: "Josh"
    },
    "isBase64Encoded": false
}



함수가 작동하는 것을 보여주기 위해 로컬에서 함수를 호출합니다(위의 예제 이벤트 포함). 또한 기능을 다루기 위해 단위 테스트를 추가하는 것이 좋습니다.

const event = require("./lambdaEvent.mock.json");

awsHandler(event, {});


"Hello {provided first name from event}"라는 예상 출력이 표시됩니다.




이것이 서버리스 기능의 세계를 이해하기를 바랍니다. 자세한 내용은 https://docs.aws.amazon.com/lambda/?id=docs_gateway에서 AWS Lambda 문서를 참조하는 것이 좋습니다. https://docs.aws.amazon.com/에서 사용 가능한 다양한 AWS 서비스에 대해 읽을 수도 있습니다.

질문이 있으시면 언제든지 Twitter 또는 Github를 통해 저에게 연락해 주세요.

행복한 코딩!


Josh Oppenheim은 ​​Thisdot Labs의 수석 소프트웨어 엔지니어입니다.

트위터:

Github: Syntactual


이 Dot Labs는 기업이 디지털 전환 노력을 실현할 수 있도록 지원하는 데 중점을 둔 최신 웹 컨설팅 회사입니다. React, Angular, Vue, Web Components, GraphQL, Node, Bazel 또는 Polymer에 대한 전문적인 아키텍처 지침, 교육 또는 컨설팅을 받으려면 thisdotlabs.com을 방문하십시오.

이 Dot Media는 모두를 위한 포용적이고 교육적인 웹을 만드는 데 중점을 둡니다. 이벤트, 팟캐스트 및 무료 콘텐츠를 통해 최신 웹의 최신 정보를 알려드립니다. 자세한 내용은 thisdot.co 을 방문하십시오.

좋은 웹페이지 즐겨찾기