From 3431e667a5c6475043ebfd97b43a3fdc4b078596 Mon Sep 17 00:00:00 2001 From: Phil Burton Date: Mon, 25 Feb 2019 13:37:59 +0000 Subject: Refactor and clean up notes --- day1/massively-scaled-microservices.txt | 108 ++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 day1/massively-scaled-microservices.txt (limited to 'day1/massively-scaled-microservices.txt') diff --git a/day1/massively-scaled-microservices.txt b/day1/massively-scaled-microservices.txt new file mode 100644 index 0000000..3b6dbe0 --- /dev/null +++ b/day1/massively-scaled-microservices.txt @@ -0,0 +1,108 @@ +# micro services - perf + +https://joind.in/event/php-uk-conference-2019/massively-scaled-high-performance-web-services-with-php +https://www.slideshare.net/DeminYin/massively-scaled-high-performance-web-services-with-php-132696547 + +## Overivew + +glu mobile - microservices + +- Use docker +- HTTP processing +- Amazon ECS +- NOSQL Redis + couch base +- 40M votes a day +- 1M active users +- 14K req/m + +## Microservices + +- Small +- Simole +- easy to deploy +- upgradable + +Use Base images +Name by version and never change (Freeze them) + +## background processing +- Execute externally +- Shutdown functions +- Job server +- fastcgi_finish_request + +## HTTP Compression + +- gzip on +- gzip_types +- gzip_proxied any +- gzip_comp_level 5 +- gzip_min_length (default 20) +- Smaller than 1500B means it will always fit in one TCP packet + +If content_length is not set then nginx will compress always + +Laravel/Lume/Others add middleware to add content_length + +## Caching +- HTTP2 Server push +- Repeated server calls HTTP1 +- 304s + - Last-modified + - cache-control + +## No SQL +- Mongo/Redis +- Fight network I/O +- save hdd space +- compress large messages +- serialise better +- message templates +- add ttl expiry +- shorten cache keys + +## Fast caching +- PHP Redis +- Predis - high memory, slower +- Persistent connections available + +## Deployment EC8 +- 0 Downtime +- quick rollout +- ELB health-check +- Auto scaling + +## Hardware upgrades +- Doubling the hardware, halving the # of machines + +## VPC +- Closer together +- Same location +- utilise internal networks +- other thoughts + - Async I/O + - swoole + - HTTP/2 + - Tars + - binary (80% reduction) + +## Managing images +- Don't use aptitude (apt) +- Build from source +- fpm and Nginx together + - Separate not helpful + - No need for TCP/IP overhead +- supervisorD - everywhere + +# Useful terms +aerospike +couch base +php_swoole +supervisorD +new relic +bugsnag +amazon cloud watch +sonarqube +sensolabs security checker +fastcgi_finish_request +crowdstar https://github.com/Crowdstar/background-processing -- cgit v1.2.3