본문 바로가기

전체 글

(136)
IT 미디어 그리고 클라우드 먼저 미디어의 사전적 의미를 알아보자. “어떤 작용을 한쪽에서 다른 쪽으로 전달하는 역할을 하는 것.” 그럼 IT에서 미디어란 무엇일까? 연속된 사진을 압축하고 네트워크를 통해 사용자에게 전달하는 일련의 작업이라고 말할 수 있다. 그럼 IT 트래픽에서 미디어가 차지하는 비중은 얼마나 될까? 과학기술정보통신부에 의하면 국내 분야별 모바일 트래픽 추이에서 동영상(미디어)이 차지하는 비율은 압도적으로 높다. 앞으로도 4K 등의 보급으로 미디어 트래픽이 급격하게 성장하리라 누구나 예상할 수 있다. IT 시장에서 트래픽은 곧 회사의 가치로 평가되기 때문에 미디어 플랫폼 회사의 가치는 시간이 지날수록 더욱 높아질 것이다. 화질 그럼 본론으로 IT 미디어의 워크플로를 알아보자. 처럼 IT 미디어의 워크플로를 보면, ..
Amazon CloudFront 글로벌 서비스 활용 국가별 서비스 시 CDN을 사용하는 여러 방법이 존재할 수 있다. 뭐 GeoIP를 활용할 수도 있고, DNS 분기를 이용할 수도 있고.... 그러나 가장 간단하게 사용할 수 있는 방법은 CloudFront의 Viewer-Country 헤더를 사용하는 것이다. 참고로 레이턴시가 중요하지 않은 서비스는 한국/북미/유럽에서 App 서버 구성 + CDN정도로 원활히 운영할 수 있다. https://aws.amazon.com/ko/about-aws/whats-new/2020/07/cloudfront-geolocation-headers/ Amazon CloudFront, 세분화된 지리 기반 타겟팅을 위한 추가 지리적 위치 헤더 추가 Amazon CloudFront에서 새 캐시 및 원본 요청 정책에 사용할 수 있는 ..
AWS ELB WebSocket 사용 시 헬스체크 방안 테스트용 WS 데모 [채팅 서버] const WebSocketServer = require("websocket").server; const http = require("http"); const port = 3000; //포트 const server = http.createServer(function (request, response) { //일반 HTTP 요청 처리 console.log( new Date() + " Can not get information reqeust of http " + request.url ); response.writeHead(416); response.end(); }); server.listen(port, function () { console.log(new Date() + "..
AWS Session Manager로 Private RDS, ElastiCache 접근 AWS SSM으로 EC2 인스턴스에 접근하기 (SSH 대체) 목차 서론 들어가기: 더 좋은 방법 대상 독자 SSM: AWS Systems Manager 원격 호스트 접속 방법 비교: SSH (기존) vs. SSM (개선) S... musma.github.io https://www.element7.io/2021/01/aws-ssm-session-manager-port-forwarding-to-rds-without-ssh/ 구조: Client -> SSM -> EC2(Proxy) - socat -> RDS/Memcache (EC2 터널링 포트 SG 오픈 필요) aws ssm start-session --target i-0xxxxx socat TCP-LISTEN:6379,reuseaddr,fork TCP4:x..
AWS Global Accelerator 성능 테스트 일단 AWS Global Accelerator 설명은 아래 Docuemnt와 영상 참고 AWS Global Accelerator FAQ – Amazon Web Services aws.amazon.com 바쁜 사람은 아래 장표만 보면 된다. 영상에서는 성능 테스트 시나이로는 US-EAST-1 리전의 원본에서 5MB 파일을 다운로드 받는 것이다. 일단 캐싱모드는 당연히 빠를테고, CF 프록시 구성과 GA 모두 Origin 에서 바로 다운로드 받는 거보다 빠른 결과를 보여줬다. 비슷한 구성으로 성능 측정을 진행해봤다. 원본은 송도 IDC에 존재하는 서버, 테스트 파일은 약 2MB, 타겟은 북미(LA) / 캐치포인트 사용 GA의 엔드포인트는 서울 리전 원본(송도 IDC) GA CF(Proxy / 오리진 실드 서..
Amazon EC2 Linux 2 minikube 설치 [Docker Install] 의 Docker 기본 사항Amazon ECS - Amazon Elastic Container Service 경우에 따라서는 ec2-user가 도커 데몬에 액세스할 수 있는 권한을 제공하기 위해 인스턴스를 재부팅해야 할 수도 있습니다. 다음 오류가 표시될 경우 인스턴스를 재부팅해 보십시오. Cannot connect t docs.aws.amazon.com [kubectl Install] Install and Set Up kubectl on Linux Before you begin You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.2..
Amazon S3 임시 자격 증명(assume_role), Bucket Prefix 별 오브젝트 사이즈 체크 import boto3 from boto3.session import Session def assume_role(): client = boto3.client('sts') account_id = client.get_caller_identity()["Account"] IAM_ROLE_ARN = 'arn:aws:iam::58xxx119:role/xxRole' IAM_ROLE_SESSION_NAME = 'xxRole' REGION_NAME = 'ap-northeast-1' response = client.assume_role( RoleArn=IAM_ROLE_ARN, RoleSessionName=IAM_ROLE_SESSION_NAME ) session = Session(aws_access_key_id=respon..
Amazon S3 Intelligent-Tiering 30초 정리 S3 Intelligent-Tiering 기능은 2년 전 2018년 12월에 출시되었다. Amazon S3 지능적 티어 출시 – 자동 비용 최적화 스토리지 클래스 (서울 리전 포함) | Amazon Web Service Amazon Simple Storage Service(S3)는 약 12년 6개월 동안 사용되면서 수조에 달하는 객체를 저장하고 이러한 객체에 대한 초당 수백만 건의 요청을 처리하고 있습니다. AWS 고객은 S3를 통해 백업 및 복구, aws.amazon.com 이제 와서 포스팅을 하는 이유는 한 달 전 출시된 아카이브 액세스 기능 때문이다. Amazon S3 Intelligent-Tiering, 아카이브 액세스 계층 추가 | Amazon Web Services AWS는 2년 전에 S3 I..
AWS Elemental MediaConnect 소개 MediaConnect는 미디어 전송을 위한 AWS DirectConnect 서비스다. 구성은 아래와 같다. 인코더와 인코더 사이에서 안정적인 라이브 미디어 스트림 전송이 가능하다고 한다. 인풋과 아웃풋에는 AWS MediaLive 뿐만 아니라 아래 프로토콜을 지원하는 인코더들도 사용할 수 있다. 인풋 프로토콜: RTP-FEC / RTP / Zixi push / RIST 아웃풋 프로토콜: RTP-FEC / RTP / RIST / Zixi push / Zixi pull 그럼 언제 MediaConnect를 써야 할까? 라이브 미디어 스트림을 인코더 to 인코더로 보내줘야 하는데 지연이 발생될 때 권장한다. 가장 직관적인 예제는 국내에서 발생되는 라이브 미디어 스트림을 해외로 전송할 때 혹은 그 반대의 경우다..
API Gateway, DynamoDB 사용 시 주의사항 API Gateway는 백단에 HTTP(S) / Lambda 뿐만 아니라, Dynamodb를 비롯한 AWS 서비스들을 바로 호출할 수 있다. 서버리스의 경우 Front(S3) -> Cognito -> API Gatway -> Lambda -> DynamoDB나 기타 DB 를 통해 CRUD를 구성할 수 있다. 간단한 서비스의 경우에는 Lambda 없이, API Gateway -> DynamoDB으로도 가능하다. (가령, 크롤링 같은 Stateless 한 통신의 경우 해당 구성이 가성비 최고인 듯...) https://aws.amazon.com/ko/blogs/compute/using-amazon-api-gateway-as-a-proxy-for-dynamodb/ Using Amazon API Gateway ..
AWS Step Functions 이해 AWS Step Functions은 AWS Lambda 및 Amazon ECS의 워크플로우를 연결하여 Serverless 서비스의 설계를 명확하고 유연하게 만들어준다. 특히 많은 데이터들을 Lambda를 통해 처리할 때 Lambda의 제한 시간 900초는 부족하다... Lambda의 Invoke를 사용해서 분산 API를 구성할 수 있지만 유지보수가 힘들어지고, Invoke의 Timeout도 고려해야 한다. (https://aws.amazon.com/ko/premiumsupport/knowledge-center/lambda-function-retry-timeout-sdk/) 그럴 때 Step Function을 고려해 볼만하다. - AWS Step Functions을 사용하면 Serverless의 가시성이 ..
AWS DynamoDB 소개 AWS DynamoDB(NoSQL PaaS, Key/Value Store) NoSQL의 사용 이유(RDBMS 한계?) Row->Document 성 데이터 이동 Scale-up의 한계 -> Scale-out 가능 비정형 데이터의 최적화 DynamoDB는 Partition과 Sort Key(옵션)만을 지원한다. Sort Key를 생성하고 DynamoDB SDK의 get_item() API를 사용할 경우 Partition + Sort Key 조합만 지원한다. 만약 Sort Key를 생성했음에도 Partition Key만을 사용할 경우에는 필터를 걸거나, query() API를 사용해야 한다. 자유롭게 CRUD API를 구성하려면 GET, PUT Item 등의 API 보단 Query API 사용을 권장한다. (..
S3 sync shell(IDC -> S3 데이터 실시간 복제) AWS CLI를 통해 기존 IDC 원본 데이터를 S3로 이관한다. (CLI 설치는 아래 참고) https://aws.amazon.com/ko/cli/ AWS에는 DataSync, Snowball 등 데이터 마이그레이션 서비스들도 있다. 그러나 DataSync의 경우 기존 IDC가 VM 환경이라는 제약이 있고, Snowball은 흠좀무... 수 TB 정도의 데이터 이관을 위해서 언제 또 쓸 지도 모르는 AWS 서비스를 학습할 시간도 아깝고... 무식하지만 심플하게 AWS S3 sync로도 충분하다고 생각한다. 그러나 AWS CLI에는 Rsync가 없기 때문에, 프로세스 확인 후 aws s3 sync를 연속적으로 실행해주는 방식으로 진행했다. [Linux(CentOS 6.X)] sync 프로세스가 쓰레드를 ..
CORS (simple, preflight request) https://developer.mozilla.org/ko/docs/Web/HTTP/CORS 교차 출처 리소스 공유 (CORS) 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. developer.mozilla.org https://nhj12311.tistory.com/69 CORS 처리 시 options는 왜 부르는거지?(Simple, Pre-flight) 이번에 별도 시스템을 개발하..
AWS S3 Events(SNS) or CloudWatch Event Trigger(S3 -> SNS) S3에 오브젝트 업로드 시 SNS로 받은 후 HTTP(S) 트리거 시에 "Permissions on the destination topic do not allow S3 to publish notifications from this bucket" 같은 에러 발생. 이는 SNS의 Policy 문제로 SNS의 Access policy - optional에 아래와 같은 Policy를 넣어줘야 함. CloudWatch Event Trigger에서도 S3가 Source일 경우 동일하게 동작하지 않음. { "Version": "2008-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Princi..
Amazon API Gateway Proxy 모드 Amazon API Gateway 사용 시, 기본적으로 모든 Path, Method, Header, QueryString 등을 아래와 같이 미리 프로비저닝 해야 한다. 그러나 API Gateway {Proxy+} 사용 시 해당 매개 변수들을 일일히 설정할 필요가 없이, Lambda 등 BackEnd에서 받을 수 있다. 참고https://aws.amazon.com/ko/blogs/korea/api-gateway-update-new-features-simplify-api-development/ 실제로 {Proxy+} 테스트를 진행해보자. 먼저 API Gateway와 연동할 Lambda를 생성한다. (Node v.12)exports.handler = async (event) => { // TODO implem..
Route53 NS 레코드 위임 문제(재귀쿼리) 및 DNS Query 트래픽, 로그 확인 기존 DNS 서버에서 Route53으로 NS 레코드를 이관할 때, Route53에서 위임된 다른 NS에 정의된 레코드들을 응답받지 못한다. 가령 아래와 같이 DNS 쿼리를 수행했을 경우, Route53에서 app.testhtm.com을 다른 NS로 위임했을 때 A레코드까지 질의되지 않는 경우다. dig +trace app.testhtm.com @ns-638.awsdns-15.net 와 같이 질의한 경우, NS 레코드까지만 응답. 로컬 DNS를 Route53으로 지정하고 Query를 하면 NS에 대한 DNS 재귀쿼리(Recursive Query)까지는 수행되지 않는다. 이 경우 NS 레코드 값을 받았으나, 상위(?), 이전(?) DNS가 없기 때문에 Route53에 등록한 NS까지만 받게 된다. 따라서 실..
AWS Batch 사용법 AWS Batch 서비스는 말 그대로 Batch 프로세스 관련 서비스다. S3의 오브젝트 파일 프로세싱이나 로그 전처리 등 배치성 일을 처리할 때, AWS Batch를 사용할 수 있다. Tutorial은 S3 Bucket에 업로드 되는 오브젝트의 네임을 인덱싱하여, DynamoDB에 적재하는 예제를 진행한다. AWS Batch는 EC2로 서비스 되나요? 아니면 Lambda와 같은 서버리스? AWS Batch는 Amazon ECS와 연동된다. Batch에 수행되는 VM은 컨테이너 기반으로 동작하기 때문에 도커 이미지를 미리 생성해놔야 한다. Batch는 AMI를 사용하나요? 레파지토리는 어떻게 구성하죠? Batch는 사용자가 만든 AMI를 이용할 수도 있고, Amazon의 AMI를 사용할 수도 있다. 또한..
AWS Lambda Edge를 이용한 이미지 리사이징 먼저 기본 내용은 아래 AWS Blog를 통해 확인하자. Resizing Images with Amazon CloudFront & Lambda@Edge | AWS CDN Blog | Amazon Web Services Do you have lots of images that need to be modified before delivery? No problem with Amazon CloudFront and Lambda@Edge. Read more on how you can use our services to modify image dimensions, apply watermarks, or optimize formats based on browser support all aws.amazon.com 중요 키..
알리바바 클라우드(Alibaba cloud) CDN 분석 알리바바 클라우드 CDN에 대한 Basic Architecture 구성 가능 여부 및 AWS 와의 기능 비교 검토를 진행했다. - Basic Architecture Test 가장 일반적으로 사용되는 이미지, 비디오 스티리밍, 실시간 비디오 스트리밍 CDN에 대한 기본적인 기능을 알리클라우드 환경에서 검증을 진행했다. - Detailed Function Test 알리바바 클라우드 CDN에서 제공하는 기능들에 대해서 기술 검토를 진행했고, AWS CloudFront와의 비교 검증을 진행했다. 1. 이미지 캐싱 캐싱을 위한 가장 단순한 구성으로 CDN과 Storage 구성이다. 알리바바 환경에서는 아래와 같이 대체 구성이 가능하다. AWS CloudFront -> Alibaba Cloud CDN AWS S3 ..
도커 컨테이너(docker container)를 이용해서 node app 환경 구성하기 VScode를 이용해서 간단한 node 샘플 app.js을 생성한다. 먼저 node init을 통해 package.json을 생성한다. 사용하는 lib는 express, nodemon 이다. { "name": "nodeindocker", "version": "1.0.0", "description": "node express app in docker", "main": "app.js", "dependencies": {}, "devDependencies": { "express": "^4.17.1", "nodemon": "^1.19.4" }, "scripts": { "start": "node app.js" }, "author": "leedoing", "license": "ISC" } 샘플 node 서버 스크립트..
도커 컨테이너(docker container)의 docker-compose.yml를 이용하여 워드프레스(wordpress) 구성하기 도커 컴포즈를 이용하여 워드프레스를 쉽게 구성할 수 있다. 먼저 환경변수를 생성한다. .env 파일 MYSQL_ROOT_PASSWORD=mysql_root MYSQL_USER=wp_user MYSQL_PASSWORD=wp_password 그리고 도커 컴포즈를 생성한다. docker-compose.yml version: '3.3' services: db: image: mysql:latest env_file: .env environment: - MYSQL_DATABASE=wordpress volumes: - dbdata:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password wordpress: depends_on: - db ..
도커 컨테이너(docker container) Apache, PHP, MySQL 컨테이너 환경 구성하기 도커 컨테이너를 이용하여 로컬 APM 개발 환경을 구성해보자. /php/web_dev 경로에 Dockerfile을 저장한다. (파일명 Dockerfile) Dockerfile은 단순히 도커 컨테이너 이미지를 빌드해주는 파일이다. docker-compose의 경우 도커 컨테이너를 정의해주는 파일이다. 아래와 같이 Dockerfile은 php:7.3.3-apche 이미지를 빌드한다. FROM: 도커 이미지 선택 RUN: 도커 컨테이너 내에서 실행하는 커맨드 EXPOSE: 포트 바인딩 FROM php:7.3.3-apache RUN apt-get update && apt-get upgrade -y RUN docker-php-ext-install mysqli EXPOSE 80 docker-compose의 경우 아..
AWS Managed VPN Service 구성 AWS Managed VPN Service를 이용하여 On-premise와 IPsec VPN을 구성하는 방법을 설명한다. 아래 항목을 순차적으로 구성하도록 하겠다. 1) AWS Managed VPN Service 개요 2) Customer Gateway 생성 3) Virtual Private Gateway 생성 및 VPC 연결 4) Site-to-Site Connection 생성 5) VPN Routing 설정 6) Tunnel 상태 확인 7) considerations 8) Appendix - IPsec Tunneling 지원 (GRE 등 다른 Tunneling 은 지원하지 않음, 2019년 08월 현재 기준) - Static Routing과 Dynamic Routing(BGP)을 제공 - 고가용성을 ..
Windows 10 Local 환경에서 도커(docker) 개발 환경 구성하기 예전 Local 환경에서 docker를 잠시 공부할 때 구성해놨는데, 윈도우가 맛이 가서 Hyper-V가 정상 동작하지 않았다. 그래서 이번 기회에 PC 포맷도 하고 도커 환경을 다시 구성하며 블로깅 한다. 주요 명령어도 한 번 훑어보고, 또한 VSCode를 통해 Web App도 한 번 띄워보자. 도커는 많은 이유에서 사용된다. 내 경우에는 사내에서 개발 한 프로젝트의 OS 환경이 바뀌어 이관해야 하는데, 각종 라이브러리 문제 등 너무 힘들었다. 개빢... 그래서 애초에 Local 윈도우 10 환경에서 도커 환경을 구성해보고 개발해야겠다는 생각이 들었다. (참고로 본인은 개발자는 아니고 뉴비 잡부) 먼저 도커 설치는 매우 간단하기 때문에 구글링을 통해 미리 설치하길 바란다. 아래 설명이 잘 되어 있는 링..
Amazon Athena의 SQL 정리 Amazon Athena의 SQL 기초를 정리한다. 이번 내용에는 Amazon Athena의 기본 사용 방법을 익히고, 활용하여 S3에 업로드 된 CloudTrail 로그들을 이용해서 MFA 없이 AWS Web Console에 접근하는 사용자를 찾아보도록 하자. Amazon Athena의 기본적인 구성은 아래와 같다. S3 Location 확인 분석하기 위한 로그 파일들이 S3 버킷에 업로드 되었다는 가정하에 진행한다. 따라서 사전에 각종 로그 파일들을 S3에 업로드 해놓도록 하자. DDL Create Query(테이블 생성) 기본적으로 Athena 쿼리 엔진의 DDL은 Hive DDL을 기반으로 한다. Create Syntax는 아래와 같다. CREATE Syntax CREATE [EXTERNAL] T..
AWS WAF 로그 수집 방법 AWS WAF에서 로그 확인 방법은 세 가지가 있다. 1. AWS WAF 화면에서 Get new samples를 통해 샘플링 된 로그 확인 방법 2. Application Load Balancer 로그에서 WAF 관련 로그 확인 (ALB의 로그 target:port 필드에서 WAF로 차단된 요청의 경우 "-"로 표시되며 상태코드는 403으로 분류) Access Logs for Your Application Load Balancer - Elastic Load Balancing The AWS Documentation website is getting a new look! Try it now and let us know what you think. Switch to the new look >> You can ..
AWS WAF Rate-based Rules 사용하기(Brute force) WAF Rate Rules은 공격자의 악의적인 요청(Reqeust)에 대해 일정 임계치(Threshold)를 통해 공격자의 요청을 블록킹(Blocking)하는 기능이다. (e.g 5분 간 100개가 넘는 요청들이 왔을 때, 공격자의 IP를 차단) 설정 방법은 매우 간단하다. 먼저 AWS 웹 콘솔(Web Console)에서 WAF 구성 항목으로 들어간다. 그리고 Rules 페이지에서 Craete Rule을 선택한다. (AWS WebConsole -> WAF -> Rules) 위 그림과 같이 각 항목을 입력한다. Rate limit의 경우 현재 최소 100개의 요청까지 임계치 구성을 할 수 있다. 그리고 WAF ACLs 페이지에서 Create web ACL을 선택한다. 위 그림과 같이 각 항목들을 채워준다...
AWS Spot Instance 이해하기 AWS 스팟 인스턴스는 사전 약정 없이 On-demand 요금보다 70~90% 절감된 비용으로 사용할 수 있는 EC2 Instance(VM)이다. 시작하려는 인스턴스에 대해 현재 시간에 유효한 가격만 지불하면 된다. 주로 Batch Job 등 용도로 사용하는 서버에 잘 어울린다. 장점은 세 가지로 나열할 수 있다. 첫 번째, 용량 활용 EC2 스페어 용량의 수요와 공급량에 따라 가격이 결정되기 때문에 시장 중심의 낮은 가격으로 Amazon EC2의 안정성, 보안성, 성능, 제어 및 탄력성을 제공 받을 수 있다. 두 번째, 운영비용 절감 On-demand Instance와 비교하여 최대 70~90%의 운영 비용을 절감할 수 있다. 세 번째, 처리량 향상 상태 비저장 웹 서비스, 이미지 랜더링, 빅데이터 분..
AWS와 GCP 클라우드 상품 비교 클라우드란 기존 서버를 구입하고 IDC에 상면을 임차하여 IT 서비스를 하던 방식과 달리 Google, Amazon, MS 그리고 국내 NAVER 등 밴더 업체를 통해 웹 콘솔로 서버를 빌려서 사용하고 사용한 시간만큼만 비용을 지불하는 방식을 말한다. 클라우드 시장의 지속적인 성장으로 인해 많은 관심을 받고 있다. 그래서 클라우드 사업자 1위인 AWS와 후발주자인 Google Cloud를 비교해본다. 현재 클라우드 시장에서 1위는 단연 Amazon의 AWS 다. 그 이유는 아래 그림을 통해 알 수 있다. AWS의 경우 고객의 요구사항을 충실하게 서비스에 반영하고 있으며 매우 많은 옵션들이 있다. 반면 GCP는 빅쿼리 등을 앞세워 빅데이터, ML 등 특화된 영역을 앞세워 시장에 대응하고 있다. 실제로 고객..