- Đọc và xác định yêu cầu: Nắm rõ yêu cầu, cách tính điểm và lường trước các vấn đề của test case -> memo
- Cách tính điểm
- Các luật hạn chế
- Các api và testcase
- Các thông số môi trường cần xác nhận trước khi làm
- ruby, mysql, nginx, redis version
- ruby, mysql, nginx, redis config file path
- Khởi đầu sẽ cài đặt db cho 1 server / web app cho 1 server / benchmark cho 1 server
- Cài đặt github cho db server và webserver
- Push code lên github
- Cài đặt các batch script đã được chuẩn bị sẵn
- Thiết lập môi trường mặc định cho từng server
- db server: my.cnf | mysql.service
- webapp server: nginx.conf | redis conf | ruby service
- bench server: target-url
- Cài đặt các tool bổ trợ
- db-server: percona-toolkit
- web-server:
- https://github.com/wg/wrk benchmark http
- netdata for monitoring
- datadog for apm
- Chạy bench để tìm ra bottleneck
- Quá tải cho db server:
- db replica
- ....
- Quá tải cho web server:
- loadbalancing
- giảm số lượng worker
- Đọc từ disk quá nhiều..vv
- Quá tải cho db server:
- Kiến trúc hệ thống Webapp
- Thiết kế kiến trúc cho DB
- Thiết lập cho database: mysql config, version
- Thiết lập cho webapp: unicorn worker, unicorn config
- Redis config / version
- Rack Env config / Version
- Os
- Xác định | sửa các điểm đọc file
- Xác định | sửa các điểm N+1
- Xác định | sửa các xử lý thừa (code, query)
- Đánh lại index
- Đánh cho dữ liệu nào, bảng nào, cột nào?
- Thực hiện chỉnh sửa cho schema
- Xác định các điểm có thể cached dữ liệu
- Cache trên redis hay cache trên mysql
-
Đồng bộ database:
- Dùng 1 database server
- Tìm cách replica: writer, read
- Setup for mysql + ruby
- Làm thế nào để switch query giữa các db
-
Đồng bộ code, nginx https://qiita.com/momotaro98/items/694000dfb736d0316441
- Tạo 1 bash để đồng bộ code giữa 2 server
-
Cuối game Xóa các thiết lập log, để tăng speed