middleware의 필요성. : 광고가 나오는지 계속 체크해주는 미들웨어가 필요하다.
varnish: 텍스트 캐싱. 요즘은 미디어도 캐싱한다. 원래 63대 서버를 사용했다면 30대를 써도 된다.
서버 1대 세팅을 할 때 드는 시간이 3시간이라면 100대를 세팅하려면 300시간이 필요하다. → 셰프라는 툴은 코드 기반으로 자동으로 세팅을 한다. 실제로 셰프를 사용하게 되면 몇시간만에 3~400대 세팅이 가능하다. 생각보다 현업에서는 이런걸 많이 쓴다.
Create DB
models.py 작성
from django.db import models
# Create your models here.
class MediaTypeInfo(models.Model):
id = models.AutoField(primary_key=True)
width = models.IntegerField()
height = models.IntegerField()
type = models.CharField(max_length=10)
class ADInfo(models.Model):
id = models.AutoField(primary_key=True)
media_type_id = models.ForeignKey("crud.MediaTypeInfo", on_delete=models.CASCADE)
name = models.CharField(max_length=30)
definition = models.CharField(max_length=60, null=True, blank=True)
start_date = models.DateTimeField(null=True, blank=True)
end_date = models.DateTimeField(null=True, blank=True)
mod_date = models.DateTimeField(null=True, blank=True)
advertiser = models.CharField(max_length=10)
cost = models.IntegerField()
click_cnt = models.IntegerField(null=True, blank=True)
url = models.CharField(max_length=150)
content_path = models.CharField(max_length=150)null=True, blank=True 을 추가했다.마이그레이션
python [manage.py](http://manage.py) makemigrations : git 처럼 데이터베이스도 버전관리를 하기 위해 migration 파일을 만든다.python [manage.py](http://manage.py) migrate : 데이터베이스에 그 변경사항을 적용시킨다.테스트
테스트를 위해 crud/test.py에 추가했다.
from django.contrib import admin
from crud.models import *
# Register your models here.
admin.site.register(MediaTypeInfo)
admin.site.register(ADInfo)
python [manage.py](http://manage.py) runserver
MediaTypeInfo

ADInfo

완료
고민한점
하나의 DB 안 테이블을 두개의 서버가 사용하려고 한다.
어떤 서버 한개가 마이그래이션을 통해 테이블을 생성한다.
그러면 다른 서버는 어떻게 테이블을 ORM을 통해 조작할 수 있을까
⇒ python [manage.py](http://manage.py) inspectdb 사용!
inspectdb 명령은 장고 세팅 파일에 정의된 데이터베이스에서 모든 테이블의 스키마를 가져온다.
해결 방법
python [manage.py](http://manage.py) inspectdb [models.py](http://models.py) 
python [manage.py](http://manage.py) makemigrationspython manage.py migrate결과
