PBL : Django 개발환경 세팅

송민준·2023년 7월 13일

PBL 교육

목록 보기
6/11

들어가기 전

나의 고객은 누구인가

게임이 좋아서 게임회사를 들어가지만 지표만 주구장창 만들 수 있다. 이건 우리가 생각한 게임개발이 아니다. 우리의 시각은 소비자의 눈으로 바라보고 있기 때문이다. 우리의 고객은 옆 부서가 될 수 있다.

조직별 개발언어 선택 기준

서비스 개발은 고객에 맞춰지고 운영 개발은 내부 고객에 맞춰진다.

프레임워크를 써야하는 이유

빠른 개발, 쉬운 확장, 간편한 공유(깃 써봤냐), 쉬운모듈분리(라이브러리 공유해봤냐 → 협업해봤냐), 개발 패턴 단일(누구나 같은 코드를 쓰는가) ⇒ 프레임워크 사용.

OOP

비즈니스 모델을 잘 짤수 있는가를 물어보기 위해서는 OOP를 물어봐야한다. → 많은 업데이트가 일어나기 때문이다. 부모클래스 만들고 자식클래스 만들고…

개발을 나이스하게 했는가를 알고 싶다면 → 클래스 하나를 없애본다. → 독립적이기 때문

파편화

클라이언트 부분은 파편화가 심해서 똑같은 서비스를 만들어야하면 웹만들고 앱만들고.. 더해서 제조사마다 다르게 만들어야한다. ⇒ 따라서 클라이언트의 경우에는 Component-Driven Development를 해야 한다. (리액트)

미들웨어

비즈니스 모델이 확장되면 Middleware가 필요해진다. 머신성능을 최대로 사용할 수 있도록.

미들웨어가 스토리지와 DB 사이에서 작동할 수도 있다.

그래서 스레드 개념을 알아야한다. 멀티스레딩을 사용하면 12초 걸리는 작업을 3초로 줄일 수 있다.

OOP (생애주기)

  • Created (생성)
  • in use or reachable (사용중)
  • invisible (사용중이며 접근 불가)
  • unreachable (사용되지 않음)
  • Collected (GC 대상이 되는 상태)
  • Finalized (Finalize를 거친 상태)
  • Deallocated (메모리 헤체 된 상태)

정리문서 작성(습관적으로 하자)

트렐로나 지라를 통해서 issue를 정의한다.

개발환경세팅(= issue)이 완료되면 문서를 작성해서 링크를 달아둔다. (⇒ 다음에 들어올 신입을 위해)

세팅을 제외하고 개발 이슈를 정리하고 완료하면 definition에 깃 pull request 링크를 남겨둔다. → 버전체크가능, 롤백 가능. 지라는 한번의 클릭으로 롤백 가능.

에러가 나오면 해결방법을 적어두자

Task(개발환경 세팅)

  • 스펙

    • CPU: Mac M1 Pro

    • Python : 3.11.3

    • MySQL Version : 8.0.33

      • mysqlclient version : 2.2.0
    • 프레임워크 : django 4.2.2

  • 세팅 과정

    • brew install python : python 설치
    • 프로젝트 폴더 만들기
    • 가상환경 생성
    • 가상환경 진입
      • 가상환경을 만드는 이유는 독립적인 공간에서 쓸데없는 간섭 없기 프로젝트 환경을 만들기 위함

    • pip install django : django 설치
    • pip install mysqlclient : mysqlclient 설치 (우리는 mysql을 사용하기로 했고 django가 client를 받아서 mysql 서버에 진입하기 위함)
  • 연동 체크

    • django-admin startproject pbl : 장고 프로젝트 생성
    • cd pbl
    • python [manage.py](http://manage.py) runserver : 웹서버 run
    • 웹서버 작동 확인 (브라우저에서 127.0.0.1 접속)
    • mysql 서버에 진입해서 DB 작동 확인
    • mysql 커널에서 create database pbl4 으로 데이터베이스 생성.
    • db 세팅
      • mysql 스키마 생성
      • in pbl/settings.py (db 메타 데이터 세팅)
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'pbl4',
                'USER': 'root',
                'PASSWORD': '',
                'HOST': 'localhost',
                'PORT': '3306',
            }
        }
    • python manage.py migrate : 변경사항 DB 적용(DB 연동)
  • Hello World 찍기.

    • python [manage.py](http://manage.py) startapp hello : 앱 생성
    • /hello/views.py 에서 hello world(view) 코드 작성
      from django.shortcuts import render
      from django.http import HttpResponse
      # Create your views here.
      
      def hello_world(request):
          return HttpResponse("Hello World")
    • /hello/urls.py 에서 view 연결
      from django.urls import path
      
      from . import views
      
      urlpatterns = [
          path("world", views.hello_world, name="hello_world"),
      ]
    • /pbl/urls.py 에서 hello의 urls include하기
      from django.contrib import admin
      from django.urls import include, path
      
      urlpatterns = [
          path('hello/', include('hello.urls')),
          path('admin/', admin.site.urls),
      ]
    • settings에서 app 추가.
      INSTALLED_APPS = [
          'hello.apps.HelloConfig',
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',
      ]
    • python [manage.py](http://manage.py) runserver : 로컬 서버 실행
    • 브라우저에서 결과 확인(localhost:8000/hello/world)
profile
개발자

0개의 댓글