(1) DB 부하를 줄인다
웹서버는 보통 stateless 하기 때문에 수평확장 쉬움
하지만 DB는 수평확장이 어려움
정규화 끊고 샤딩하고 ..
그니까 최대한 DB를 힘들게 하지 말아야 한다
- 저장프로시저
- 각종 함수, 연산자
- 트랜잭션
등은 최대한 쓰지 않는다 (웬만하면 어플리케이션에서 땜질할 수 있음)
쿼리는 항상 인덱스 타도록 한다
이상한 컬럼 죄다 갖고오지 않도록 SELECT * 쓰지 않는다
똑같은거 자꾸 DB에 요청하지 않도록 캐싱도 한다
(2) cdn을 쓴다
정적파일같은건 안그래도 바쁜 웹서버에서 줄 필요가 없다
(3) 수평확장을 한다
서버는 Loadbalancer 쓰고, 캐시는 Consistent Hashing 해서 수평확장할 수 있게 한다
서버는 autoscaling 할 수 있게 한다
(DB 커넥션때문에 무한대 수평확장은 불가능하다)
(4) 클라이언트에서 캐싱한다
===
더 있는데 나머진 나중에
정규화랑 샤딩 상관없음 항상인덱스 상관없음 트랜잭션 상관없음 - dc App
pgbouncer 얹기
awa프록시랑 읽기 쓰기 분리하면 되는거아닌가