분류 전체보기

    [테스트]단위 테스트(Unit test)란?

    단위 테스트(Unit Test) 단위 테스트는 하나의 모듈을 기준으로 독릭적으로 진행되는 가장 작은 단위의 테스트이다. 여기서 모듈이란 하나의 기능 혹은 .py와 같은 파일을 일컫는 말이다. 예를 들어 회원가입 메소드가 있고 이를 위한 독립적인 테스트를 1개의 단위테스트라고 부를 수 있다. 테스트 작성의 필요성 테스트 종류에는 단위 테스트, 통합 테스트 등 여러가지 종류의 테스트가 존재한다. 각각 종류는 다르지만 테스트 코드를 작성하는 이유는 전부 동일하다. 사람이 하는 테스트는 완벽하지 않다 -> 사람은 기계가 아니기에 항상 모든 조건을 동일하게 테스트 할 수 없다. 테스트에 드는 비용을 절감할 수 있다 -> 직접 기능을 수행하며 테스트를 하는 것 보다 테스트 코드를 돌려보는 것이 시간 절감에 도움 된..

    [Docker]초짜의 삽질기 리뷰 마지막 (feat. Django Dockerizing)

    안녕하세요, 지금까지 Docker로 개발환경을 구축하면서 발생했던 에피소드를 소개했던 블로그 주인장입니다. 질문과 답변의 형식을 통해서 느꼈던 점을 공유해보면서 마쳐보려고 합니다. 자문자답 Q&A 그래서 Docker는 진짜 좋나요? "네, 단도직입적으로 너무 좋다고 생각합니다. (그리고 신기하구요)" 저는 기존에 존재하는 환경과 거의 동일하게 구성하기 위해서 시간이 생각보다 많이 걸렸지만 새롭게 프로젝트를 시작하거나 Docker를 공부해보려고 하시는 분이라면 Docker hub의 이미지만을 사용하는 것으로 꽤나 편하게 Docker를 접해볼 수 있습니다. 가장 큰 장점은 무엇인가요? "개발 과정에서 환경이 달라서 생기는 여러 문제들의 발생 확률을 현저히 줄여줄 수 있다는 점입니다." 만약 문제가 생기더라도..

    [Gunicorn]Gunicorn 란? 쓰는 이유는?

    Django 개발을 진행하고 배포를 결정하는 순간부터는 gunicorn이나 uWSGI라는 기술들을 항상 접하게 된다. gunicorn은 WSGI기술의 일종으로서 무슨 역할을 하고 왜 쓰는지에 대해서 알아보자. WSGI 란? 파이썬 애플리케이션이(파이썬 스크립트) 웹 서버와 통신하기 위한 인터페이스이다. 웹서버에서의 요청을 해석하여 파이썬 애플리케이션 쪽으로 던지는 역할을 수행한다. Gunicorn 란? 쓰는 이유는? Gunicorn은 Python WSGI로 WEB Server(Nginx)로부터 서버사이드 요청을 받으면 WSGI를 통해 서버 애플리케이션(Django)로 전달해주는 역할을 수행한다. Django의 runserver 역시도 똑같은 역할을 수행하지만 보안적으로나 성능적으로 검증이 되지 않았기 때..

    [Docker]초짜의 삽질기 리뷰 2 (feat. Django Dockerizing)

    Django 이미지를 만들어 냈던 기쁨도 잠시 Postgres, Redis, Websocket과 같은 스택들을 컨테이너화 시켜야 되는 작업들이 남아있었습니다. 하지만, 이를 만들어내는 과정은 생각보다 엄청난 속도로 구현할 수 있었습니다!! 한줄기의 빛.. Docker hub Postgres와 같은 스택들도 Dockerfile을 작성하여 우분투 환경에 설치하고, Dockerfile을 작성하고, 이미지를 빌드하는 힘든 작업이 될거라 예상했지만 단순하게 끝났습니다. Github와 비슷한 것처럼 Docker에는 Docker hub라는 곳이 존재합니다. official 이미지나 사용자들이 커스텀 해놓은 이미지들을 받아서 사용할 수 있는 곳이죠. 저는 이곳에서 Postgres, redis와 같은 스택들을 띄울 컨테..

    [Docker]초짜의 삽질기 리뷰 1 (feat. Django Dockerizing)

    Django Dockerizing 시리즈 https://leffept.tistory.com/330 [Django]Docker-compose로 Django 환경 구축하기 1 - Django 이번 시리즈는 기존에 존재하는 장고 프로젝트나, 새로 시작하는 프로젝트를 Docker-compose를 활용하여 도커라이징 하는 과정에 대해서 올릴 것이다. 일반적으로 Django에 Postgres, Nginx, Redis, RabbitMQ, C leffept.tistory.com 길고도 길었던 Django 프로젝트 환경을 Dockerizing 하는 시리즈가 끝이 났습니다. 이 시리즈를 시작하기 전에는 저는 도커에 대해 아무것도 모르는 상태였습니다. 그저 단순히 주변에서 "도커 너무 좋다, 편하다", "한번 써봐", "요..

    [Django]Docker-compose로 Django 환경 구축하기 6 - Celery

    기본적으로 Web Server의 경우 프로세스를 동기적으로 처리하기 때문에 오래 걸리는 연산의 경우 사용자는 작업이 마무리 될 때까지 기다려야 한다. 이 때 오래 걸리는 작업들을 따로 모아 비동기로 처리하는 방식을 수행하면 사용자는 해당 작업을 기다릴 필요가 없어지게 된다. 따라서, 사용자 측면에서의 속도 개선을 위한 비동기 태스크 큐인 Celery가 주로 Django와 함께 사용하게 되는데 이를 container 하는 과정을 알아볼 것이다. (보통, 푸시 알림과 같은 용도로 사용한다.) 현재 Message Broker로 사용되는 RabbitMQ 컨테이너가 존재하므로 장고 서버에서 메시지 큐로 Task를 전달하고 Celery Worker가 메시지 큐에 존재하는 작업들을 받아서 비동기로 처리하는 방식으로 ..

    [Django]Docker-compose로 Django 환경 구축하기 5 - Nginx

    Django는 Web Framework이며 Web Server로서의 기능을 하지 못한다. Production 환경을 구성할 경우에 Web Server가 필요하게 되는데 이 때 주로 Nginx를 사용하게 된다. 이번 포스팅에서는 Nginx를 Docker Container 환경에 띄우는 과정을 다뤄볼 것이다. 마찬가지로 docker-compose.yml에 내용을 추가하면서 시작해보자. Web Server는 주로 웹 페이지를 클라이언트로 전달하는 기능(css, html 문서 등)을 담당하며 부가적으로 Proxy, Reverse Proxy와 같은 기능들도 지원한다. docker-compose.yml 추가 # yml 파일 포맷의 version 설정 version: "3" # docker-compose 볼륨 정의 ..

    [Django]Docker-compose로 Django 환경 구축하기 4 - RabbitMQ

    오늘날 개발자들은 MSA를 사용하여 애플리케이션을 구축하는 일이 당연하게 여겨지고 있다. MSA를 사용함에 따라 서버들은 아주 작은 기능을 하는 1개의 서버로서 동작을 하는데 분할된 서버들은 데이터를 어떻게 주고 받아야 할까? 두 가지의 방법이 떠오를 수 있다. 다이렉트로 데이터를 주고 받음 메시지 큐를 활용하여 데이터를 주고 받음 당연히 다이렉트로 주고 받는 것이 가장 기본이 될 것이다. 하지만 이 경우에 데이터가 적재된 곳의 서버가 부하를 버티지 못하고 서비스가 다운되버린다면? 서비스는 정상적으로 동작을 할 수 없는 상태가 된다. 이렇듯 다이렉트로 주고 받을 경우 최악의 경우는 서비스를 제대로 이용할 수 없는 상태가 되어버리는 것이다. 이 때 AMQP 프로토콜을 이용한 메시지 큐중 하나인 Rabbit..

    [Django]Docker-compose로 Django 환경 구축하기 3 - Redis

    지난번 포스팅에선 Django와 관계형 DB인 Postgres까지 Dockerizing 하는 과정을 다루어 보았다. 이 두가지의 기술만으로도 웹페이지를 만들 수는 있지만, 서비스를 만들다 보면 다양한 요구사항에 맞추어 다양한 기술들의 필요성을 느끼게 된다. 주로 caching을 활용하기 위해서 키 값 형식의 데이터베이스를 이용하게 되는데 바로 Redis가 이에 해당한다. 따라서 이번 포스팅에서는 키 값 형식의 데이터베이스인 Redis를 덧붙여 사용하는 방법을 적어보려고 한다. docker-compose.yml 설정 파일을 보면서 진행해보자. Docker-compose.yml 추가 # yml 파일 포맷의 version 설정 version: "3" # docker-compose 볼륨 정의 (이 볼륨은 도커가..

    [Django]Docker-compose로 Django 환경 구축하기 2 - Postgres

    대부분의 웹 프로젝트는 DB를 사용할 것이다. Django와 가장 잘어울리는 DB는 Postgres이며 Django의 공식 Dcoumentation에도 나와있다. 따라서 이번 포스팅에서도 역시 postgres를 사용하여 컨테이너로 띄우는 방법에 대해서 알아보려고 한다. 우선, 저번 포스팅에서 설명하지 못한 부분에 대해서 docker-compose.yml 파일과 함께 알아보자. docker-compose.yml 추가 # yml 파일 포맷의 version 설정 version: "3" # docker-compose 볼륨 정의 (이 볼륨은 도커가 관리함) volumes: postgres_db_dev: {} # 띄울 컨테이너 목록 services: # Database container, 추후에 설명 postgre..