게임이 좋아서 게임회사를 들어가지만 지표만 주구장창 만들 수 있다. 이건 우리가 생각한 게임개발이 아니다. 우리의 시각은 소비자의 눈으로 바라보고 있기 때문이다. 우리의 고객은 옆 부서가 될 수 있다.
서비스 개발은 고객에 맞춰지고 운영 개발은 내부 고객에 맞춰진다.
빠른 개발, 쉬운 확장, 간편한 공유(깃 써봤냐), 쉬운모듈분리(라이브러리 공유해봤냐 → 협업해봤냐), 개발 패턴 단일(누구나 같은 코드를 쓰는가) ⇒ 프레임워크 사용.
비즈니스 모델을 잘 짤수 있는가를 물어보기 위해서는 OOP를 물어봐야한다. → 많은 업데이트가 일어나기 때문이다. 부모클래스 만들고 자식클래스 만들고…
개발을 나이스하게 했는가를 알고 싶다면 → 클래스 하나를 없애본다. → 독립적이기 때문
클라이언트 부분은 파편화가 심해서 똑같은 서비스를 만들어야하면 웹만들고 앱만들고.. 더해서 제조사마다 다르게 만들어야한다. ⇒ 따라서 클라이언트의 경우에는 Component-Driven Development를 해야 한다. (리액트)
비즈니스 모델이 확장되면 Middleware가 필요해진다. 머신성능을 최대로 사용할 수 있도록.
미들웨어가 스토리지와 DB 사이에서 작동할 수도 있다.
그래서 스레드 개념을 알아야한다. 멀티스레딩을 사용하면 12초 걸리는 작업을 3초로 줄일 수 있다.
OOP (생애주기)
트렐로나 지라를 통해서 issue를 정의한다.

개발환경세팅(= issue)이 완료되면 문서를 작성해서 링크를 달아둔다. (⇒ 다음에 들어올 신입을 위해)
세팅을 제외하고 개발 이슈를 정리하고 완료하면 definition에 깃 pull request 링크를 남겨둔다. → 버전체크가능, 롤백 가능. 지라는 한번의 클릭으로 롤백 가능.
스펙
CPU: Mac M1 Pro
Python : 3.11.3
MySQL Version : 8.0.33
프레임워크 : 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 pblpython [manage.py](http://manage.py) runserver : 웹서버 run

create database pbl4 으로 데이터베이스 생성.DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'pbl4',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
}
}
Hello World 찍기.
python [manage.py](http://manage.py) startapp hello : 앱 생성from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def hello_world(request):
return HttpResponse("Hello World")from django.urls import path
from . import views
urlpatterns = [
path("world", views.hello_world, name="hello_world"),
]from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('hello/', include('hello.urls')),
path('admin/', admin.site.urls),
]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 : 로컬 서버 실행