본문 바로가기

Coding343

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.
pip install Missing 'Version:' header and/or METADATA file error 오류 해결 방법 나는 현재 맥북(OS X)를 사용하고 있다. 2018년형을 사용하고 있는데 python3의 버전이 기본적으로 3.7이다. 그런데 개발하다가 Celery라는 라이브러리를 사용해야하는 경우가 왔고, 해당 라이브러리는 3.6까지만 지원을 한다고 나와있었다. 따라서 3.6으로의 다운그레이드를 진행했었는데 몇일 전 3.7을 지원한다는 소식을 듣고 python을 지우고 설치하는 과정에서 무언가 깨졌는지 pip install을 실행하면 아래와 같은 오류가 발생했다. pip install Missing 'Version:' header and/or METADATA file error 많은 삽질을 거듭한 결과 방법을 찾았다. 먼저 아래의 명령어를 입력한다. python -m site 그러면 위와 같이 여러가지 경로가 나올.. 2019. 3. 13.
Django AWS Elasticache 연동하는 방법 현재 백엔드 서버로 파이썬 장고를 사용하고 있다. 대부분의 기능구현이 완료되었고 마무리 단계에서 캐싱을 도입하려고 알아보던도중 AWS의 Elasticache를 이용하기로 결정했고 Django Elasticache를 연동하는 과정에 대해 서술한다.시작하기전에 알아둘 점 -> 작업은 쓰기/읽기로 나뉠텐데, 각 작업마다 하는 행동은 다음과 같다. 읽기 : 캐시서버에 존재하는지 탐색 -> 존재한다면 캐시서버에서 자료 return -> 존재하지 않는다면 데이터베이스에서 가져와서 사용자에게 뿌려주고 캐시서버에 set쓰기 : 데이터베이스에 저장 -> 캐시서버에 set 먼저 AWS로 들어가서 Elasticache로 들어간다. 아래쪽에 있는 지금 시작 버튼을 누른다. 캐시 서버는 Redis/Memcached 두가지 엔진.. 2019. 3. 13.