전체 글

클라우드/AWS

AWS Athena란

AWS Athena 아테나는 S3의 데이터는 SQL로 간편하게 분석하기 위해 만들어진 서비스입니다. 그리고 아테나는 만들어진 이후로 계속 발전되어 이제 커넥터를 통해 여러 데이터 소스로에 SQL을 통해 쿼리를 시작할 수 있습니다. S3에서 아테나를 사용하기 위해서는 아래와 같은 순서를 거치면 됩니다. S3의 데이터를 아테나에 정의한다 스키마를 정의한다 이러한 순서로 작동하는 아테나는 AWS Glue 데이터 카탈로그와 연결되어 테이블이나 스키마를 관리할 수 있습니다. 아테나의 장점 아테나는 서버리스 서비스로 사용한 쿼리만큼 비용이 나갑니다. 여기서 복잡한 ETL과정 없이 SQL만으로 이러한 데이터들을 활용할 수 있습니다. 페이스북에서 개발한 데이터 쿼리 시스템은 Presto를 기반으로 제작되어 csv 등 ..

클라우드/AWS

AWS Lambda를 위한 CodeDeploy 사용하기

CodeDeploy For Lambda Lambda 플랫폼에서의 CodeDeploy는 놀랍게도 트래픽을 전환하는 용도입니다. 설정한 버전에서 버전으로 트래픽을 전환하고, 검증하는 것입니다. CodeBuild에서 Lambda로 코드를 배포하고 새 버전을 생성하면, CodeDeploy에서 구 버전과 신 버전의 테스트와 트래픽을 전환을 담당합니다. Deploy 어디? Lambda Function 설정하기 먼저 다음과 같이 AWS 콘솔에서 Lambda -> Functions로 들어가 Create Function을 눌러줍니다. Runtime에 Node.js 16.x를 선택하고 함수를 만들어줍니다. 이름은 내키는 데로 하시면 됩니다. 그리고 생성한 함수로 들어가 하단 Aliases를 클릭해 alias를 만들어줍니다..

클라우드/AWS

AWS Lambda배포를 위한 CodeDeploy 알아보기

CodeDeploy 간단히 알아보기 CodeDeploy는 AWS에서 제공하는 배포를 위한 서비스이고, AWS에서 CI/CD 파이프라인을 구축할 때 필요한 서비스입니다. CodeDeploy는 세 가지 요소로 구성된다고 생각하는데 Application, Deployment group, appspec.yml입니다. Application은 배포할 컴퓨팅 플랫폼을 정하고, Deployment group은 어디에 어떻게 배포할지 정하고, appspec.yml은 배포 세부사항을 정해주는 설정 파일입니다. 람다 배포에서 appspec의 hooks 구성 appspec의 hooks는 어느 컴퓨팅 플랫폼에 배포하느냐에 따라 달라집니다. 예를 들어 EC2/온프레미스에 배포하는 경우에는 네 가지의 hooks 섹션에서 각각 필요..

클라우드/AWS

AWS API Gateway란?

API Gateway API Gateway는 네트워크에서의 게이트웨이와 같이 다른 네트워크 ( 리소스 ) 로 들어가는 입구 역할을 하는 포인트입니다. 예를 들어 API Gateway를 통하여 클라이언트가 접근하면, 배치된 람다가 이를 받아 리턴해줄 수 있습니다. AWS에서는 API Gateway를 다음과 같이 설명합니다. Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전 관리형 서비스입니다. API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스 할 수 있는 "정문" 역할을 합니다. API Gateway를 사용하면 실시간 양방향 통신 애플리케이션이 가능하도록 하는 RESTful ..

클라우드/AWS

AWS Transit Gateway란

시작하기 앞서 이 글은 다음 aws docs의 소스를 기반으로 작성되었습니다. AWS Transit Gateway AWS Transit Gateway AWS Transit Gateway는 중앙에 위치하여 VPC, On-premise 즉 온프레미스 간 연결을 지원하는 서비스입니다. AWS 공식 docs에서는 아래와 같은 그림으로 Transit Gateway의 이점을 설명합니다. 위와 같은 연결을 기존 VPC peering으로 진행하려면 아래와 같은 수만큼 피어링을 진행해야 합니다. 당연히 아키텍처가 무지하게 복잡해 질 것입니다. 그에 대한 아키텍처는 아래에 있습니다. docs에서는 Transit Gateway를 사용할 때는 네트워크가 간소화되고 확장성이 개선됩니다. AWS Transit Gateway가 각..

클라우드/AWS

AWS SQS + Lambda ( Node.js ) 시작하기

Lambda function 생성하기 아래와 같이 AWS 콘솔에서 Lambda -> Functions로 들어가 Create function을 눌러 Lambda function을 만들어줍니다. 그리고 아래와 같이 Runtime에 Node.js를 선택해주고, 원하는 대로 이름을 짓고 Create function을 클릭해주면 Lambda function이 만들어집니다. SQS를 트리거로 쓰기 위하여 만든 함수로 들어가 아래와 같이 Configuration -> Permissions로 들어가 람다 함수가 가지고 있는 role로 들어가 편집해주어야 합니다. Add permissions를 눌러서 Role에 AmazonSQSFullAccess를 붙여줍니다. SQS 생성하기 Amazon SQS -> Queue로 들어가..

클라우드/AWS

AWS Lambda에 Node.js 세팅하기

