|
2 | 2 | title: Deep dive demo |
3 | 3 | layout: docs |
4 | 4 | nav: demo |
5 | | -toc: false |
| 5 | +toc: true |
6 | 6 | --- |
7 | 7 |
|
8 | | -You probably landed on this page because somebody recommended Fly.io to you. You're curious, and you want to know more before you commit. |
| 8 | +Welcome to our deep dive demo, where you can explore Fly.io more thoroughly, but in a time-boxed way. In one hour or less: get a fully-functioning app running in the first few minutes, and then have enough time left over to understand what you just did, explore how the pieces fit together, and even integrate in AI functionality that makes use of GPUs. |
9 | 9 |
|
10 | | -If you came from our [Speedrun](https://fly.io/speedrun) or [Getting started](https://fly.io/docs/getting-started/) pages, maybe you want to not only be up and running fast, you want to feel confident that you're making a good decision; choosing a platform that can both support you now, and scale with you later on as you grow. |
| 10 | +## Goals of the deep dive |
11 | 11 |
|
12 | | -Maybe you're concerned about lock in. You want to know that you can |
13 | | -use services from other places and even eject entirely and move your entire |
14 | | -application elsewhere if things don't work out. |
| 12 | +It's really just one goal: |
15 | 13 |
|
16 | | -If you want to explore more deeply but in a time-boxed way, then you're in the right place. You should be up and running within minutes, and have enough of the hour left over to spend some time understanding what you just did and run a few commands and see what they do. |
| 14 | +**Help you find out if Fly.io is the right place for you.** |
17 | 15 |
|
18 | | -If you don't get a good feeling within an hour, you're out of here. If you do get a good feeling, then consider |
19 | | -sticking around to experiment and learn more about features that interest you. And when you're done, you can delete everything and launch the application that you brought here to launch. |
| 16 | +If you came from our [Speedrun](https://fly.io/speedrun) or [Getting started](https://fly.io/docs/getting-started/) pages, maybe you want to go beyond `hello world` and explore the platform so you can feel confident that you're choosing a platform that can support you now, and scale with you later on as you grow. |
20 | 17 |
|
21 | | -**Next:** [Beyond `hello fly`](/docs/happy-path/ready/) |
| 18 | +Maybe you're concerned about lock in. You want to use services from other places and even eject entirely and go elsewhere if things don't work out. |
| 19 | + |
| 20 | +If you don't get a good feeling within an hour, you're out of here. If you do get a good feeling, then stick around and try launching the app that you brought here to launch. |
| 21 | + |
| 22 | +## Beyond `hello fly` |
| 23 | + |
| 24 | +Our deep dive assumes that you're not satisfied by a `hello fly`, or even a `hello fly` with a database application. You know that a real-world application has at a minimum the following components: |
| 25 | + |
| 26 | +* An HTML form and a database; typically a relational database. |
| 27 | +* The ability to handle media files or documents, generally using S3. |
| 28 | +* A multi-user and realtime component, where changes made by one person in one location are reflected instantly in the browser of another person. |
| 29 | + |
| 30 | +To get a fully-functional app running smoothly, you need a whole bunch of things; things like Anycast routing, load balancers, DNS certificates, WebSockets, an internal private network, a relational database, an object store, and an in-memory database. And the knowledge to to connect them all together. |
| 31 | + |
| 32 | +We take a lot of this work off your plate with our [Fly Proxy routing](/docs/reference/fly-proxy/) and out-of-the-box [private networking](/docs/networking/private-networking/). |
| 33 | + |
| 34 | +Usually, set up for a complete app typically takes a _minimum_ of an afternoon's worth of work, even if you're familiar with a cloud platform. There is almost always a surprise, and often several. We can't promise no surprises, but we can show you how we'll partner with you to handle some of the dev ops complexities of working in a public cloud. |
| 35 | + |
| 36 | +## So what is this deep dive demo app? |
| 37 | + |
| 38 | +The deep dive demo uses industry standard components that you can run on your laptop, a VPS, AWS EC2, Google Compute Engine, or Azure. |
| 39 | + |
| 40 | +### Web Dictaphone -- Fly.io edition |
| 41 | + |
| 42 | +The deep dive demo is based on [MDN's Web Dictaphone](https://github.com/mdn/dom-examples/tree/main/media/web-dictaphone+external). |
| 43 | +You can play with a [live demo hosted on GitHub](https://mdn.github.io/dom-examples/media/web-dictaphone/+external). The Web Dictaphone app is about as basic of an HTML form as you can get, and it has the added bonus of providing the ability to generate as many media files as you want using only your voice. |
| 44 | + |
| 45 | +The basic Web Dictaphone is client side only, requiring a web server that can deploy static assets (HTML, CSS, JS, images), like NGINX, Apache HTTPd, or Caddy. Storing the data in databases for our deep dive demo requires a server that can handle HTTP GET, POST, PUT, and DELETE requests. The choice of server varies depending on the language or framework. |
| 46 | + |
| 47 | +### Other demo components |
| 48 | + |
| 49 | +The demo includes the following components: |
| 50 | + |
| 51 | +* A [PostgreSQL](https://www.postgresql.org/+external) relational database to store the names of the audio clips |
| 52 | +* A [Tigris bucket](https://www.tigrisdata.com/+external) to store the the audio files |
| 53 | +* [Upstash for Redis](https://fly.io/docs/reference/redis/) and [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API+external) to handle the connections for the realtime requirement |
| 54 | + |
| 55 | +## Available runtimes |
| 56 | + |
| 57 | +Our deep dive demo comes in two flavors (so far): |
| 58 | + |
| 59 | +- **Node.js** |
| 60 | + - [node-dictaphone](https://github.com/fly-apps/node-dictaphone+external) GitHub repo |
| 61 | + - For details about implementation-specific files and app logic, see [Node.js deep dive demo](/docs/happy-path/nodejs/). |
| 62 | +- **Rails** |
| 63 | + - [rails-dictaphone](https://github.com/fly-apps/rails-dictaphone+external) GitHub repo |
| 64 | + - For details about implementation-specific files and app logic, see [Rails deep dive demo](/docs/happy-path/rails/). |
| 65 | + |
| 66 | +--- |
| 67 | + |
| 68 | +**Next:** [Launch the demo](/docs/happy-path/launch-deep-dive/) |
0 commit comments