본문 바로가기

DevOps

(12)
Docker Image 가볍게 만들기 1. Layer를 적게 사용하자 먼저 같은 내용이지만 두가지 버전의 Dockerfile을 살펴보자 FROM ubuntu:14.04 RUN apt-get update -y # Install packages RUN apt-get install -y curl RUN apt-get install -y postgresql RUN apt-get install -y postgresql-client # Remove apt cache to make the image smaller RUN rm -rf /var/lib/apt/lists/* CMD bash FROM ubuntu:14.04 RUN apt-get update -y && \ apt-get install -y curl postgresql postgresql-clie..
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는 해당 캐시에 요청된 파일이 있는지 확인한다. 파일이 ..
Docker tag 잘 활용하기 Tip #1. Docker Tag를 명시적으로 관리하기 ( latest x )Docker Image 태그는 기본적으로 latest이기 때문에 따로 명시해줄 필요가 없어 편해보일 것이다. 이렇게 버전을 명시해주지 않으면, 변화를 추적하기 힘들고 Production 환경에서 무엇을 실행하였는지 판단하기 어렵다. Docker wiki에도 latest에 의존하지 않고 의미있는 tag를 사용하라고 되어 있다.Latest가 안정화된 latest 인지 개발중인 latest인지 판단할 수 없음 Latest가 항상 최신 버전임을 보장해주지 않음 Tip #2. Docker Tag 이름 잘 짓기 일단 dev, staging, prod 환경과 상관없이 하나의 docker repo를 가진다. env마다 repo를 하나씩 가진다..
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 ) 을 ..
Jenkins Master-Slave with AWS Jenkins Slave Instance 띄우기AWS instance 띄우는거 참고 Jenkins Master에 slave-node 등록하기 Jenkins > New NodeSSH 접속을 위한 계정 생성Jenkins > Credentials global 선택Add CredentailsSSH Username with private keyprivate key - enter directly ( 이제 private key 를 만들러 가보자 )아까 생성한 AWS instance에 접속jenkins-slave user 생성sudo -scd /homemkdir jenkins-slave-1useradd jenkins-slave-1chown jenkins-slave-1:jenkins-slave-1 jenkins-slav..