소프트웨어-이야기/인프라 썸네일형 리스트형 (도커) docker component 쓰기 Docker component란?여러개의 애플리케이션 컨테이너를 정의하고, 관리해주는 도구이다. Docker Component 실행하기 docker-compose start 이 명령문을 실행하면, 세트로 묶여있는 컨테이너가 동시에 시작된다. Docker Component 끄기docker-compose stop 이 명령문을 실행하면, 세트로 묶여있는 컨테이너가 동시에 꺼진다. 컨테이너를 하나하나 끄고 싶을 때는 container stop을 하면 된다. (AWS) S3 SELECT - S3 파일에 쿼리 날려서 필요한 데이터만 다운받기 AWS S3 SELECT란? AWS s3 / glacier에 저장된 데이터에 쿼리를 날려서, 필요한 데이터만 다운받을 수 있게 해주는 기능이다. 2018년 3월 기준, glacier select는 모든 리전에서 사용할 수 있지만, s3 select는 아직 프리뷰 상태이다. 프리뷰버전에서는 CSV와 JSON 포맷만 지원한다. 그리고 압축 포맷으로는 GZIP만 지원한다. 샘플 코드 import boto3 from s3select import ResponseHandler class PrintingResponseHandler(ResponseHandler): def handle_records(self, record_data): print(record_data.decode('utf-8')) handler = Pri.. [beanstalk]eb cli으로 배포 시, 주의할점 1년간 빈스톡을 사용하면서, 배포할 때 주의해야했던 점들을 정리하고자 한다. 1. 빈스톡은 local git code를 배포한다. remote에 있는 git code를 땡겨다가 배포하는게 아니다. 그래서 배포하기 직전에, 최신 master code를 로컬로 땡겨온 다음에 배포해야한다. 2. 빈스톡에 있는 모든 인스턴스는 같은 애플리케이션 버전이여야한다. 터미널로 eb deploy 명령문을 실행해서 배포를 하던 도중, 실수를 한게 있어서 나도 모르게 command + c 버튼을 눌러서, 배포를 강제종료했던 적이 있다. 그런데 배포 강제 종료는 일을 더 꼬이게 만든다. 빈스톡에서는 모든 인스턴스의 버전이 같아야한다. 예를 들어 모든 인스턴스가 같은 버전으로 배포되기 전에, 배포를 중단시켜 버리면 최신 버전으.. [beanstalk]애플리케이션 버전 관리 Beanstalk Application Version 빈스톡은 배포 이력을 애플리케이션 버전으로 관리한다. 그래서 새로운 코드를 배포하면, 새로운 애플리케이션 버전이 생성된다. 애플리케이션 버전은 AWS Console 페이지에서 확인할 수 있다. 애플리케이션 버전으로 배포된 코드 이력을 확인할 수 있고, 롤백도 쉽게 할 수 있다. 나는 배포를 할 때, 애플리케이션의 Description을 추가해주고 있다. Description을 관리해줘야, 이 당시에 어떤 기능이 배포되었는지 이해하기가 쉽다. eb deploy -m "신규 기능 설명" 이런식으로 배포할 때, message 옵션을 넣어주면, 이 값이 application의 Description으로 추가된다. 참고 자료 AWS Elastic Beanstal.. [beanstalk]eb deploy timeout 옵션 현상 EB CLI 명령문으로 로컬에서 코드를 배포할 때, 시간이 오래걸리면 배포 로그가 터미널에 안보이는 현상이 발생한다. ( 이 때, timeout과 관련된 에러가 떠서 당황스러울 수 있다. 그런데 뒷단에서 배포가 잘 진행되고 있기 때문에, 당황할 필요는 없다. 그냥 배포 로그만 안보일 뿐이다. ) 방법 배포할 때, 아래처럼 timeout 옵션을 주는게 좋다. eb deploy -m "이슈번호-브랜치명" --timeout 100000 (넷플릭스) 넷플릭스의 카오스 엔지니어링 백그라운드페이스북을 하다가, AWS 사용자 모임에서 카오스 엔지니어링 관련 밋업을 한다는 글을 발견했다.마이크로서비스 아키텍처, 카오스라는 단어 때문에 카오스 엔지니어링이라는 것에 관심을 갖게 되었다.카오스 엔지니어링이란 어떤 개념인지 찾아보고, 정리해보고자 한다. 카오스 엔지니어링 탄생 배경규모있는 시스템을 빠르게 나눠서 개발하고, 관리를 편하게 하기 위하여 마이크로서비스 아키텍처 같은 분산 시스템 아키텍처가 등장했다.그러나 서비스별 로직을 개별 서버로 분리해냈어도, 각 시스템들은 서로 상호작용하고 있다.그래서 한 군데에서 장애가 발생하면, 이 장애가 여기저기 퍼지게 된다. 게다가 문제들이 여러 시스템에서 얽히고 설켜서, 디버깅하기도 어려운 상황이 발생되기도 한다. 이러한 영향은 아래와 같은 문제들을 .. [CURL]같은 파라미터 키로 여러개의 파일을 전송하는 방법 같은 파라미터키로 여러개의 파일을 CURL으로 보낼 때, 보내는 방법은 아래와 같다$ curl -F 'files[]=@/path/to/fileX' -F 'files[]=@/path/to/fileY' ... http://localhost/upload 파라미터명에 []를 붙여주는거다. 샘플$ curl -X POST 'http://localhost:80/movie/create?moview%5Bname%5D=movie_name'; -H 'cache-control: no-cache' -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' -F 'files[]=@/Users/hong/Downloads/movie.mp.. (Phusion Passenger) 웹서버 - 패신저를 구성하는 방식 ( Mode ) 패신저에서 지원하는 3가지 패신저 & 웹서버 조합패신저에서 지원하는 패신저 & 웹서버 조합은 위처럼 세가지가 있다. StrandardAlone 모드 패신저안에 Nginx 엔진이 내장되어 있는 구조이다.그래서 따로 이것저것 Nginx나 Apache를 설치하지 않아도 된다.그래서 패신저 문서에서는 개발 환경 때 StrandAlone을 쓰는게 편하니, 이걸 사용하라고 권장한다.그리고 만약 한 서버에서 하나의 애플리케이션만 띄우는 방식으로 서버를 운영한다면, 프로덕션 모드에서도 StandardAlone 모드를 사용해도 괜찮다. Apache / Nginx Integration 모드 Apache나 Nginx 모듈을 사용해서, 패신저를 운영하는 방식을 의미한다. 이 모드는 개발 환경에서는 사용되지 않고, 프로덕션 환.. 이전 1 2 3 4 5 다음