본문 바로가기

DevOps/AWS

(10)
AWS S3, CloudFront로 CDN 구축하기 개발하게 된 배경 내가 개발한 웹사이트가 Performance에 많은 문제가 있었다. 그 중, 이미지가 성능을 낮추는데 가장 큰 요인이여서 CDN 구축을 하게 되었다. 1. S3 버킷 생성 Amazon S3 를 생성해준다. 테스트용으로 이미지 하나를 업로드 후 이미지 url을 열면 액세스가 차단되어 있다. 2. CloudFront 생성하기 생성된 CloudFront domain으로 접속해보면 똑같이 접근이 안된다. 3. CloudFront > Originis 설정 수정 S3 버킷 Access 제한을 풀어준다 이제 CloudFront 객체 URL로 접근하면 이미지에 접근할 수 있다. 결과 200KB로 매번 불러오던 이미지가 -> CloudFront에 캐싱되면서 200B로 줄어들었다.
AWS RDS 등급 정하기 웹 서비스 개발을 하면서 AWS infra를 구축할 때, 비용이 가장 많이 들어가는 것은 RDS 쪽일 것이다. ( 4xlarge가 한달에 천달러니까... ) 내가 사용하고 있는 RDS 등급이 서비스에 적합할까? 개발을 하면서 항상 애매한 것이 AWS ec2나 RDS 등급 설정이 였다. 과연 RDS에서 어떤 지표를 보고 등급을 조정해야 할까? CPU 사용량 : 보통 20~70%면 적당하다고 함. 이렇게 범위가 넓은 이유는 보통 트래픽과 비례하기 때문 ( 새벽, 피크타임 트래픽잉 보통 10배 차이남 ) 커넥션 RDS CPU에 영향을 미치는 쿼리 개선하기 RDS > slow_logs 를 가보면 3초 이상 걸리는 쿼리가 검색이 된다. 이러한 쿼리는 보통 개선이 필요하다 range 쿼리를 최대한 줄인다 ( 아무리..
AWS SNS란? AWS SNS(Simple Notification Service)란?구독 중인 엔드포인트 또는 클라이언트에 메시지 전달을 조정 및 관리하는 웹 서비스이다. ( 메시지 브로커라고 보면 될 거 같네 ) 이벤트 생산하는 쪽을 게시자 ( Publisher )라 하고, 이벤트를 구독하는 쪽을 구독자 ( Subscriber )라 한다. Amazon SNS Message Delivery Status AWS SNS는 구독자( ex : Application, HTTP, Lambda, SQS ) 에게 전송된 메시지 전달 상태에 log를 남겨 준다. log는 CloudWatch 로그로 전송이 된다.
CloudFront란? CloudFront란?html, css, js 및 이미지 파일과 같은 정적 및 동적 웹 컨텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹서비스라고 한다. 정의에 나온대로 가장 대표적인 사용사례가 정적 웹 사이트 콘텐츠 전송 속도 향상이다. CloundFront에서 콘텐츠를 어떻게 제공하길래 빨라지는 걸까? CloudFront에서 콘텐츠를 제공하는 방법1. 사용자가 웹사이트에 접속하면 이미지 파일 및 HTML 파일을 요청합니다. 2. DNS가 요청을 최적으로 서비스 할 수 있는 CloudFront 엣지 로케이션으로 요청을 라우팅합니다. ( 지연시간과 관련해 가장 가까운 CloudFront 엣지 로케이션임 ) 3. 엣지 로케이션에서 CloudFront는 해당 캐시에 요청된 파일이 있는지 확인한다. 파일이 ..
AWS DynamoDB - (3) AWS SDK for Java 설정하기 OverviewAWS SDK for Java는 Amazon Web Service를 위한 JAVA APi이다. 즉, Amazon S3, Amazon DyanmoDB의 서비스를 사용하는 Java application을 만들 때 사용하게 된다. 이번 포스팅의 목표는 EC2 Instance에서 실행하는 Spring Boot project가 DyanmoDB service를 사용할 수 있도록 AWS SDK를 설정하는 것이다. 아래의 그림은 해당 설정이 끝났을 때 요약도이다. 1. AWS SDK for JAVA 설치하기build.gradle에 dependency를 추가해주자.// AWS Dynamic DB compile group: 'com.amazonaws', name: 'aws-java-sdk-dynamodb',..
AWS DynamoDB - (2) 인증 및 접근 제어 ( Authentication and Access Control ) 시작하기 전에지난 포스팅에서는 Local 환경에서 DynamoDB를 띄우고 Spring Boot와 연결하는 방법에 대해 다루었다. 이번 포스팅에서는 EC2 instance에서 실행되는 Spring boot에서 DynamoDB에 접근하기 위한 인증과 접근제어 설정에 관해 다루어 보겠다. DynamoDB에 접근 권한을 가진 Credential만 접근이 가능하도록 하여 resource를 보호할 수 있다. 이 번 장에서 리소스를 보호하기 위해 AWS IAM(identity and access management)와 DynamoDB를 어떻게 설정해야 되는지에 대해 다루어보자. 인증 ( Authentication ) 접근 제어 ( Access Control ) Request를 인증할 Credentail이 있다하더라..
AWS DynamoDB - (1) Local with Docker + Spring Boot 연동 DynamoDB란?DynamoDB란 완벽하게 관리되는 NoSQL Database 서비스이다. 분산 데이터베이스를 운영할 때 관리부담을 줄여준다. 예를 들어, 하드웨어 할당, 설정 및 구성, 복제, 클러스터 조정에 대한 걱정을 할 필요가 없다. 암호화 기능까지 제공해준다고 한다. ( 나중에 따로 다루도록 하겠습니다. ) AWS DynamoDB Local을 컨테이너에 띄우기Docker와 함께 AWS DynamoDB를 local에 띄워보자. ( Docker 설치와 관련해서는 다루지 않겠습니다. ) $ docker pull dwmkerr/dynamodb$ docker run -p 8000:8000 dwmkerr/dynamodb -sharedDb -sharedDb : AWS CLI를 통해 만들어진 Data에 AW..
퍼블릭 서브넷과 프라이빗 서브넷이 있는 VPC 구축 (1) - VPC 설정 IntroductionAWS로 public web application을 구축하려는 경우 자사 서비스나 DB 접근을 외부에서 접근하지 못하도록 설계하고 싶을 것이다. 이 때, public subnet에 있는 웹서버가 private subnet에 있는 DB나 서비스와 통신할 수 있도록 네트워크 설정 ( VPC 생성부터 Security Group 및 Routing 설정) 을 어떻게 해야하는지 정리해보았다. 위와 같이 구축하기 위해 우리가 설정해야 할 네트워크 설정들이다. 1. VPC 만들기 ( Virtual Private Cloud ) - 우리만의 네트워크를 만들자. VPC 생성할 때 IPv4 CIDR block에 EC2인스턴스의 수 또는 생성할 subnet 수에 맞게 사용할 개인 네트워크 주소의 범위를 설..
Private Subnet에 RDS 구축 및 연결하기 ( Hiding a DB Instance in a VPC from the Internet ) 시나리오Web application 역할을 하는 public EC2 instance와 public에서 접근이 되지 않는 DB instance가 있을 것이다. 이 둘은 Public subnet과 Private subnet에 나눠져 있을 것이다. public EC2 instance에서 RDS에 접근하는 방법을 알아보자. DB instance와 DB에 접근하는 EC2 instance가 같은 VPC에 있는 경우DB instance를 위한 Security Group을 만든다. 이 Security group은 DB instance 접근을 제한하기 위함이다. 예를 들면, DB에 접근하는 EC2 instance의 IP만 connection할 수 있게 해주고, port는 DB port ( MYSQL : 3306 ) 을 ..
보안 설정하기 ( securing your system - IAM, security groups, VPC ) Controlling Network traffic to and from your virtual serverEC2 instance에 허용된 network만 접속이 되도록 하고 싶다. 방화벽을 이용하면 ingoing, outgoing traffic을 제어할 수 있다. 웹서버를 돌리고 있다면, 80, 443를 제외한 다른 포트를 닫고 싶을 수 있다. 기본 설정으로는 inbound - all deny, outbound - all allow로 되어 있고, 우리가 원하는대로 filter를 추가해나가면 된다. Security Group을 이용하여 traffice to virtual server 컨트롤 하기EC2 instance와 같은 AWS resource 접근 권한과 관련된 것이 Security Group이다. S..