분류 전체보기
-
pydantic이란? (DRF Serializer를 대체할 수 있을까?)파이썬/Django 2021. 12. 14. 22:45
들어가며 pydantic은 타입 애너테이션을 사용해서 데이터를 검증하고 설정들을 관리하는 라이브러리이다. pydantic은 런타임 환경에서 타입을 강제하고 타입이 유효하지 않을 때 에러를 발생시켜준다. FastAPI, Project Jupyter, Microsoft, AWS 등 많은 곳에서 사용된다. pydantic의 기본과 간단한 사용법을 알아보고 DRF Serializer과 바교해보자 한눈에 보기 from datetime import datetime from typing import List, Optional from pydantic import BaseModel class User(BaseModel): id: int name = '홍길동' date_joined: Optional[datetime] =..
-
Docker + Django에 Gitlab-CI(Pytest) 붙이기파이썬/Django 2021. 10. 24. 13:05
Gitlab CI를 구성하기 위해서는 크게 GitLab runners 설정하기 장고 패키지 설치하기 프로젝트 최상위 디렉토리에 .gitlab-ci.yml 작성하기 로 이루어져 있습니다. 우선 GirLab runners에 대해 알아보겠습니다. GitLab Runners란? 빌드, 테스트, 배포 같은 일련의 작업들을 실행하는 애플리케이션 파이프라인에서 GitLab CI/CD와 함께 수행되는 애플리케이션 각 Runner는 사용 가능한 상태(작업이 없는)가 되면 GitLab 인스턴스에 계속해서 요청을 보내 작업들을 할당 받음 이 Runner는 세 가지로 구분되어 있습니다. 간단히 각 Runners의 정의를 살펴보면 Specific runners 하나의 프로젝트에 사용되는 러너 Shared runners GitL..
-
[Django] Django의 동작 원리와 과정 파헤치기파이썬/Django 2021. 10. 20. 09:38
Django 동작과정 WSGI Application 생성 settings에서 정의한 settings.MIDDLEWARE 로드 WSGI(uwsgi, gunicorn)에서 applcation call WSGI environ(request data를 담은 딕셔너리)과 함께 WSGIRequest 인스턴스 생성 미들웨어 체인에 WSGIRequest 인스턴스와 함께 call 미들웨어를 모두 거쳐간 후 최종적으로 view에 request가 전달되어 개발자가 정의한 로직을 거친 후 최종적으로 Response 반환 상세 보기 우리가 만든 장고 프로젝트 wsgi.py의 application 변수에는 callable한 WSGIHandler의 인스턴스가 반환된다. 이때 settings에 정의한 미들웨어를 로드한다. WSGi가..
-
Gunicorn 동작 과정 알아보기파이썬/Django 2021. 10. 10. 14:15
파이썬 웹 애플리케이션과 웹 서버 사이에 위치하는 Gunicorn 이라는 WSGI가 어떻게 동작하는지 알아본다. WSGI? Web Server Gateway Interface의 약자로 파이썬의 WAS이다. 어떻게 Gunicorn이 내 장고 애플리케이션을 동작시키는지? WSGI서버와 이 WSGI로 동작하기 위한 애플리케이션 사이에 지켜지는 hook들이 있는데 이 hook을 가지고 wsgi서버가 애플리케이션을 실행시킴 import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_defaults.settings") application = get_wsgi_appli..
-
리눅스, 유닉스, GNU 짚어보기Linux 2021. 10. 6. 22:39
왜 대부분 서버의 운영체제가 리눅스인가? 리눅스가 더 많이 선호되는 이유 오픈소스 실제로 리눅스를 이루는 코드를 볼 수 있어 버그가 생겼을 때 리눅스에서 어떻게 동작되는지 확인할 수 있음 오픈소스이므로 수많은 개발자들이 부족하고 취약한 부분을 파악하게 되고 이를 해결함 개발자를 위해 수많은 프로그래밍 인터페이스(cgroup, namespace?)를 제공하기 때문에 쉽게 프로그램을 개발하거나 설치할 수 있음(도커? 컨테이너?) 안정성과 신뢰성 리눅스는 유닉스 기반이며, 유닉스는 원래 강력한 안정성과 신뢰성을 제공하면서도 쉽게 다룰수 있게 디자인되었음 →리눅스가 안정성과 신뢰성을 제공할 수 있는 이유는? 시스템 관리, 프로그램 구성, 프로세스 관리, 보안 등 많은 요인들이 있고 윈도우와 다르게 재부팅 필요가..
-
GIt-flow, GitLab-flow, Github-flow란?git 2021. 9. 24. 09:17
Git-Flow 2010년에 Vincent Driessen 이라는 사람의 블로그 글에 의해 널리 퍼지기 시작했고 현재는 Git으로 개발할 때 거의 표준과 같이 사용되는 방법론 A successful Git branching model [A successful Git branching model In this post I present a Git branching strategy for developing and releasing software as I’ve used it in many of my projects, and which has turned out to be very successful. nvie.com](https://nvie.com/posts/a-successful-git-branching..
-
Git best practicegit 2021. 9. 8. 00:06
커밋 시 깔끔하게 단 하나의 목적으로 하자 어떤 한 가지(오류 수정, 기능 개발 등)의 작업을 할 때 유혹에 넘어가지 말자 버그를 수정할 때 또 다른 버그가 발견이 되면 그 버그도 하나의 커밋에 담으려고 한다. 결국엔 스노우 볼이 굴러가 하나의 커밋에 너무 많은 변경 사항이 적용된다! 다음과 같은 이유로 커밋을 작게 하는 것이 좋다 다른 팀원들이 코드 리뷰를 하는데 훨씬 보기 쉬워진다. 커밋을 롤백해줘야 하는 경우 더 쉬워진다. 변경 사항 추적이 쉬워진다. 의미있는 커밋 메시지를 남기자 좋은 예 feat: add beta sequence ^--^ ^---------------^ | | | +-> 현재형으로 간추린다. +-------> Type: chore, docs, feat, fix, refactor,..
-
AWS EC2에 HTTPS 적용하기클라우드 2021. 9. 2. 23:59
EC2에 HTTPS 적용하는 방법은 크게 두 가지로 분류된다. 기존 방식인 EC2 내부에 SSL 인증서를 설치하고 서비스하는 방법 무료 또는 유료 인증서를 발급받아 서비스한다. AWS에서 제공하는 인증서 관리 서비스인 ACM을 ELB와 연동하여 서비스하는 방법 AWS에서 자체적으로 인증서를 관리(생성, 갱신 등)해주며 ELB를 사용해야 ACM를 사용할 수 있다! ACM를 사용하려면 Amazon CloudFront, AWS Elastic Beanstalk, Amazon API Gateway, Elastic Load Balancing 등 서비스를 사용해야한다. 무료이다. 적용하기 1번 보다 쉽다고 생각했고 ELB와 ACM도 이해할 수 있기 때문에 겸사겸사 AWS에서 제공하는 ACM으로 HTTPS를 구축하기로..