Earlier quoted context omitted.
Document everything in excruciating detail - I go so far as to record all the commands I run; and when complete o destroy the machine and start again (or use a separate system) and verify that I accurately recorded every step. You can add additional text about why you did certain things - and then store the data in a wiki or checked into git or similar so you can find it when you need it.
That's all great advice. What I find though is I don't do it enough for it not to change under me. Example: 1. Did a project on digital ocean, just ubuntu and node 2. Year later, Did a project using meteor, spent way too much time trying to get it all install with Vagrant (so all info from 1 was not useful) 3. Year later, Changed meteor setup to use docker ... so had to learn docker (so all info from 2 was not useful…
The architecture behind a one-person tech startup
231–240 of 334 posts
Re: The architecture behind a one-person tech startup
#232How do you start learning this breadth of software engineering? I consider myself good in the python / django space, but where do I start with learning these infrastructure technologies? I find that I use them once or twice periodically, and then don't touch them for so long, so I forget much of what I have learned.
Document everything in excruciating detail - I go so far as to record all the commands I run; and when complete o destroy the machine and start again (or use a separate system) and verify that I accurately recorded every step. You can add additional text about why you did certain things - and then store the data in a wiki or checked into git or similar so you can find it when you need it.
Re: The architecture behind a one-person tech startup
#233Earlier quoted context omitted.
I still use GCP, but I avoid locking myself into their proprietary infrastructure when I'm writing new stuff. I feel like Google is far too cavalier about deprecating services and forcing their customers to do migration work. It is hard to replace GCP's managed datastores because I really don't want to maintain my own database server (even if it's a managed service that someone else upgrades for me). So I've stuck to…
You don’t want to maintain your own database server, even managed by GCP, but with SQLite you have to maintain state on GCP Persistent Disks and backups to S3 using Litestream. Why do you think this is easier?
True, I have to maintain state on S3, but there's not much work involved in that.
If I was maintaining my own database server, I have to manage upgrades, backups, and the complexity of running an additional server. With Litestream, I don't have to manage upgrades because nothing bad happens if I don't upgrade, whereas there are security risks running an unpatched MySQL/Postgres server in production. Litestream has built-in snapshots and can replicate to multiple S3 backends, so I'm not too worried about backups. And there's no server to maintain.
What operational complexity do you see in Litestream?
Re: The architecture behind a one-person tech startup
#234My one-man-SaaS setup: - Static frontend hosted on Netlify (free unlimited scale) - Backend server on Google App Engine (connecting to Gcloud storage and managed DB via magic) I realize I'm opening myself up to vendor lock-in and increased costs down the road (if I even get that far), but I've wrangled enough Docker/k8s/Ingress setups in the past to know it's just not worth the time and effort for a non-master.
>managed DB via magic What product is this?
https://lab.cccb.org/en/arthur-c-clarke-any-sufficiently-adv...
Re: The architecture behind a one-person tech startup
#235I'd argue that just about every infrastructure that looks like this benefits from Kubernetes (that you're not setting up and managing), and that's a lot of them. The biggest problem is that not enough people have boiled down Kubernetes enough to look like heroku yet. Google Cloud Run is possibly the best example of what Kubernetes can look like/run like -- it runs on (probably a relatively heavily modified) KNative,…
Can you point out any tutorials or guides on how to set up kubernetes simply? I'm wondering what the best way to deploy my app with minimal effort is - you make it sound like kubernetes is the answer.
You can still deploy apps directly onto Kubernetes and it works very well for this purpose, but it will require a lot more learning than one of the platforms listed above. If you enjoy learning, Kubernetes is an incredibly powerful and satisfying tool to have in your kit, and the initial learning curve isn't as steep as some make it out to be. If your goal is to deploy apps as quickly and simply as possible however, go with one of the pre-existing platforms.
If you still want to learn Kubernetes then a really great book is Kubernetes Up and Running. It goes into just enough detail at the right point in time to make it simple while still being useful. If you do a bit of Googling, you might find a free copy of the book that used to be offered by Microsoft to promote their Azure Kubernetes Service. Otherwise there's Kubernetes the Hard Way² but that's more focused on administering the Kubernetes cluster itself, rather than how to use the cluster to deploy apps. You'd need a pretty convincing reason to administer your own cluster rather than spinning up a managed cluster on GKE or EKS.
My advice: - Grab a copy of Kubernetes Up and Running - Install minikube on your local PC - Experiment and have fun learning
Hope this helps.
---
1. https://twitter.com/kelseyhightower/status/93525292372179353...
2. https://github.com/kelseyhightower/kubernetes-the-hard-way
Re: The architecture behind a one-person tech startup
#236I'd argue that just about every infrastructure that looks like this benefits from Kubernetes (that you're not setting up and managing), and that's a lot of them. The biggest problem is that not enough people have boiled down Kubernetes enough to look like heroku yet. Google Cloud Run is possibly the best example of what Kubernetes can look like/run like -- it runs on (probably a relatively heavily modified) KNative,…
I have setup Kubernetes but never run it myself in production. But I work with a Hashicorp equivalent setup with Docker, Nomad and Consul. I also have several Service Fabric clusters. I think it all is just a complete waste of money. Buying services/metal in the cloud or going serverless or whatever is cheaper and with much lower risks for most minor businesses.
Re: The architecture behind a one-person tech startup
#237Since you're in Germany, how do you handle VAT, EU tax returns, invoices, etc? What about taxes and invoices to other countries?
I am wondering about this too. Tax compliance is complicated and Stripe doesn't do much for you on this front.
Looking into a Stripe plugin like https://www.quaderno.io/
I really enjoy using Stripe, and their support is great, but sales tax compliance makes me a bit jealous of those using Paddle.
Re: The architecture behind a one-person tech startup
#238Does anyone know how those diagrams are drawn?
Re: The architecture behind a one-person tech startup
#239My infrastructure is $2,800/year. There are two Servers load balanced with DNS. Each Server has 3 jails (Nginx, App, DB) and 2 NICs The internal NIC is for replicating the DB, and for the App Servers to target the Primary one. Diagram and Configs: https://blog.uidrafter.com/engineering/freebsd-jails-network...
Very interesting. Do you mind sharing the hardware specifications of your servers? Are you confident that FreeBSD is a secure OS to face the internet, say, as compared to OpenBSD?
Both servers are SuperMicro with:
- 6 Cores 3.3/4.5GHz (E-2136)
- 32GB ECC DDR4
- 2 × NICs (em, igb)
- 2 × 480GB SSD
- 20TB on 1Gbps with DDoS FENS
- IPMI over VPN
I rent them to Hivelocity.
===
FreeBSD vs OpenBSD
Ilja van Sprundel answers your question by comparing the number of kernel vulnerabilities since 1999 of the BSDs and Linux. [1]
I don't think FreeBSD, even well hardened [2], is as secure as OpenBSD. After all, OpenBSD's main focus is security. I use OpenBSD for orchestration and monitoring, and I have an experimental setup of OpenBSD with VMM but they crash sporadically, so I'll wait a bit.
At any rate, my goal is to have two heteregenous paths (maybe OpenBSD, FreeBSD) or (Solaris, Linux). This way I could simply shutoff the vulnerable path when there's an unfixed vulnerability.
[1] https://youtu.be/rRg2vuwF1hY?t=264
[2] https://vez.mrsk.me/freebsd-defaults.html
===
BTW, I have the FreeBSD hardening and setup scripted, which you could add into the ISO in `/etc/installerconfig`, or downloaded from the orchestration and manually ran with `bsdintall script myinstallerconfig.sh` if you wish.
Re: The architecture behind a one-person tech startup
#240My infrastructure is $2,800/year. There are two Servers load balanced with DNS. Each Server has 3 jails (Nginx, App, DB) and 2 NICs The internal NIC is for replicating the DB, and for the App Servers to target the Primary one. Diagram and Configs: https://blog.uidrafter.com/engineering/freebsd-jails-network...
Hey great job on the documentation! So nice to see it done well.