본문 바로가기

AWS16

AWS CodePipeline으로 CI/CD 구축하기 CodePipeline을 사용하면 repository에 코드를 푸시했을 때 빌드, 테스트, 배포까지 CI/CD를 한 번에 관리할 수 있다. 예제 코드는 AWS fargate 사용법에서 만들었던 fargate 코드를 기반으로 한다. code repository는 CodeCommit, 빌드는 CodeBuild, 배포는 Amazon ECS를 사용한다. IAM IAM -> Security credentials -> HTTPS Git credentials for AWS CodeCommit에서 credential을 생성한다. CodeCommit credential이 있으니 이제 CodeCommit에서 repository를 생성하고 git clone을 받을 수 있다. 위에서 받아온 자격 증명을 유지하기 위해 clon.. 2020. 5. 12.
AWS fargate 사용법 aws fargate는 ec2 인프라를 신경 쓸 필요 없이 container 배포 관리를 해준다. 따라서 기존 ECS와 달리 cluster의 리소스 관리를 안 해도 된다. 이런 serverless 특성으로 ECS와 lambda 중간쯤 위치한 서비스다. 요금도 lambda와 같이 초 단위로 사용한 만큼 과금한다. 기본 hello server const Koa = require('koa'); const app = new Koa(); app.use(ctx => { ctx.body = 'Hello'; }); app.listen(4000, () => { console.log('listening to port 4000'); }); node로 "Hello"만 응답하는 간단한 서버를 만들었다. FROM node:12 .. 2020. 5. 12.
AWS X-Ray aws x-ray는 분산 애플리케이션을 추적해서 분석하는 서비스다. 하나의 클라이언트 요청이 응답하기까지 여러 서비스를 거치게 되는데 이런 분산 환경에서 각 서비스별로 걸리는 시간, 메타 정보를 모아 시각화해준다. 분산 환경에서 산발적인 요청을 하나로 연결하기 위해 X-Amzn-Trace-Id 추적 헤더를 포함한다. aws sdk는 이 추적 헤더를 추가해서 여러 segment를 하나의 trace로 관리한다. 최초 요청에 대해 하나의 trace가 생성되고, trace는 여러 개의 segment로 구성된다. 하나의 segment는 여러 개의 subsegment로 또 나뉠 수 있다. 위 서비스 맵에서 보이는 그래프가 segment, subsegment를 표현한다. x-ray는 데이터 전송하는 데 사용되는 오버.. 2020. 5. 5.
AWS API Gateway lambda나 기타 서비스로 백엔드를 구축을 했으면, 이제 client에게 endpoint를 제공해야 한다. client 대상에 따라 특정 region, cloudfront edge, private VPC 중 한 곳에 생성한다. api gateway를 생성한 후에는 Resources 탭에서 REST API를 구성하고 deploy를 눌러 배포한다. api gateway 역시 serverless로 lambda 같은 serverless로 백엔드를 구축할 때 자주 사용한다. Deploy 작성한 API를 stage별로 나눠서 배포한다. stage별로 각 환경에 맞는 변수나 endpoint를 설정할 수 있다. 백엔드로 lambda를 사용하는 경우에는 환경별로 alias를 설정한다. Canary 트래픽을 기존 버전에.. 2020. 5. 2.
AWS Lambda lambda는 aws의 핵심 서비스로 서버를 관리할 필요 없이 작성한 코드를 함수 단위로 실행시킬 수 있다. 요청량에 따라 인프라 걱정 없이 실행되고 사용한 만큼만 과금한다. 이런 serverless의 장점을 바탕으로 aws의 다양한 서비스를 lambda와 결합해서 더 강력한 인프라를 구축할 수 있다. Cold start / Warm start lambda가 최초 실행되어 자원을 할당받아 컨테이너가 구동되고 함수 실행을 준비하는 것을 cold start라 부른다. lambda가 종료돼도 컨테이너는 바로 반납되지 않고 약간의 딜레이를 가진다. 이 시간 안에 다시 lambda가 실행되는 것을 warm start라고 한다. warm start로 기존에 실행했던 컨테이너에서 다시 실행이 된다면 handler 밖.. 2020. 4. 27.
AWS DynamoDB AWS DynamoDB는 fully managed 서비스로 NoSQL serverless database이다. mysql과 달리 database도 생성할 필요 없이 table만 추가해서 사용할 수 있으며 auto scaling으로 비용을 관리할 수 있고, 빠르고 일관된 성능을 보장한다. 어느새 multi table transaction 기능도 추가되어 유용하게 사용 가능하다. Primary Key Partition key 테이블을 생성할 때 partition key를 지정한다. partition key는 테이블 내에서 유일해야 하며 아이템은 partition key의 hash값으로 분포되어 해당 partition에 저장된다. 전체 partition 수는 아래에서 설명할 성능 지표와 테이블 크기를 고려해서.. 2020. 4. 26.