[RWDRFP] Real World DRF 프로젝트 탄생



REAL WORLD
DJANGO



1. 만들게된 발단

우선, 그냥 딩그르르가 서빙되고 있는 것 처럼, 프론트엔드를 Vue.js, Jquery, Jinja Template 을 쓰면서 Django 프로젝트 안에서 프론트엔드와 백엔드를 동시에 구현하여 그래도 관리 하기 수월하게 하고 싶었습니다. 프론트엔드 Framework를 사용하면, 물론 좋지만.. 관리포인트가 늘어나면 혼자 관리하는데 벅찹니다..

그러나, 코딩 스터디를 하면서 실제 현업에서 Django가 어찌 사용되는지 궁금해 하시는 사람들이 많더라구요. 본인들이 FBVs 를 기반으로 어떻게 뷰를 구성하는지 알겠는데 정말 이렇게 사용될까? 궁금해 하였습니다.

딩그르르 다른 포스트 : 관련글 이동>>

이렇게 혼자 관리하는 프로젝트는 없기 때문에, 많이들 궁금해 하더라구요. 실은.. Django가 어떻게 사용하는지 알려주고 싶었지.. 현업 수준까지 알려줄 수 있는 수준이 제가 될까.. 하는 생각도 듭니다. 그러나 제가 매일 하는 일이고, 진짜 실제 현업에서 쓰는 수준의 DRF를 만들면서 함께 어떤 기능을 어떻게 쓰는지 보여드리고 싶은 마음도 있습니다. 혹시, 저 대신 훨씬 Front-end를 잘 다루시는 개발자분들이 많으실텐데, React.js 개발자분이 계시면.. 댓글 남기셔서 저좀 도와주세요. 지식을 나누어 주세요. ㅎㅎ



2. 구조

저는 Django3.0.4, DRF Latest, MySQL 8.0, Python 3.7.7을 사용할 예정입니다. 제가 3.8을 사용할거라고 했는데, 3.8은 출시 후 이제 뭐 겨우 6개월정도 되서, 패스 하기로 했습니다. 현재 딩그르르는 3.6.8버전의 파이썬을 사용하고 있습니다. 아래는 제 목표 입니다.

  • DRF로 백엔드를 구현하는 것은 물론이고,
  • 자질구래한 라이브러리를 많이 사용할 것이고
  • Redis도 사용할 것이고,
  • 이후, Production레벨까지 AWS 세팅 방법
  • Docker로 Containerize 하여 구동하는 방법.
  • 중간중간 번뜩이는 아이디어를 Git Branch를 따서 다른 브랜치로 유지하는 방법
  • Pull Request / Merge 하는 방법
  • DB 모델링
  • 지금은 MySQL만 쓰지만, 단순 데이터(클릭 데이터나, 로그)를 NoSQL로 옮기는 방법
  • NoSQL은 Node.js, Mongoose를 사용하여 관리하여 MSA 구조를 만드는 방법
  • 스케일링

등등, 몇 달이 걸리더라도 일일히 써 보겠습니다.

 

뿐만 아니라,

  • 실제 블록체인을 웹이랑 사용하는 방법
  • 만약 여러분이 데이터를 많이 쌓으셨다면(댓글등) 욕설 필터 머신러닝, 자연어처리

등등 까지 추가로 풀패키지로 진행해 보려 합니다.


파이썬은 모바일 어플리케이션을 만들수 있는(물론 만들수는 있지만 잘 사용하지 않는) 언어가 아닙니다. 그래서 Kotlin이나 Java를 이용한 강좌는 많으니까 저보다 잘하시는 분들께 들으시는 것이 좋을 것 입니다. 제가 할 수 있는 한도 내에서 이후 추가 하자면,

  • React Native로 앱을 만들거나
  • 구글 Flutter(Dart)로 앱을 만들 예정입니다.


Selenium 등으로 웹크롤러도 만들어서 Celery로 처리하는 모습을 보여드리고 싶습니다.

