서버 없는 AWS 간단한 소개

서버 없음이란 무엇입니까?


Serverless는 여전히 서버를 사용하고 있다는 것을 의미하지만, 이 서버를 직접 조립하고 관리하는 것이 아니라, 이 서버들은 AWS, Azure, 구글 클라우드 등 공급자가 제공하는 클라우드에서 실행된다.그들은 코드(함수)를 실행하기 위해 자원을 동적으로 분배하고, 이 코드를 실행하는 자원 수량에만 비용을 받는다.대부분의 경우, 코드는 무상태 용기에서 실행되며, 이 용기는 HTTP 요청, 데이터베이스 이벤트, 파일 업로드 또는 CRON 작업 등 이벤트로 촉발될 수 있다.무상태 용기는 자신의 함수 이전이나 이후에 실행된 다른 함수에 의존할 수 없다는 것을 의미하며, 매번 새 용기의 한 함수 내에서 모든 작업을 완성합니다.모든 것이 하나의 단일한 작은 서비스 (마이크로 서비스) 가 될 것이며, FaaS (기능 즉 서비스) 라고도 할 수 있다.
일부 유행하는 무서버 기술은 구글의 Firebase, 일부 AWS 서비스, 일부 azure 서비스와 무서버(https://www.serverless.com를 포함한다. 그 중에서 무서버 자체는 반드시 서비스가 아니라 클라우드 공급자의 무서버 응용 프로그램을 개발, 배치, 감시하는 유행하는 도구이다.이번에는 AWS의 서버 없는 서비스에 중점을 두겠습니다.

서버 없는 이점:

  • 자체 서버 설치 불필요
  • 기본 확장성
  • 비용 절감
  • 신속한 배포/업데이트 가능
  • 유연성
  • 서버 없는 단점:

  • 디버깅은 때때로 고통스럽다
  • 공급업체 잠금
  • 보안 문제
  • 무상태입니다. 서버 없음
  • 에서만 모든 내용을 구축할 수 없습니다.
  • 통합 테스트의 어려움
  • 콜드 스타트


    함수를 호출할 때마다 필요에 따라 용기를 만들고 이 함수를 실행합니다.이 용기는 호출된 후에 한동안 존재할 수 있습니다. 만약 이 용기가 다음에 이 함수를 호출할 때 실행되고 있다면, 응답은 매우 빠르지만, 일정 시간 후에 이 용기는 다시 삭제되고, 이 함수를 다시 호출할 때 새 용기를 만들어야 합니다.

    AWS 서버 없음


    AWS Lambda


    AWS 콘솔에 로그인하여 lambda 섹션으로 이동하면 lambda 함수를 쉽게 만들 수 있습니다.거기서 함수를 만들고 첫 번째 함수를 만들 수 있습니다!

    이제 NodeJS를 사용하여 함수를 처음부터 만듭니다. 원하는 이름을 선택할 수 있습니다. "기본 Lambda 권한이 있는 새 역할 만들기"옵션을 선택할 수 있지만, 다른 기능에 대해서는 일반 역할을 만듭니다. 권한이 변하지 않으면 모든 기능에 대해 이 역할을 선택하는 것이 좋습니다.

    이 화면에서 실제 기능을 만들 수 있습니다. 두 가지 중요한 부분은 트리거와 기능 코드 자체입니다.트리거는 API 게이트웨이를 통해 함수를 호출하는 방법을 지정합니다(나중에 자세히 설명합니다). 또는 CRON 작업(eventBridge).함수 코드는 실제 노드입니다.js 코드는 다음과 같습니다.
    exports.handler = async (event, context) => {
        // Your code implementation 
    
        const response = {
            statusCode: 200,
            body: JSON.stringify('Hello from Lambda!'),
        };
        return response;
    };
    
    이벤트 대상은 트리거 함수에 대한 이벤트 정보를 포함하고, 상하문 대상은 lambda의 운행을 실행할 때의 정보를 포함합니다.이 응답은 JSON 형식으로 보내고자 하는 응답과 상태 코드와 본문을 포함합니다.비비동기 함수에서 세 번째 파라미터를 호출해서 응답을 보낼 수 있습니다.이 리셋을 호출할 때, Lambda는 이벤트가 끝날 때까지 기다린 다음 응답을 되돌려줍니다. 오류가 발생하면 오류를 되돌려줍니다.
    마지막으로 함수를 테스트하고 싶다면 왼쪽 상단에 테스트 이벤트를 만들고 컨트롤러에서 함수를 실행해서 모든 것이 정상인지 확인하세요!

    AWS API 게이트웨이


    API 게이트웨이는 AWS 서비스의 인터페이스 중 하나이며 외부 세계에 표시되도록 합니다(인증을 구축하고 있는 경우 사용자 이상).lambda 화면에서 API를 만들지만 API 게이트웨이 페이지에서 쉽게 API를 만들 수 있습니다.
    새로 만든 Lambda 함수로 돌아가면 왼쪽에 있는 트리거 추가 버튼을 클릭하고 팝업 창에서 API 게이트웨이를 선택하여 트리거를 추가합니다.

    이제 보안이 설정되지 않은 "RESTAPI"를 만들 것입니다. 따라서 "열기"를 선택하고 추가 단추를 누르면 우리의 API 및 API를 자동으로 만들 수 있습니다.API 게이트웨이 페이지에 들어가면 테스트, 검사, 이름 바꾸기, 설정 변경 등을 할 수 있습니다.

    GET 요청의 경우 메소드 요청에 들어가서 POST 요청에 대한 URL 쿼리 문자열 매개변수를 설정해야 할 수도 있고 본문 매개변수를 설정해야 할 수도 있습니다.
    몇 가지 팁: 방법을 변경할 때마다 API를 다시 배치해야 합니다. 그렇지 않으면 새로운 변경 사항이 반영되지 않습니다. 아주 유용한 테스트 기능이 내장되어 있습니다. COR을 설정해야 할 수도 있습니다. (위 페이지에서 쉽게 완성할 수 있습니다.)

    AWS 발전기 B


    Amazon DynamoDB는 간단한 확장 가능한 NoSQL 데이터베이스로 보통 lambda 함수와 함께 사용됩니다.이것은 lambda 함수에서 데이터를 저장, 검색, 업데이트, 삭제하는 데 쉽게 사용할 수 있습니다.이것은 매우 간단하기 때문에 나는 이번에 너무 많은 세부 사항을 토론하지 않을 것이다. 그러나 여기에는 사용 예가 하나 있다.
    const AWS = require('aws-sdk')
    
    AWS.config.update({ region: 'ap-northeast-1' })
    const dynamo = new AWS.DynamoDB({ apiVersion: '2012-08-10' })
    
    exports.handler = async event => {
        const params = {
            TableName: 'TABLE',
            Key: {
                KEY_NAME: { N: '001' }
            },
            ProjectionExpression: 'ATTRIBUTE_NAME'
        }
    
        dynamo.getItem(params, function(error, data) {
            if (error) {
                const response = {
                    statusCode: 400,
                    body: JSON.stringify(error)
                }
            } else {
                const response = {
                    statusCode: 200,
                    body: JSON.stringify(data.Item)
                }
            }
        })
    
        return response
    }
    
    DynamoDB 테이블에 대한 호출이 추가된 간단한 함수입니다.오류가 발생하면 오류 응답을 되돌려주고, 데이터를 성공적으로 검색하면 이 데이터를 되돌려줍니다.
    물론, 컨트롤러에 있는 DynamoDB 서비스로 이동하고createtable 단추를 누르면 쉽게 완성할 수 있는 DynamoDB 테이블을 만들어야 합니다.테이블을 만들려면 테이블 이름과 키를 지정하십시오.

    마무리 설명


    일반적으로 CLI 도구와 인프라를 코드로 사용하여 서버 또는 AWS SAM 없이 모든 인프라/기능을 관리할 수도 있습니다. 여기에는 유지 보수, 단순성, 로컬 운영 기능 등 여러 가지 이유가 있습니다.
    포함되지 않지만 다른 AWS 서버 없는 서비스에는 AWS Amplify(AWS에서 웹/모바일 응용 프로그램을 구축하는 데 사용되는 개발 프레임워크), Cognito(인증), S3(파일 저장소), CloudFront(CDN), Route53(DSN 서비스) 및 인증서 관리자가 포함되어 있어 AWS 서버 없는 기능을 사용하여 전체 프로젝트를 쉽게 구축할 수 있습니다.

    좋은 웹페이지 즐겨찾기