Show HN: I wrote a book on web application deployment
I would not suggest this book to people who want to practice professional software deployments in 2021. This book is setting you up with a limited set of skills that are over-complicated and not best practice. For instance:<p>Server configuration. You should not be monkeying around with OS configs. If you do, it should only be in something like a Docker container, which is an easily tested&#x2F;updated versioned immutable repeatable closed environment that runs everywhere. Monkeying with server configuration is a quick path to becoming a systems administrator, introducing unnecessary bugs, and increasing complexity. Try to avoid using software that is platform-specific (see next point).<p>Services with systemd. You should probably not use systemd to manage services. The primary reason is that you might not fully control the system you run services on if it&#x27;s a multi-user system, and you need to have system control to modify systemd. It&#x27;s also generally not portable outside of a Linux system. In the cloud you would ideally be using a deployment or orchestration system which has its own configuration format and method to run services, obsoleting systemd. The most portable service manager you could learn to use would be <i>runit</i> (even Busybox has an implementation of it), and after that, whatever one you choose that you can run as an unprivileged user. You can then run your preferred service manager as a systemd service, or in a container, etc.<p>Databases. Try not to get into monkeying around with backups and restores. Find some kind of managed provider that can do simple snapshots before deployments and easily restore them. Doing it manually is painful, and automation could be done better by a managed provider than trying to roll it yourself. However, you <i>should</i> be familiar with Flyway-style database deployments.<p>SELinux. You should not have to learn how it works to deploy. But if you do, get a dedicated book on it.<p>Storage concerns. Don&#x27;t use networked filesystems for production. You <i>can</i>, in the sense that you <i>can</i> toast bread in the bathtub, but I wouldn&#x27;t recommend it.<p>Backups and restores. Use versioned immutable artifacts in an artifact repository. Use a managed backup service&#x2F;tool&#x2F;etc for whatever doesn&#x27;t work that way.<p>I don&#x27;t see mention of caching proxies, reverse proxies, or CDNs. These can get tricky, from being careful about headers to preserving source IPs to invalidating stale caches to load balancing and resource limits.<p>I don&#x27;t see any mention about continuous deployment, continuous integration, the 12 Factor App, or Immutable Infrastructure. All these are core components of modern deployments.<p>And as much as I hate it, Kubernetes is slowly of eating the entire world of modern systems, so learning how deployments work on it is essential to working in modern professional settings.