This document is the result of several hundreds of real-life incidents.
#SaaS
My policy on providing services is to use specialized service providers, not popular ones, never free ones.
🪨 The World Wide Web is part of the Internet, so we need to connect to the Internet and provide web services.
- Domain registrar
- DNS provider
- Server provider
- SSL certificate vendor
- CDN provider
- Transactional email provider
- Storage provider for backup
"Cloud" really means virtualization and server clusters. Many so-called cloud providers only virtualize a single physical server.
- Software defined and redundant network
- Software defined and redundant storage
- Software defined and redundant servers (CPU+memory) 👈🏻 this is very-very hard
- Thin, thus performant virtualization layer
- Build on Debian GNU/Linux
- Know each software on your server; uninstall all unused
- Keep every file on your server under control (e.g. packages, git)
- Monitor the kernel, the filesystem and every server software with functional tests, not just "pings"
- Apache httpd
- PHP-FPM (FastCGI Process Manager)
- Redis in-memory cache
- MariaDB database
Write as little code as it is possible. Build on well-tested packages and specialized providers.
- Integrated customer relations
- Fonts
- Videos
- Maps
- HTML widgets
- Advertisement
- Visitor tracking
- Payment gateway
- Email address verification
- SMS gateway
- Authentication
- Error tracking
Run production environments without humans. Every problem should be solvable with CI and anonymized staging environments.
💡 Recognize your tech debt when you are manually working on a production environment.
Only 1 Tech Debt Day per month can tip the scales from stress to joy.
Your application depends on others!
- Target audience
- Specialized provider vs. populist provider (quality vs. quantity)
- Funds
- Talk to the CEO and employees
- Discovery expertise by reading their blog, asking for a demo
- Attitude and transparency
- Usability
- Infrastructure
- Service providers
- Integrations and API-s
- Price-value ratio
- Attitude
- Response to bug reports
- Openness to contributors
- Coverage
- Release frequency
- QA tools in CI