Lots and lots of best practice exists specifically to help teams , and especially teams with some normal amount of turnover. The problems of a solo dev are very different than a dev on a team. Knowledge silos don't exist. Distributed expertise doesn't exist. There's no one to mentor, no shared vision to maintain, no intertia to combat. I consult on big complicated team projects. I also manage multiple solo projects.…
'knowledge silos' in a one person team are real: Me today and me from 2 years ago when I set a thing up are different people, and I don't remember that any more than a team mate in a multi-person team would know it. This is where 'professional' approaches can help considerably: using 'standardized' stuff, instead of bespoking everything (even if bespoking is much easier), or making sure you write a TON of documentati…
Ask HN: Solo-preneurs, how do you DevOps to save time?
281–290 of 328 posts
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#282Earlier quoted context omitted.
Until Heroku has a huge downtime (like recently) and you are f*ked. If you have your own VMs, you can quickly move them to a different provider, but it's hard to start figuring out servers when Heroku is down and your business stopped. That said, I would also recommend Heroku to many.
I can almost guarantee that over a period of years you'll see significantly less downtime that can be attributed to Heroku than you would on VMs that you manage. Even if that isn't the case, if Heroku are responsible for it then you can mostly just kick back and let them fix it, rather than spending 24 hours without sleep migrating VMs between providers. The context here is also that of a single entrepreneur building…
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#283Earlier quoted context omitted.
Heroku is by far the best for this but just to throw in some alternatives: * Digital Ocean Apps -- somewhat finicky but works very similar to Heroku, it gets closer to bare metal so I prefer it * render.com * AWS Elastic Beanstalk -- though setting this up is non-trivial, it is very similar to Heroku with its "set it and forget it" * AWS Container Services -- if you're using Docker * Google App Engine * Supabase -- g…
I would advise against Elastic Beanstalk, last time I used it the product had the stink of being on life support - they've not really added any new features to it in several years, and even before that it was incredibly flakey.
1. Their server manager process got in an unresponsive state. It wouldn't update my service. It stopped reporting logs from the service that was running. I went to the AWS Loft and consulted with the AWS Support technician. They had me log into the machine with SSH and troubleshoot. I was using Elastic Beanstalk specifically so I would not have to log into machines.
2. The console frequently showed servers as running when they weren't. And vice-versa. I wasted a lot of time trying to figure out why my server didn't start when it actually did start and why my server isn't listening on its port when the console incorrectly showed that it started. Logs were also delayed randomly.
3. The final straw happened on a Saturday. Elastic Beanstalk suddenly started returning errors. I purchased an AWS Support subscription and filed a ticket. It turns out Elastic Beanstalk Team had deployed on a Saturday and then rolled back. Unfortunately, anyone who did API calls through the new API version got new values added to their Elastic Beanstalk API backing database. The rolled-back the server errored when it saw the new values. They refused to just fix the bad data in their database caused by their bad deployment. Instead, they asked me (their customer) to download special management tools and perform manual operations to fix it. And I had to pay them to find out these instructions.
Now I use Heroku.
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#284Earlier quoted context omitted.
Pretty much anyone you can pay to host a database, you can pay to back it up. Amazon rds, heroku postgres, google cloud sql... pick the service that works for you, and they have some affordance for backups. Backups are something I expect , rather than something I shop around for.
My experience says to backup to a different vendor.
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#285I have no idea why there's nothing here saying "don't". Go and get a Heroku account, hook it up to your Github repository's master branch for deploys, use Github Actions for CI, and then get on with life. Yes, you'll pay more for a Heroku Postgres instance than you would for a VPS on Digital Ocean with Postgres running on it, likewise you'll pay more for Heroku Dynos than another VPS to run your application server. O…
Heroku is by far the best for this but just to throw in some alternatives: * Digital Ocean Apps -- somewhat finicky but works very similar to Heroku, it gets closer to bare metal so I prefer it * render.com * AWS Elastic Beanstalk -- though setting this up is non-trivial, it is very similar to Heroku with its "set it and forget it" * AWS Container Services -- if you're using Docker * Google App Engine * Supabase -- g…
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#286nginx ingress (I would probably go Contour+Envoy if I was to set it up now).
Kotlin w/Gradle. Build + Deploy single command `gradle deployStage`.
jib for container images, don't need Docker, reproducible super fast builds.
Prometheus + Grafana for metrics and alerting.
Things I like about it:
- JVM is super low maintenance runtime, tune it once and pretty much good to go. Very easy to diagnose memory or performance problems in production. I even have the debugger agent loaded in prod listen on localhost so I can use kubectl port-forward to access it and diagnose bugs that only occur in production or hung threads etc.
- Prometheus seems like overkill but it's just so much less effort because everything already has a prom exporter.
- Using k8s API saves a bunch of time again. No need to screw around with docker-compose or some godawful config management from the 2000s like Ansible (ick).
Things I don't like:
- It's not HA. The DB pods push their WALs to S3 and I have script to spawn a new PG from S3 using PITR. This is how I test new code so it's known working but it still means that if my server goes down it's down until I do something about it.
- The box is a bit snowflaky. I didn't set it up using a script, it was hand configured up until the k8s level.
- I rarely upgrade k3s because I have to do it manually. If I was using EKS or GKE I would probably press the upgrade button more often.
- Grafana is a chore. grafonnet helps (I also use Tanka w/jsonnet for k8s manifests).
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#287I have no idea why there's nothing here saying "don't". Go and get a Heroku account, hook it up to your Github repository's master branch for deploys, use Github Actions for CI, and then get on with life. Yes, you'll pay more for a Heroku Postgres instance than you would for a VPS on Digital Ocean with Postgres running on it, likewise you'll pay more for Heroku Dynos than another VPS to run your application server. O…
Heroku is by far the best for this but just to throw in some alternatives: * Digital Ocean Apps -- somewhat finicky but works very similar to Heroku, it gets closer to bare metal so I prefer it * render.com * AWS Elastic Beanstalk -- though setting this up is non-trivial, it is very similar to Heroku with its "set it and forget it" * AWS Container Services -- if you're using Docker * Google App Engine * Supabase -- g…
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#288- Linode VPS
- Nginx
- SSH to deploy code
- Google Cloud hosted (& backed up) DB
Why would I need K8 and some crazy architecture when I'm just trying to get my product to my customers in the fastest / most efficient way possible? I'm not FB or Amazon and if I do get that size, I'll have plenty of time to adapt on the way there
Finally I was going to quote the Pieter levels case but someone else beat me to it
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#289Databases:
use AuroraDB on AWS. Pros: no server maintenance, no backups, no maintenance at all really. Automatic snapshopts set to 30 days. I back it up once a week to an S3 bucket for longer term storage. That S3 bucket is "aws s3 sync" to a local drive on a debian machine that has a tape drive in it. I do the tape backups just after the weekly DB backup.
Code deployment: For static assets I use GitHub actions. For the containerised servers I haven't migrated to GitHub actions yet (.NET Core app running in an Ubuntu container) but since the system is usually deployed with the AWS docker tools that should be easy to automate. Lambda functions just use the AWS dotnet command line tools.
This is all much easier when you use a debian machine as your main dev/integration box. You can use WSL2 as a reasonable substitute. The command line AWS and dotnet tools are much nicer in a unix shell as you can do things like use a Makefile or a shell script to capture the more complicated actions. PowerShell is an abomination.
Re: Ask HN: Solo-preneurs, how do you DevOps to save time?
#290Earlier quoted context omitted.
I think you mean automation is very useful. I've worked in a lot of places where we had a single `make deploy` that could compile, test, upload the artifacts, deploy the artifacts to hosts, start the new services, and slowly transition the load balancer to point at the new instances while automatically backing out if error metrics started lighting up. This is just automation, it doesn't have to happen on every commit…
I guess that's fair, I'm probably coming into this having only seen it done a certain way and blind to other possibilities. That being said, it would take a lot to convince me a standard CI/CD pipeline is not worth the investment. My only experience with non CI/CD deployment process was a very manual process at a startup, then when I saw my first CI/CD it felt like magic.