From 0bd87821310892f67025a77675445f4fc942a626 Mon Sep 17 00:00:00 2001 From: andie787 <4andie@gmail.com> Date: Wed, 21 Aug 2024 09:47:35 -0400 Subject: [PATCH 1/3] add items to checklist --- apps/going-to-production.html.markerb | 53 +++++++++++++++------------ 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/apps/going-to-production.html.markerb b/apps/going-to-production.html.markerb index c175cdfa5b..6f4e6428da 100644 --- a/apps/going-to-production.html.markerb +++ b/apps/going-to-production.html.markerb @@ -1,5 +1,5 @@ --- -title: Going to production +title: Going to production checklist layout: docs nav: apps redirect_from: @@ -9,7 +9,7 @@ redirect_from: - /docs/reference/going-to-production/ --- -This document lists important topics to consider when you set up a production environment on Fly.io. What makes an app production-ready can vary from one framework to another. The following topics and linked resources can help you understand when and why you might need specific features or configuration. +This checklist guides you through setting up a production environment on Fly.io. What makes an app production-ready can vary from one framework to another, so it's up to you to decide what checklist items will work for you. Not all of the checklist items will apply for your app and there may be other considerations not listed here.
**Important:** This list is neither exhaustive nor mandatory, and does not guarantee production-readiness for your app. Some apps might have unique requirements for production. @@ -19,13 +19,24 @@ This document lists important topics to consider when you set up a production en - **Set up single sign-on for organizations:** Enable SSO on your organization to take advantage of Google or GitHub authentication security. See [Single sign-on for organizations](/docs/security/sso/). -- **Use Arcjet application security for JavaScript apps:** Secure your app with rate limiting, bot protection, email validation, and defense against common attacks through our extension partner Arcjet. Currently [free in beta](/docs/reference/arcjet/#pricing), but pricing is subject to change. See [Application Security by Arcjet](/docs/reference/arcjet/). +- **Isolate staging and production environments:** Use organizations to limit access to your production environment. See [Blueprint: Staging and production isolation](/docs/blueprints/staging-prod-isolation/). + +- **Enforce least privilege access:** Use access tokens to allow ony the minimum access required by team members to your organization, apps, and Machines. See [access tokens](https://fly.io/docs/security/tokens/). - **Protect sensitive information:** Set secrets to store sensitive data and make them available as environment variables to your app. See [Secrets and Fly Apps](/docs/apps/secrets/). -- **Make sure private services are not exposed:** Check that your private apps with services don't have public IP addresses. Run `fly ips list` and use `fly ips release` to release unnecessary public IPs. See flyctl [`fly ips` commands](/docs/flyctl/ips/). +- **Make sure private services are not exposed:** Check that your private apps with services don't have public IP addresses. Run `fly ips list` and use `fly ips release` to release unnecessary public IPs. See flyctl [`fly ips` commands](/docs/flyctl/ips/). Assign private apps a [Flycast address](https://fly.io/docs/networking/flycast/) instead. + +- **Use Arcjet application security for JavaScript apps:** Secure your app with rate limiting, bot protection, email validation, and defense against common attacks through our extension partner Arcjet. Currently [free in beta](/docs/reference/arcjet/#pricing), but pricing is subject to change. See [Application Security by Arcjet](/docs/reference/arcjet/). + +## Networking + +- **Set up a custom domain:** Configure a certificate for your domain. See [Use a custom domain](/docs/networking/custom-domain/). + +- **Consider a dedicated IPv4 address:** Completely eliminate the chance of blacklisted spammers causing problems for your app. There is a small [added cost](/docs/about/pricing/#anycast-ip-addresses) for dedicated IPv4 addresses. See [Dedicated IPv4](/docs/networking/services/#dedicated-ipv4). + +- **Set up Flycast for private apps**: If you haven't already done so, give your private apps a Flycast address to communicate with them entirely on your private network. See [Flycast - Private Fly Proxy services](https://fly.io/docs/networking/flycast/). -- **Isolate staging and production environments:** Use organizations to limit access to your production environment. See [Blueprint: Staging and production isolation](/docs/blueprints/staging-prod-isolation/). ## Databases @@ -33,42 +44,36 @@ This document lists important topics to consider when you set up a production en - **Set up offsite backups:** Consider offsite backups for your database. -- **LiteFS**: LiteFS is a distributed file system that transparently replicates SQLite databases. See the [LiteFS docs](/docs/litefs/). - ## Monitoring - **Export your logs:** Set up the Fly Log Shipper to aggregate your app’s logs to a service of your choice. See [Export logs](/docs/monitoring/exporting-logs/). - **Use Sentry for Error tracking**: An application monitoring platform that helps you identify and fix software problems before they impact your users from our extension partner Sentry.Fly.io organizations get a year's worth of [Team Plan](https://sentry.io/pricing/+external) credits. See [Application Monitoring by Sentry](/docs/reference/sentry/). - -## Availability and resiliency +## Availability, resiliency, and cost control - **Use multiple Machines for resiliency:** Make your app resilient to single-host failures with multiple Machines that stay stopped until you need them. See [Blueprint: Resilient apps use multiple Machines](/docs/blueprints/resilient-apps-multiple-machines/). -- **Set up autoscaling by load or metric:** Use Fly Proxy autostop/autostart or the metrics-based autoscaler app. See [Autoscaling](/docs/reference/autoscaling/). - -## CI/CD +- **Add regions:** Scale your app in multiple regions closest to your app's users. See [Scale an app's regions](/docs/launch/scale-count/#scale-an-apps-regions). -- **Deploy with GitHub Actions:** Set up your app for continuous deployment to Fly.io from the app’s GitHub repository. See [Continuous Deployment with Fly.io and GitHub Actions](/docs/app-guides/continuous-deployment-with-github-actions/). +- **Refine the default autostop/autostart settings**: Autostop/autostart lets you stop or suspend Machines when there's low traffic, saving on resource usage and costs. You get autostop/autostart by default with a new app, but you can configure it to optimize for your use case. See [Autostop/autostart Machines](/docs/launch/autostop-autostart/). -- **Generate review apps with GitHub Actions:** Automatically generate ephemeral review apps on Fly.io for each pull request (PR) using GitHub Actions. See [Blueprint: Git Branch Preview Environments on GitHub](/docs/blueprints/review-apps-guide/). - -## Networking +- **Set up autoscaling by metric:** Use the autoscaler app to scale your app's Machines based on any metric, saving on resource usage and costs for apps that aren't running HTTP web services. See [Autoscale based on metrics](/docs/launch/autoscale-by-metric/). -- **Set up a custom domain:** Configure a certificate for your domain. See [Use a custom domain](/docs/networking/custom-domain/). +## App performance -- **Consider a dedicated IPv4 address:** Completely eliminate the chance of blacklisted spammers causing problems for your app. There is a small [added cost](/docs/about/pricing/#anycast-ip-addresses) for dedicated IPv4 addresses. See [Dedicated IPv4](/docs/networking/services/#dedicated-ipv4). +- **Get Machine sizing right:** Most production apps require 2x or performance CPUs. Also make sure you have enough RAM for your app and/or enable [swapping to disk](https://fly.io/docs/reference/configuration/#swap_size_mb-option) to deal with brief spikes in memory use. See [Machine sizing](docs/machines/guides-examples/machine-sizing/). +- **Fine-tune your app:** Learn about optimizing your app on Fly.io. See [Tips to fine-tune and your app on Fly.io](/docs/reference/fine-tune-apps/). -## Fine-tuning your app +## CI/CD -- **Get Machine sizing right:** Most production apps require 2x or performance CPUs. Also make sure you have enough RAM for your app and/or enable [swapping to disk](https://fly.io/docs/reference/configuration/#swap_size_mb-option) to deal with brief spikes in memory use. See [Machine sizing](docs/machines/guides-examples/machine-sizing/). +- **Generate review apps with GitHub Actions:** Automatically generate ephemeral review apps on Fly.io for each pull request (PR) using GitHub Actions. See [Blueprint: Git Branch Preview Environments on GitHub](/docs/blueprints/review-apps-guide/). -- **Fine-tune and benchmark your app:** Learn about optimizing your app on Fly.io. See [Tips to fine-tune and (not) benchmark your app on Fly.io](/docs/reference/fine-tune-apps/). +- **Deploy with GitHub Actions:** Set up your app for continuous deployment to Fly.io from the app’s GitHub repository. See [Continuous Deployment with Fly.io and GitHub Actions](/docs/app-guides/continuous-deployment-with-github-actions/). -## Support +## Know where to get Support -Check out our [community](https://community.fly.io/) to get help and answers. +**Community:** Check out our [community](https://community.fly.io/) to get help and answers. -Get email support with a [Launch, Scale, or Enterprise plan](https://fly.io/plans). +**Consider a plan to receive email support:** You get email support with a [Launch, Scale, or Enterprise plan](https://fly.io/plans). From 63d94e551823631ac4cf80d885989cb29be7d207 Mon Sep 17 00:00:00 2001 From: andie787 <4andie@gmail.com> Date: Wed, 21 Aug 2024 09:56:25 -0400 Subject: [PATCH 2/3] edits --- apps/going-to-production.html.markerb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/going-to-production.html.markerb b/apps/going-to-production.html.markerb index 6f4e6428da..8ea385cc71 100644 --- a/apps/going-to-production.html.markerb +++ b/apps/going-to-production.html.markerb @@ -9,10 +9,10 @@ redirect_from: - /docs/reference/going-to-production/ --- -This checklist guides you through setting up a production environment on Fly.io. What makes an app production-ready can vary from one framework to another, so it's up to you to decide what checklist items will work for you. Not all of the checklist items will apply for your app and there may be other considerations not listed here. +This checklist guides you through setting up a production environment on Fly.io. What makes an app production-ready can vary from one framework to another. You'll need to decide what checklist items will work for you; not all of the checklist items will apply for your app and there may be other considerations not listed here.
-**Important:** This list is neither exhaustive nor mandatory, and does not guarantee production-readiness for your app. Some apps might have unique requirements for production. +**Important:** This list is neither exhaustive nor mandatory, and does not guarantee production-readiness for your app. Apps might have unique requirements for production.
## Security @@ -21,7 +21,7 @@ This checklist guides you through setting up a production environment on Fly.io. - **Isolate staging and production environments:** Use organizations to limit access to your production environment. See [Blueprint: Staging and production isolation](/docs/blueprints/staging-prod-isolation/). -- **Enforce least privilege access:** Use access tokens to allow ony the minimum access required by team members to your organization, apps, and Machines. See [access tokens](https://fly.io/docs/security/tokens/). +- **Enforce least privilege access:** Use access tokens to allow only the minimum access required by team members to your organization, apps, and Machines. See [access tokens](https://fly.io/docs/security/tokens/). - **Protect sensitive information:** Set secrets to store sensitive data and make them available as environment variables to your app. See [Secrets and Fly Apps](/docs/apps/secrets/). @@ -58,7 +58,7 @@ This checklist guides you through setting up a production environment on Fly.io. - **Refine the default autostop/autostart settings**: Autostop/autostart lets you stop or suspend Machines when there's low traffic, saving on resource usage and costs. You get autostop/autostart by default with a new app, but you can configure it to optimize for your use case. See [Autostop/autostart Machines](/docs/launch/autostop-autostart/). -- **Set up autoscaling by metric:** Use the autoscaler app to scale your app's Machines based on any metric, saving on resource usage and costs for apps that aren't running HTTP web services. See [Autoscale based on metrics](/docs/launch/autoscale-by-metric/). +- **Set up autoscaling by metric:** For apps that aren't running web services, use the autoscaler app to scale your app's Machines based on any metric, saving on resource usage and costs. See [Autoscale based on metrics](/docs/launch/autoscale-by-metric/). ## App performance From 741987e78e9788a4b72192fe7a6bea77b9c646fb Mon Sep 17 00:00:00 2001 From: andie787 <4andie@gmail.com> Date: Wed, 21 Aug 2024 19:32:37 -0400 Subject: [PATCH 3/3] final edits --- apps/going-to-production.html.markerb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/going-to-production.html.markerb b/apps/going-to-production.html.markerb index 8ea385cc71..ae8c3150ca 100644 --- a/apps/going-to-production.html.markerb +++ b/apps/going-to-production.html.markerb @@ -9,7 +9,7 @@ redirect_from: - /docs/reference/going-to-production/ --- -This checklist guides you through setting up a production environment on Fly.io. What makes an app production-ready can vary from one framework to another. You'll need to decide what checklist items will work for you; not all of the checklist items will apply for your app and there may be other considerations not listed here. +This checklist guides you through setting up a production environment on Fly.io. What makes an app production-ready can vary from one framework to another. You'll need to decide what checklist items will work for you; not all of the items will apply to your app and there may be other considerations not listed here.
**Important:** This list is neither exhaustive nor mandatory, and does not guarantee production-readiness for your app. Apps might have unique requirements for production. @@ -37,12 +37,11 @@ This checklist guides you through setting up a production environment on Fly.io. - **Set up Flycast for private apps**: If you haven't already done so, give your private apps a Flycast address to communicate with them entirely on your private network. See [Flycast - Private Fly Proxy services](https://fly.io/docs/networking/flycast/). - ## Databases - **Run "production-grade" Postgres:** For Fly Postgres, our unmanaged database, set up replication clusters of 3+ servers. See [High Availability & Global Replication](/postgres/advanced-guides/high-availability-and-global-replication/). You can also use an external database provider and configure it for redundancy. -- **Set up offsite backups:** Consider offsite backups for your database. +- **Set up offsite backups:** For all databases, it's essential to have a recovery plan that includes storing backups offsite. ## Monitoring @@ -50,7 +49,7 @@ This checklist guides you through setting up a production environment on Fly.io. - **Use Sentry for Error tracking**: An application monitoring platform that helps you identify and fix software problems before they impact your users from our extension partner Sentry.Fly.io organizations get a year's worth of [Team Plan](https://sentry.io/pricing/+external) credits. See [Application Monitoring by Sentry](/docs/reference/sentry/). -## Availability, resiliency, and cost control +## Availability, resiliency, and costs - **Use multiple Machines for resiliency:** Make your app resilient to single-host failures with multiple Machines that stay stopped until you need them. See [Blueprint: Resilient apps use multiple Machines](/docs/blueprints/resilient-apps-multiple-machines/). @@ -72,8 +71,8 @@ This checklist guides you through setting up a production environment on Fly.io. - **Deploy with GitHub Actions:** Set up your app for continuous deployment to Fly.io from the app’s GitHub repository. See [Continuous Deployment with Fly.io and GitHub Actions](/docs/app-guides/continuous-deployment-with-github-actions/). -## Know where to get Support +## Get support -**Community:** Check out our [community](https://community.fly.io/) to get help and answers. +- **Community:** Check out our [community](https://community.fly.io/) to get help and answers. -**Consider a plan to receive email support:** You get email support with a [Launch, Scale, or Enterprise plan](https://fly.io/plans). +- **Consider a plan for email support:** You get email support with a [Launch, Scale, or Enterprise plan](https://fly.io/plans).