DevOps

    [ DevOps ] - (AWS Lambda) 스케일링과 동시성

    [ DevOps ] - (AWS Lambda) 스케일링과 동시성

    Cold Start 우선 Lambda에서 가장 중요한 개념은 Cold Start입니다. ColdStart는 EC2인스턴스가 최초로 만들어 지고 API Call이 되어질 떄 환경이 구축되는 시간입니다. 이 Cold Start 시간을 줄이기 위한 AWS의 노력이 많았습니다. 막 EC2를 10분동안 유지시키고 이 시간에 다시 요청이 들어오면 이를 재사용 하는 방법으로 말이죠. 또한 5분마다 무조건 한 번씩 Trigger를 시켜서 환경을 유지시키는 방법입니다. 하지만 이전에도 말했듯이 이러면 Lambda의 장점을 다 없애버리는 행위입니다. 그리고 이전에는 Lambda의 코드 사이즈가 매우 작았습니다. 하지만 머신러닝 학습 같은 요청을 하게 되면 함수 코드의 사이즈와 외부 패키지 사이즈가 매우 커지게 됩니다. 따..

    [ DevOps ] - (API 게이트웨이) Cors

    [ DevOps ] - (API 게이트웨이) Cors

    기존에 Cors에 대해서 알아보았지만 여기서 좀더 자세해 알아보고 직접 API gateway에 설정해 보도록 하겠습니다. CORS 브라우저는 기본저그올 SOP정책을 따릅니다. 하지만 웹 폰트를 사용하거나, A, B, C.com에서 네이버 APi또는 카카오 API로 요청을 보내는 등 다른 도메인을 가진 API 서버에 요청을 보내는 경우들이 많기 때문에 다른 오리진으로의 요청을 안전하게 허용할 필요성이 생기게 됩니다. 따라서 CORS정책으로 다른 오리진의 요청을 제한적으로 허용했습니다. ( 만약 어떠한 제약없이 모든 출처에 대한 요청을 열어놓는다면 어떤 문제가 발생할까?) 유저 김코딩이 웹사이트 A에 로그인하여 토큰이 브라우저의 쿠키에 저장되어 있다고 해봅시다. 이떄, 김코딩이 개인정보를 탈취하기 위해 악의..

    [ DevOps ] - (API 게이트웨이) Canary 배포

    [ DevOps ] - (API 게이트웨이) Canary 배포

    Canary 배포를 하는 방법은 크게 2가지가 존재합니다. lambda function자체를 활용하는 방법과 Rest Api Gateway를 추가로 활용하는 방법이 있습니다. 여기서는 Gateway를 활용해서 Canary Release를 해보도록 하겠습니다. 왜냐하면 이게 더 간단하게 진행할 수 있기 떄문입니다. 방법 1 이를 위해서 우선 버전2를 하나 더 만든 다음에, 기존의 prod라는 별칭을 삭제하고, 새로 prod라는 별칭을 아래와 같이 버전1, 버전2의 가중치를 9 : 1로 설정해 줍니다. 기존에 만든 것과 같이, 별칭을 만들고 이에 대한 /shops경로에 대한 GET메소드를 추가하고 위 canaryFunction:prod에 연결해 주도록 하겠습니다. 이렇게 한 다음에 스테이지 변수를 조금 바꾸..

    [ DevOps ] - (API 게이트웨이) Lambda와 Rest API Gateway 연결

    [ DevOps ] - (API 게이트웨이) Lambda와 Rest API Gateway 연결

    이번시간에는 간단히 REST Api Gateway를 구축하고 다음시간에 Lambda를 통해서 Canary 배포를 통한 버전관리를 어떻게 하는지 알아보도록 하겠습니다. 이렇게 일단 api gateway를 만들어 주겠습니다. 그리고 canary배포를 위한 lambda function을 하나 더 만들어 주겠습니다. 그리고 별칭을 prod라는 이름으로 만들어 주었습니다. 이는 나중에 버전을 더욱 많이 만들어서 canary 배포할 떄 가중치를 주어서 배포할 수 있기 도와주는 역할을 하게 됩니다. 바로 REST Api Gateway로 들어가서 /shops리소스에 이 canaryFunction Lambda function:prod를 연결해 보도록 하겠습니다. 그냥 lambda function이름 다음에 :을 붙이고 ..