Introduction
- Architecture
Divide and Conquer
- N-tier Architecture
- Microservices
- Sharing sessions
- Logging
The fallacies of distributed computing
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- Transport cost is zero
- The network is secure
- Topology doesn’t change
- There is one administrator
- The network is homogenous
Optimizing your PHP code
- Choosing which functions to use
- Loops
- Generators
- Optimize Composer Autoloader
Asynchronous Workers
- Queues
- Amazon SQS
- Autoscaling PHP Workers in AWS Elastic Beanstalk
- Other Queue Providers
Context and caching
- Layers of caches
- Transactions
- The problem with context
- Practical example
- Load balancing between your server and the users device
- Cookies and caching
- So how can we avoid context?
Control your cache
- Versioning resources
- The Cache-Control header
- Max-age
- Setting your origin cache-control header
- Don’t forget non-proxied responses
MySQL design optimisation
- Choosing Data Types
- Schema Design
- Indexing
- Indexing Strategies
Redis and Memcached
- Memcache versus Memcached
- What do they do?
- Using a cache
- Russian Doll caching
- Cache warmup scripts
Enemies of scale
- Metrics
Profiling Your Code
- Commercial application performance monitoring software
- Xdebug and Kcachegrind
- Strace
- PageSpeed
- Profiling OpCache
Load-testing tools
- Gatling
- Siege
- LoaderIO
Profiling MySQL
- Database Metrics
- Benchmarking strategies
- Profiling tools
- Servers
The Nginx web-server
- Configuring Nginx
- Nginx as a reverse proxy
- Nginx+ and JWT authentication
Tuning PHP
- Configuring PHP-FPM
- Opcache
Tuning MySQL
- Alternatives to MySQL
- Different aims of scaling
- The process of tuning
- MySQL settings
- Using the memory storage engine
Cookieless Subdomains
- Creating the subdomain
- Set up the subdomain in Nginx
- Get a free certificate for your subdomain
Content Delivery Networks
- CloudFlare
- Amazon Cloudfront
- Akamai CDN
- Using a CDN
Load Balancing
- Load Balancing Algorithms
- Types of Load Balancing
- Synchronising File Systems
- Choosing a load balancer
Using Amazon Elasticache
- Setting up and configuring
- Monitoring
- Connecting to ElastiCache
- Scaling