전체 글

전체 글

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

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

    우선 이번시간에는 API게이트웨이와 Lambda의 연결을 간단히 구축해 보도록 하겠습니다. 이를 위해서 AWS Lambda의 코드를 위와 같이 변경해 줍니다. statusCode와 body를 json으로 반환하게 했습니다. 그 다음에는 바로 API게이트 웨이를 생성하도록 하겠습니다. 먼저 GET -> / 의 경로를 하나 만들고 이에 대한 통합 연결을 설정해 줍니다. 이에 대한 통합 유형은 우선 Lambda함수로 지정해 줍니다. 그리고 우리가 이전에 만든 firstlambda와 연결해 주는 과정을 거칩니다. 그럼 우리가 만든 firstgateway에 우리가 만든 경로가 잘 부착된 것을 보실 수 있습니다. 그리고 gateway의 url로 들어가게 되면 위에서 기본적으로 lambda에서 작성된 결과가 잘 출력..

    [ DevOps ] - (API 게이트웨이) Lambda 함수 생성 및 모니터링

    [ DevOps ] - (API 게이트웨이) Lambda 함수 생성 및 모니터링

    람다 실습 여기에서는 이름과 런타임을 선택할 수 있습니다. 런타임은 이전에도 말했지만 컨테이너를 구축하는데 필요한 환경입니다. 이 환경을 구축하기 위해 평균 0.8초 정도 걸린다고 했습니다. 그리고 코드로 들어가서 실행할 함수를 작성해야 합니다. 함수의 이름은 lambda_handler이고 인자로는 event, context가 오는 것은 하나의 규칙입니다. 따라서 이에 맞춰서 간단한 함수를 작성해 보았습니다. 그리고 이 함수를 실행시키기 위해서 하는 방법 중 가장 흔한 방법은, 트리거를 설정해 주는 것입니다. Apache Kafka, API 게이트웨이, S3, Dynamo DB등을 활용할 수 있는데, 이는 다음에 하고 지금은 Cloud console에서 이를 실행해 보도록 하겠습니다. 이를 실행하기에 앞..

    [ DevOps ] - (API 게이트웨이) API게이트웨이의 구성 요소들

    [ DevOps ] - (API 게이트웨이) API게이트웨이의 구성 요소들

    CORS CORS는 이전에도 많이 했으므로 그냥 넘어가도록 하겠습니다. Canary 배포 만약 내가 배포를 하고 싶다고 해 봅시다. 그런데, 개발자 입장에서는 완벽히 버그를 수정했다고 생각했는데, 자신이 없는 경우가 있을 수 이습니다. Canary배포를 하게되면, 만약 100명의 유저가 들어오게 된다면, 90명의 유저에게는 업데이트 전의 API를 호출시키게 하고, 10명의 유저에게는 업데이트 후의 API를 호출시키게 합니다. 이런식으로 10% ~ 1%유저에게만 이를 노출하고 로그를 확인함으로써 조금더 API를 수정하는 것이 Canary배포의 기본적인 개념이라고 할 수 있습니다. 따라서 Canary트래픽을 적은 수준으로 유지하고 선택이 임의로 이루어지면 대부분의 사용자는 새 버전의 잠재적인 버그의 영향을 ..

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

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

    AWS API 게이트웨이 AWS API게이트 웨이에 대해 먼저 짚고 넘어갈 필요가 있습니다. 기존에는 다음과 같이 MSA에서도 request모듈을 활용해서 요청을 보냈습니다. 하지만 API게이트 웨이는 이를 조금더 사용하기 편리하게 하려고, 이 사이에 꼽힙니다. 만약에 gate/b가 gate/a에 포함되어 지어야 한다고 상황을 가정해 봅시다. 그러면 다시 request.get('~~~')이 안의 url들을 싹다 바꾸어 주어야 했습니다. 하지만 이런 경우에서는 API게이트 웨이의 매핑되는 url만 살짝 바꾸어 주면 됩니다. 이 외에도 요청하는 호스트의 도메인을 차단해서 보안을 유지할 수도 있습니다. 이가 가능한 이유는 모든 REST API는 이 API 게이트웨이를 거쳐서 진행되기 때문입니다. 그래서 관리가..

    [ DevOps ] - (개요) AWS Lambda 소개

    [ DevOps ] - (개요) AWS Lambda 소개

    AWS Lambda 이는 기존의 실습보다 보다 쉬울 수 있습니다. 왜냐하면 Lambda자체가 MSA보다 실무에서 사용하기에 이점보다 던점이 더 많기 때문입니다. AWS Lambda는 어떤 일이 있어났을 때 트리거되는 함수(코드)라고 이전에도 말했습니다. 그리고 이는 API Gateway, S3,dDynamoDB, RDS로 인해서 Lambda가 트리거 되었다고 해 봅시다. 맨 처음에 함수가 실행되면 Lambda에서 컨테이너 라는 것을 만듭니다. 그냥 EC2라고 보시면 됩니다. EC2안에서 함수 실행에 필요한 환경 설정들을 다 해주고 ( 예를들어 numpy같은 것을 설치 ) 이런 작업들을 할 때, 대부분 0.8초 걸립니다. 이를 평균적으로 0.8초라는 딜레이가 나오게 됩니다. 또한 만약 함수가 호출되면 La..

    [ DevOps ] - (개요) 서버리스 아키텍트 소개

    [ DevOps ] - (개요) 서버리스 아키텍트 소개

    서버리스 아키텍트 서버리스를 음식점에 비유해 보겠습니다. 마치 음식점에 손님이 있다고 해 봅시다. 그럼 손님의 손이 들면 그때서야 직원이 주문을 받아주게 되는, 즉 항시 대기가 아니라 필요할 때만 쓰는 것이라고 보면 됩니다. 서버리스는 서버가 진짜로 없는것이 아니라, 추상화 시켜서 없는 것 같이 보이는 것입니다. 항상 대기하는 전용 서버가 없어서 실행을 완료하면 자원을 반납하게 되는 구조입니다. 이에 대표적으로 AWS Lambda, Google Firebase가 있습니다. 서버리스의 장점먼저 사려보도록 하겠습니다. 우선 기존의 EC2같은 것을 보면, 어쨋든 컴퓨팅 파워는 켜져있기 때문에, 접속이 없더라도 과금이 발생하게 됩니다. 하지만 서버리스는 말 그대로 함수가 실행될 때만 서버가 있는 듯한 느낌을 주..

    [ DevOps ] - codepipeline 구성하기 (deploy + build)

    [ DevOps ] - codepipeline 구성하기 (deploy + build)

    AWS에서 제공하는 서비스를 이용한 CI/CD구성은 아래와 같습니다. 우선 AWS에서 제공하는 CI/CD 솔루션을 알아보겠습니다. CodeCommit 먼저 기존 코드를 Github에서 AWS CodeCommit으로 마이그레이션 한다. AWS CodeCommit은 AWS에서 호스팅하는 버전 제어 서비스로 클라우드에서 자산을 비공개로 저장하고 관리하는데 사용합니다. CodeBuild 애플리케이션 코드를 빌드하기 위해 CodeBuild를 구성한다. AWS CodeBuild는 소스 코드를 컴파일하고 테스트를 샐행하며 배포 준비가 된 소프트웨어 패키지를 생성하는 완전히 관리됩니다. CodeDeploy 코드를 EC2서버에 배포합니다. AWS CodeDeploy는 Amazon EC2인스턴스, 온 프레미스 인스턴스 또..

    [ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) AWS Code Pipeline을 활용한 CD 파이프라인 구축

    [ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) AWS Code Pipeline을 활용한 CD 파이프라인 구축

    이를 하기는 쉽습니다. 간단히 AWS CodeCommit, Github에 커밋에 된다면 이를 알아차리고, 테스팅과정을 거치고, AWS Beanstalk에 자동으로 배포되는 과정을 거쳐야 하는 겁니다. 그냥 AWS pipeline에서 이를 생성하는 과정을 간단히 알아보도록 하겠습니다. 간단히 github 레포와 연결하고, 이 git에서 commit되었을 떄, 바로 배포가 되게끔 한거와 마찬가지 입니다. 하지만 아직 제가 등록한 git에서 테스팅 ( buildspec.yml ), 배포와 관련된 elastic beanstalk설정들을 해주지 않아서 실패가 뜹니다. 만약에 이들을 다 설정하고 배포하고, 파이프라인에 등록하게 되면 성공하게 될겁니다. 최종적으로 여기서 CodeCommit만을 제외한 파이프라인이 완..

    [ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) Elastic Beanstalk를 활용한 배포

    [ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) Elastic Beanstalk를 활용한 배포

    우선 간단히 Beanstalk에 대해 다시 되짚고 넘어가도록 하겠습니다. AWS Elastic Beanstalk특징 빠르고 간단하게 서버 구성 : 배포 과정을 Elasitc Beanstalk에서 처리하기 때문에 코드를 업로드하면 배포부터 EC2, 로드밸런싱, 오토 스케일링, 모니터링 설정을 Elastic Beanstalk 한곳에서 할 수 있고, 이후 과정을 Elastic Beanstalk가 자동으로 처리합니다 Elastic Beanstalk은 크게 Application(앱), Environment(환경)으로 이루어 집니다. 어떠한 앱과, 이 앱이 돌아가는 환경으로 크게 이루어 집니다. 또한 하나의 어플리케이션이 여러개의 환경을 가질 수 있습니다. 바로 실습을 통해서 알아보겠습니다. 실습 바로 ubuntu..

    [ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) 코드 테스트 파이프라인 구축

    [ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) 코드 테스트 파이프라인 구축

    이번시간에는 간단히 Django에서 테스팅 코드를 어떤식으로 짜는지 알아보겠습니다. 전에 Node.js에서 Jest로 테스트 코드를 목업한 것과 매우 비슷하게 짤 수 있었습니다. /order/user_order/tests.py from django.test import TestCase from .models import Order, Shop class ShopModelTest(TestCase): def test_sample(self): temp = True self.assertIs(temp, True) def test_sample2(self): temp = True self.assertIs(temp, True) def test_sample3(self): temp = True self.assertIs(te..