Lambda function 생성하기 AWS 콘솔에서 아래와 같이 Lambda -> Function에서 Create function을 클릭하여 람다 함수를 만들어 줍니다. 그리고 아래와 같이 Runtime에 Node.js를 선택해주고, 이름은 아무렇게나 지어서 Create function을 클릭해주면 Lambda function이 만들어집니다. 람다 레이어에 node_modules추가하기 Node.js에서는 node_modules라는 폴더 안에 패키지가 추가되어 사용하는 데, 이를 Lambda function 내에 하나하나씩 만들어 사용하는 것은 너무 불편하고 비효율적일 것입니다. 그래서 람다 레이어에 이를 저장해 두고 함수에 꺼내 쓰면 됩니다. AWS 콘솔에서 Lmabda -> Layers로 들어가 C..

개발/프로그래밍

Node.js에서 AWS SQS다루기

이 글에서는 Node.js 환경에서 SDK를 이용해 간단한 메시징 애플리케이션을 만들 것입니다. AWS Docs의 AWS SDK를 참고하여 진행합니다. 🎉 SDK란 Software Development kit로 특정 소프트웨어를 다루기 위한 키트다. 환경설정 프로젝트를 돌릴 루트 디렉터리에서 package.json을 만들어줍니다. package.json { "name": "sdkfornode", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "IS..

클라우드/AWS

AWS SQS란?

SQS ( Simple Queue Service ) SQS는 Simple Queue Service로 AWS에서 제공하는 애플리케이션 간 메시지를 주고받을 수 있는 서비스로, 즉 간소화된 버전의 메시지 큐 서비스라고 말할 수 있습니다. SQS에서 메시지는 텍스트 형태의 기본 데이터인데 메시지마다 고유의 아이디가 부여되어있어 이로 SDK에서 핸들링하고는 합니다. 아래에 나열한 AWS Docs에서 설명하는 SQS의 장점들은 메시지큐와 상당히 유사한 모습을 볼 수 있습니다. 보안 – Amazon SQS 대기열에서 문자를 받을 수 있는 사용자를 제어한다 SSE로 AWS KMS ( Key Management Service ) 에서 관리되는 키를 사용하여 대기열의 메시지를 보호할 수 있다. 내구성 – 메시지의 안전을..

클라우드/AWS

AWS CloudWatch agent로 로그 수집

CloudWatch agent란? 클라우드워치 에이전트란 AWS에서 제공하는 리소스 모니터링, 관찰 서비스인 클라우드워치에 리소스 내부에서 나온 지표, 데이터를 수집할 수 있게 해주는 것입니다. 본 글에서는 EC2에 설치하여 아파치 웹 서버의 로그를 남겨보도록 하겠습니다. 설치하기 로그를 클라우드워치로 수집할 CloudWatch agent를 아래 명령어를 통해 설치해줍니다. sudo yum -y install amazon-cloudwatch-agent 그리고 로그를 만들 웹 서버인 아파치를 아래 명령어를 통해 설치해줍니다. sudo yum -y install httpd 아파치 엑세스 로그 남기기 로그를 남길 트래픽을 받기 위해 아래 명령어를 통해 아파치를 실행시킵니다. sudo systemctl star..

클라우드/AWS

AWS ECR에 lifecycle 설정하기

ECR lifecycle이란? ECR lifecycle ( 수명 주기 정책 ) 은 혼잡한 ECR 퍼블릭 리포지토리를 정리하는데 도움을 줍니다. 저도 CI/CD환경이 적용되어 ECR로 도커 이미지 버전 관리를 하고 있는 토이 프로젝트를 진행하다. 이미지가 쌓여 오히려 필요할 때 관리가 힘든 모습을 보아서 설정하게 되었습니다. 라이프사이클을 설정하게 되면 그 정책에 따라 조건에 맞는 이미지는 그에 맞는 영향을 받습니다. 라이프사이클 설정하기 먼저 ECR -> repositories에서 라이프사이클을 설정할 본인의 프라이빗 리포지토리로 들어갑니다. 그러면 왼쪽 콘솔 창에 아래와 같은 목록들이 뜰 것인데, 여기서 Lifecycle Policy를 클릭해줍니다. 그리고 아래와 같이 Create rule을 눌러줍니다..

인프라/컨테이너

도커란?

시작하기 전 저는 도커에 입문할 때, 어려운 용어와 개념들 때문에 입문하기 아주 힘들었던 기억이 납니다. 만약 여러 글을 보면서 이해가 가지 않는다면, 일단 실습 예제라도 하나 따라 해 보면 이해해 아주 큰 도움이 될 것 같습니다. ( 저는 그렇게 이해하기 시작했습니다. ) 도커란 무엇일까 Docker, 즉 도커란 간단히 말해 리눅스 컨테이너를 만들고, 사용할 수 있는 컨테이너화 기술입니다. 만약 컨테이너를 잘 모르겠다면 링크로 들어가 컨테이너의 대한 글을 보길 바랍니다. 도커는 Cgroups등 여러 커널의 기능으로 프로세스를 분리하는데, 이 분리된 프로세스를 도커 컨테이너라고 합니다. 도커 컨테이너는 이미지를 통해 실행되는데 이 이미지는 도커 컨테이너가 실행되기 위한 종속성을 모두 가지고 있으며, 다시..

윤현우
개현우 발일기