이 후, 이 글이 제 다른 포스트의 백링크로 '그득그득!' 채워지는 그날까지!!!



3. 프로젝트 생성

우선 아래 처럼 생성합니다.


우선 위 처럼 하시고, 저는 파이썬 3.7.7버전을 사용할 예정입니다.

여러분이 커뮤니티 버전을 쓰신다면 저랑 다를 수 있습니다. 저는 기업 라이센스를 사용하고 있습니다. 프로젝트를 사용하시는 분들은 왼쪽에 Django나 Flask가 없으실 거에요. 그래서 Pure Python으로 함께 저도 시작할 예정입니다.


파이썬 버전을 올리는 이유는 3.6.x 의 서포트가 2021년 12월에 끝납니다. 그때도 이 프레임워크를 기반으로 무언가를 계속 개발 중일텐데 버전업 해서 충돌되는 것들이 생기면 골치 아프니까요.


파이썬은 다른 언어들 처럼 LTS가 없습니다

  • 단점 - 귀찮다.. 각종 에러나 충돌을 대비해야 한다. (3.8은 날 힘들게함)
  • 장점 - 파이썬 엔지니어의 생명줄...;;


그럼 왜 3.8 안쓰냐.. 사실 다른 이유도 있지만, 윈도우 개발자들이 꽤 될텐데, mysqlclient 라이브러리 설치가 빡셉니다.

그럼 왜 장고가 추천하는 PostgreSQL 안쓰고 MySQL 쓰냐.

  • PostgreSQL이 MySQL보다 나은 점은 Bulk Insert 밖에 없어보입니다.
  • MySQL이 PostgresSQL보다 나은 점은...? 아예 없어 보이는 걸요? ;; 그러나 저는 MySQL이 익숙하고 현업에서도 훨씬 많이 쓰이니까요..


아참, 그리고 Python 2.7버전은 지원이 완전 종료되었습니다. 이제 보안FIX도 안됩니다. 2020년 1월 1일을 마지막으로 끝났습니다. 여기서 확인해 보셔요.


다른 버전은 언제 생명이 다하나요?

버전출시일생명 끝
3.82019-10-142024-10
3.72018-06-272023-06-27
3.62016-12-232021-12-23
3.52015-09-132020-09-13

나머지는 다 끝났습니다.

3.5, 3.6 버전은 보안 업데이트만 하고 있습니다.

출시되고 약 5년이 지나면 생명이 끝납니다. 하지만, 릴리즈매니저에 따라 다소 차이가 있을 수 있습니다.

(3.7 생명 끝날때까지 제가 하고싶은거 여기서 다할 수 있겠죠?...ㅜ)


참고




4. 장고 설치

$ pip install Django djangorestframework mysqlclient, django-cors-middleware, django-extention
$ django-admin startproject dingrr
$ django-admin startapp blog

위 처럼 해주세요. 


리눅스시면 아래처럼 사전 작업을 해주셔야 합니다. mysql 라이브러리랑 파이썬도 설치해야 하거든요.

$ sudo apt update
$ sudo apt-getinstall python3-pip python3-dev libpq-dev libmysqlclient-dev curl
$ sudo apt-get install python3 python-dev python3-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev python-pip

아마.. 우분투 18.04를 사용하시면 (나머지는 잘.. 모르겠습니다) 파이썬 3.6을 설치 할거에요. 3.7을 설치는 아래 처럼 해주세요.

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt install python3.7

물론 제가 안알려드려도 리눅스 사용하실 정도의 능력자시면 다 아시겠지만요.


다음 편에서는 제가 어떤 방식으로 파일, 폴더를 세팅하고 시작하는지 보일러플레이팅을 위해 그리고 다중상속을 위해 어떤 구조를 가져가는지 settings.py는 어떻게 사용하는지 적어보겠습니다. 


저도 프로젝트는 만들어 보았고, 1일 1커밋으로 보답 해드리겠습니다. 



  • [[a.original_name]] ([[a.file_size | fileSizer]])
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'Django' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]