본문 바로가기

전체 글847

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.
Django Restframework Custom User Model 적용 방법 Django에는 디폴트로 유저모델이 존재한다.하지만 해당 유저모델에는 상당히 많은 기본 컬럼이 존재하기에, 커스터마이징이 필요한 경우가 많다.일반적으로 Custom User Model을 만들려면 AbstractUser 또는 AbstractBaseUser를 상속받아서 만든다.먼저 아래의 명령어로 프로젝트와 앱을 생성한다. django-admin startproject project .django-admin startapp users 그리고 settings.py에 우리가 생성한 users와 rest_framework를 추가해준다.다음으로 models.py에 아래의 내용을 채워넣는다.from django.contrib.auth.models import AbstractBaseUser, BaseUserManage.. 2019. 2. 28.
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.
Python Observer Pattern 소프트웨어를 설계할 때 가장 먼저 고려할 점이 바로 아키텍쳐 구조이다. 또한 아키텍쳐의 구조를 제대로 설계하려면 디자인 패턴또한 고려해야한다. 나는 이번에 다음과 같은 프로그램을 짜고 있었다. - 파일을 업로드하고 데이터베이스에 관련 정보를 저장하는 프로그램 위 프로그램의 플로우를 하나하나 살펴보자면 다음과 같다. 1. S3에 파일을 업로드한다.2. 업로드된 파일의 URL을 통해 특정 비즈니스 로직을 거친다.3. 로직을 거친 이후 나온 결과물을 최종적으로 데이터베이스에 저장한다. 여기서 발생할 수 있는 문제점이 있다. 1번 파일 업로드 부분에서 바로 오류가 발생하면 상관이 없겠지만, 2번 또는 3번처럼 파일을 업로드한 이후 오류가 발생한다면 S3에는 파일이 남아있지만 실제적으로 해당 파일을 Trackin.. 2019. 2. 20.