목록2021/02 (2)
번개애비의 라이프스톼일
MySQL 혹은 MariaDB 환경에서 1억개의 Row가 저장되어 있다고 가정하자. 인덱싱이 지정되어 있지 않은 칼럼에서 검색을 수행했을때 데이터베이스는 1억개를 Full Scan을 하게 되어 SELECT 쿼리결과가 나오기까지 오랜시간이 필요로 한다. 이렇게 비교적(?) 대용량의 데이터를 처리하기 위해서는 여러가지 튜닝방법이 존재하는데, 튜닝의 우선순위는 아래와 같다. 1. 가급적 로직을 DB상에서 처리하지 않고 WEB Applicaition 상에서 구현한다. WEB Application 부하는 DB Server에서 발생하는 부하보다 비교적 쉽게 해결이 가능하다. Web 서버는 라운드로빈이든 L4를 활용하든 너무나 쉽게 확장이 가능한 반면, DB Server는 Master-Slave Replication..
이전까지 Go lang으로 DB 인터페이스 서버를 구성하고 php7.x 계열로 Front를 구성했었다. 사실 Front를 php로 사용했다기 보다는 Middle 성향으로 중간에서 Minify나 js 난독화, 통신암호화, 업/다운로드, Front JS만으로 보안해결이 안될때 등등등 수준으로만 사용하고 있다. 변태적인 셋팅이지만 나름 잘 운용중.. ㅎㅎ 이것도 규모가 중간이상이 되는 프로젝트에서나 굉장히 보수적인 트래픽 제어와 최단기 Response를 위해 극단적으로 셋업된 환경에서나 사용했고 요즘 주력은 Go 와 Primitive한 JS를 위주인듯하다. 근래에 php8 이 출시되었다고 해서 실서비스에 적용하기 위해 여러가지 테스트를 해본결과, 다행히도 큰 호환성이슈가 없어서 실서비스에 반영하고 있다. (D..