본문 바로가기

Coding/DevOps22

Django + Uwsgi + Supervisor + Nginx Docker-compose와 연동하는 방법 목적Django를 배포할때는 Uwsgi를 통해 Nginx 또는 Apache웹서버와 엮어서 배포한다.이러한 경우에서 만약 AWS ECS를 사용한다면 Docker-compose를 통해 컨테이너화 시켜주는 작업이 필요하고그러한 과정에 대해 기술한다.구현먼저 docker-compose파일은 다음과 같이 총 3개로 나뉜다.docker-compose-dev.ymlversion: '3.7' services: nginx: build: context: . dockerfile: docker/nginx/Dockerfile container_name: nginx hostname: nginx ports: - '80:80' networks: - backend restart: on-failure links: - web_servic.. 2019. 2. 26.
AWS SecretManager를 이용한 도커 환경변수 적용 방법 목적ECS에 도커 컨테이너를 배포할 때 AWS Secret Manager를 통해 환경변수를 관리하는 방법에 대해 기술한다. IAM으로 권한 주기기본적으로 awscli를 통해 접근하려면 credential관련한 설정이 필요하다.하지만 도커 컨테이너를 빌드할 때 해당 자료를 같이 넘겨주면 의미가 없으므로 IAM을 통해 권한을 설정해줘야 한다.해당 방법을 사용하면 특별한 crendential 설정이 필요없이 awscli를 통해 접근이 가능하다.먼저 IAM - 역할로 들어가서 역할 만들기를 누른다.우리는 ECS 관련한 역할을 만들것이므로 AWS서비스 - EC2를 선택하고 다음을 누른다. SecretManagerReadWrite를 선택하고 다음을 누른다.태그 추가는 그냥 넘어간다.역할 이름에 원하는 이름을 적고 .. 2019. 2. 26.
ECS에 Auto Scailing 적용하는 방법 목적AWS ECS를 사용하여 서비스를 배포할 때 Auto Scailing을 적용하는 방법에 대해 기술한다.배경지식먼저 ECS가 어떠한 형태로 돌아가는지 부터 살펴봐야 한다.ECS가 돌아가기 위해서는 다음과 같은 4개가 필요하다. ClusterServiceTask DefinitionEC2 Instance(Launched by Cluster) 기본적으로 Cluster부터 생성한다.Cluster를 생성할 때 원하는 인스턴스의 개수를 정할 수 있는데, 이때 정의한 개수만큼 클러스터 생성과 동시에 EC2 Instance가 구동된다.Service는 정의한 Task Definition을 묶어서 실행해준다고 보면 될 것 같다.Task Definition은 그냥 쉽게 생각해서 Docker-compose라고 생각해도 될 .. 2019. 1. 30.
AWS Lambda + API Gateway로 API 만드는 방법 AWS Lambda란 Amazon Web Service에서 제공하는 서버리스(Serverless) 기능이다.한마디로 서버가 없고 코드만 존재한다는 뜻이다.예를 들어서 크롤링을 진행하여 데이터베이스에 적재하는 코드의 경우 24시간 떠있을 필요가 없이Crontab등을 통해 주기적으로 실행하면 된다.이러한 경우 EC2를 사용하는것은 리소스 낭비이므로 lambda를 사용하는것이 적절하다.또한 100만건의 요청까지는 무료로 제공되므로 EC2보다 비용면에서도 이득이라고 볼 수 있다.먼저 AWS Lambda 콘솔로 - 함수로 들어간다. 새로 작성을 선택하고 이름과 런타임을 지정한다.나는 파이썬으로 작업할 예정이므로 Python 3.6을 선택했다. 또한 역할을 선택할 수 있는데, RDS와 통신해야하므로 RDS에 접근할.. 2019. 1. 21.
ECS Multiple Instance구동 및 ALB적용 방법 목적ECS를 사용하여 서비스를 구성할 때 여러개의 인스턴스를 구동하고 해당 인스턴스를 ALB를 통해 로드밸런싱 해주는 방법에 대해 기술한다.전제 조건구현에서 사용할 이미지들은 모두 ECR에 푸시해놓은 상태라고 가정한다.본문에서는 docker-compose를 통해 이미지를 빌드하고 푸시하는 과정에 대해서는 생략한다.사전 지식ALB는 설정해놓은 로드밸런싱 그룹에 인스턴스가 포함되면 자동으로 해당 인스턴스도 라우팅 목록에 포함시킨다.따라서 우리는 ECS 서비스를 생성할 때 미리 생성해놓은 로드밸런서와 로드밸런싱 그룹을 설정해줘야 한다.추가적으로 배포할 때 어떠한 형태로 진행하는지 미리 숙지할 필요가 있다.2가지의 방법이 존재할 것이다. 방법 1기존에 A와 B라는 인스턴스가 돌고 있다고 가정한다.C, D인스턴스.. 2019. 1. 15.
Docker Hot reload 적용하는 방법 목적소스의 변경이 일어나면 바로 도커 컨테이너에 적용되는 Hot reload에 대해 기술한다. 일반적으로 도커를 사용하여 개발할 때 배포환경/개발환경 두가지로 나눠서 작업한다.배포환경에서는 큰 문제가 없지만 개발환경에서는 소스의 변경이 잦으므로 변경을 자동으로 탐지하여변경된 내용을 반영하여 재시작해주는 플로우가 필요하다.보통 로컬의 파일을 컨테이너에 적용하기위해 아래와 같은 코드를 사용한다. (Dockerfile) COPY . ./home WORKDIR home 현재 폴더를 컨테이너의 /home 디렉토리로 복사하고 해당 디렉토리로 이동하여 작업하는 형태이다.하지만 위처럼 정의를 해버리면 한번 빌드한 컨테이너의 내용을 수정하기 까다롭다는 단점이 있다.(직접 도커에 붙어서 수정해야하지만, 이미지를 다시 빌드.. 2019. 1. 8.