본문 바로가기

분류 전체보기847

AWS ECS Fargate에 docker-compose 배포하는 방법 기존에 ECS를 사용하여 docker-compose를 배포하는 방법(https://hides.tistory.com/1016)에 대해 포스팅했었다. 일반적인 ECS는 EC2 인스턴스 위에 컨테이너가 돌아가는 형태이므로 EC2에 대한 디펜던시를 가져갈 수 밖에 없다. 하지만 큰 문제가 없어서 계속 사용을 하던 중 Fargate의 비용 인하 소식을 듣게 되었다. (https://aws.amazon.com/ko/about-aws/whats-new/2019/01/announcing-aws-fargate-price-reduction-by-up-to-50-/) 최대 50% 요금을 인하한다고 하는데, 그래도 EC2를 이용하는 ECS보단 가격이 있는 편이다. EC2 Container Service와 Fargate Con.. 2019. 3. 25.
Python datetime으로 시간 더하고 빼는 방법 보통 파이썬으로 시간 관련 작업을 할 때 datetime 라이브러리를 사용한다. 이번 작업에서는 현재시간에서 특정 시간을 더하고 빼는 과정이 필요했는데 그 과정을 포스팅에 담아본다. from datetime import datetimenow = datetime.now().replace(microsecond=0) 위 라인을 차례대로 인터프리터에 입력해보면 아마 아래와 같은 값이 나올 것이다. (microsecond=0을 준 이유는 해당 옵션을 사용하지 않기 위함임. 제거해도 상관없다.) datetime.datetime(2019, 3, 25, 12, 38, 46) 위 결과를 통해 알 수 있듯이 now()를 사용하면 현재 시간을 datetime객체로 반환해준다. 또한 내부적으로 __str__ 매직메소드가 구현.. 2019. 3. 25.
AWS ECS에 docker-compose 배포하는 방법(ALB+Auto Scailing) 목적아마존 AWS에 Docker-compose.yml파일을 통해 배포하는 방법에 대해 기술한다. 추가적으로 ALB(Application Load Balancer)를 통해 로드밸런싱을 진행하고 서비스/인스턴스에 Auto Scailing을 걸어서 자동으로 스케일업/다운할 수 있도록 한다. 작업 순서1. ECS 클러스터 생성2. ALB(Application Load Balancer) 생성3. 도커 이미지 ECR에 저장4. 작업 정의(Task Definition) 생성5. CloudWatch 경보 생성6. 서비스(Service) 생성7. 인스턴스 스케일링 적용 1. ECS 클러스터 생성먼저 ECS클러스터부터 생성해야한다. 클러스터를 생성할 때 지정한 인스턴스의 개수에 따라 EC2 인스턴스가 실행되며 해당 인스턴.. 2019. 3. 20.
MongoEngine EmbeddedDocument/Reference MongoEngine Embedded vs Reference 현재 파이썬으로 MongoDB와 연동하여 작업을 진행하고 있다. Raw query를 사용하는 사람은 당연히 없으므로 ODM(Object Document Mapper)을 찾아보던 중 Mongoengine이 가장 좋을 것 같다는 판단이 들어서 해당 ODM을 선택하여 개발중이다. MySQL등 RDB계열을 사용하다가 처음 NoSQL으로 넘어온 사람들에게 가장 헷갈리는 부분이 바로 '관계를 어떻게 표현해야할까' 이지 않을까 싶다. 나같은 경우에도 기존 관계형 데이터베이스만 사용하다보니 NoSQL에서 관계를 어떻게 해야할 지 많은 고민이 됐다. 이 포스팅은 그에 관련하여 많은 정보를 담진 않을 것이고 실제 Mongoengine을 통해 어떠한 형태로 도큐먼.. 2019. 3. 18.
Git rebase 사용하는 방법 특정한 커밋만을 가져오는 Cherry pick에 대해 찾아보다가 rebase부터 잡고가야할 것 같아서 생활코딩에 나와있는 rebase 강의를 봤다. 한번에 익숙해질 수 없으므로 보다 능숙해지기 위해 해당 강의를 포스팅으로 남긴다.머지(Merge)와 리베이스(Rebase)의 차이점은 아래와 같다. Merge : 히스토리가 병렬로 표시Rebase : 히스토리가 일렬로 표시 Rebase를 사용하면 추후에 버전 관리 히스토리를 봤을 때 Merge를 사용했을때보다 좀 더 직관적으로 볼 수 있다는 장점이 있다. 먼저 rb_example이라는 폴더를 하나 생성하고 git init을 진행해준다. 다음으로 f1.txt라는 파일을 생성하고 A라고 내용을 채워넣는다. 이 상태에서 git log --decorate --all.. 2019. 3. 18.
AWS Codedeploy로 ECS Blue/Green 배포하는 방법 운영중인 서비스에 업데이트 사항이 생기고 배포를 진행하다보면 지속적인 배포를 어떻게 해야할까 라는 의문점이 들기 마련이다. 가장 중요한점은 사용자가 서버의 중단을 느끼지 못하는 것이기에 관련된 사항을 찾아보던 중 Blue/Green Deploy라는 것을 발견했다. 예를 들어 총 4대의 서비스가 존재한다면 2대의 서비스를 로드밸런서에서 끊고 서비스를 업데이트한 이후 다시 로드밸런서에 붙임과 동시에 기존 서비스 2대를 로드밸런서에서 끊는다. 마찬가지로 2대의 서비스도 업데이트를 진행하고 다시 로드밸런서에 붙인다. 이렇게 된다면 실제로는 서비스의 중단이 일어났다고 볼 수 있겠지만 사용자의 경험에서는 서비스의 중단을 느낄 수 없다. Blue/Green에 대한 자세한 사항은 인터넷에 많이 나와있으니 찾아보도록 하.. 2019. 3. 14.