프리온보딩 과제 1

Tasic·2021년 11월 7일
2

과제 정보 요약

  • 구현 기간 : 21.11.01(17시) ~ 21.11.03 (10시)
  • 기본적인 게시판 CRUD 구현
  • 댓글과 대댓글 기능 필요하며, pagination 구현 해야된다.
  • db는 무조건 mongodb를 사용해야된다.
  • 성능 테스트 필요(1000만건의 data가 db에 있는 상태에서)
  • 자세한 내용은 Github 참조

Mongo DB

과제 시간도 촉박하고 처음 접하는 no-sql이다보니 환경설정에서 시간을 많이 소요하면 안될 것 같다라는 생각이 들었다.
그래서 mongodb를 docker로 실행하도록 docker-compose 파일을 작성하여 팀원들과 공유하여 개발환경을 구축 하였다.
mongodb 기본적인 용어는 아래 사이트를 이용해서 익혔다.
Mongo DB 용어 및 기초 사용법

Djongo

기존에는 RDBMS를 사용해서 장고내에서 기본적으로 제공해주는 ORM으로 사용할 수 있었다.
하지만 mongodb는 지원을 해주지 않기 때문에, 서드파티 코드를 찾아야되었고, 찾은 것이 Djongo 였다.
Djongo를 사용하면 기존에 ORM처럼 작성할 수 있는 장점이 있어서 코드 구현이 쉬웠고, 추후 RDBMS로 변경시에도 설정만 바꾸면 되니 유용한 장점이 있을 것 같았다.
이번 프로젝트에서는 로컬 개발환경과 배포환경의 설정파일을 분리하여 local_dev.py 라는 곳에 아래 내용을 작성하였다.

# settings/local_dev.py
# 패키지 설치 -> pip install djongo

# DATABASES
DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': get_env_variable('DB_NAME'),
        'CLIENT': {
            'host': get_env_variable('DB_HOST'),
            'port': int(get_env_variable('DB_PORT')),
        }
    },
}

배포

배포는 AWS EC2 서버에 docker를 이용해서 배포를 하면 좋겠다고 생각하였다. 이유로는
첫번째로는 배포 환경 구축하기가 쉽다는 것이다. 개발용으로 셋팅한 docker-compose 파일을 배포환경에 맞게 수정을 하면 되기 때문이다.
두번째로는 배포시에 예상치 못한 로컬관의 환경차이로 생기는 문제가 적다는 것이다. 이런이유로 docker를 이용해서 배포 하기로 하였다.
개발환경에서 추가로 DB 정보는 docker 환경설정 파일로 분리하였다.

# .dockerenv.deploy

DJANGO_SECRECT_KEY='장고 시크킷키'
DB_NAME='db이름'
DB_PORT=db port

마치며

정말 오랜만에 무언가를 하기위해 밤을 새웠지만 정말 재미있었다. 하지만 시간이 없어서 성능 테스트를 하지 못했다는 점이 아쉬웠다. 다음에는 이번 프로젝트때 비효율적으로 진행한 부분들에 대해서 수정해가면서 프로젝트를 진행할 수 있도록 노력해야겠다.

profile
블로그 옮겼습니다 (https://jotasic.github.io)

0개의 댓글