In recent months I've been researching and deciding on what my "next gen" stack is going to be.
The "bad" news for solopreneurs is it's extremely easy these days for good ideas (or even mediocre ideas well executed) to go quasi-viral. Sounds like a good thing, right? Ironically this can be a bad thing for people with the idea but unable to handle inorganic growth patterns.
The "good" news? I think the open source tools exist and are mature enough now to make it possible for a solopreneur to build a "scalable-enough" architecture. At least to the point that you can (a) compete on price with established companies, and (b) get yourself far enough into the next level where you're going to be profitable enough to hire help without loans or investments.
The catch is that this kind of stack is still (and probably for a while will continue to be) inaccessible to all but those who are willing and able to spend years honing their skills at all levels of the stack.
Django, python 3, PostgreSQL, and vue.js. Its what Im using and works good enough to to let my little team compete with bigger ones (sometimes run circles around them).
There are still some holes to fill, but right now I'm leaning toward:
- Google Container Engine. Project Atomic's Buildah for building containers from scratch. I chose GCE over the AWS equivalent container engine because of the Kubernetes ecosystem.
- May find a use for Google Functions, but I find that generally server-side work is just a proxy to backend data, in which case I feel I'm going to be better off just deploying containers, which are easy enough to scale on GCE. (No hard calculations on this yet, just a hunch based on pricing). Seems like a waste to pay for MB-hours if they're just sitting there doing nothing 90% of the time.
- Google Cloud Datastore. I rarely find a need to deploy SQL to user-facing functionality, but would likely use Google's Cloud SQL for that. Otherwise just pull down the NoSQL and import the data to an offline Postgres instance.
- Golang for server-side language
- Not familiar enough yet with Golang frameworks, but right now leaning toward Revel.
- Typescript as preferred client-side language.
- React, Vue, or Angular4+ for client-side framework.
- Protocol Buffers
- Amazon Route53 for DNS
- Amazon CloudFront, S3 for static resources. I don't feel Google Cloud equivalent front-end store is as feature-complete as Amazon's. One of the main things is Amazon's Route53 "alias" records that allow you to map root domain (ie. without subdomain) to your CloudFront deployment. If Google's infrastructure is capable of this I'm unaware.
- Using Amazon CloudFront also leaves open the ability to use Lambda at the edge where possible.
- LetsEncrypt to manage SSL.
- Google Apps to host email
I'm probably forgetting some stuff, but this should provide a high-level overview.
I'm not committed to it yet (would be a lot of work), but I'm leaning toward eventually writing up a series of blog posts that encapsulates the entire stack in much more detail when I'm confident I'm happy with it and all the holes / question marks are filled.
Probably going to catch some flak for this but if you're really building a software product by yourself you're going to want to pick whatever tech allows you to consistently throw yourself at the product. If you write something from scratch you'll be bogged down by boilerplate until you're bald from pulling your hair out. If the documentation is poor you'll waste days on simple problems or from waiting on a return email from support. In my view this is a personal not a technical problem when dealing with solo or small teams.
I was this close to writing project Amy[0] with f# on .net core. Was an interesting challenge. But I snapped out of it and am usong django (something Im productive with). Day and night difference that is already producing results even though its about 50% done.
19 comments
[ 0.26 ms ] story [ 45.4 ms ] threadThe "bad" news for solopreneurs is it's extremely easy these days for good ideas (or even mediocre ideas well executed) to go quasi-viral. Sounds like a good thing, right? Ironically this can be a bad thing for people with the idea but unable to handle inorganic growth patterns.
The "good" news? I think the open source tools exist and are mature enough now to make it possible for a solopreneur to build a "scalable-enough" architecture. At least to the point that you can (a) compete on price with established companies, and (b) get yourself far enough into the next level where you're going to be profitable enough to hire help without loans or investments.
The catch is that this kind of stack is still (and probably for a while will continue to be) inaccessible to all but those who are willing and able to spend years honing their skills at all levels of the stack.
https://news.ycombinator.com/item?id=15268057
- Google Container Engine. Project Atomic's Buildah for building containers from scratch. I chose GCE over the AWS equivalent container engine because of the Kubernetes ecosystem.
- May find a use for Google Functions, but I find that generally server-side work is just a proxy to backend data, in which case I feel I'm going to be better off just deploying containers, which are easy enough to scale on GCE. (No hard calculations on this yet, just a hunch based on pricing). Seems like a waste to pay for MB-hours if they're just sitting there doing nothing 90% of the time.
- Google Cloud Datastore. I rarely find a need to deploy SQL to user-facing functionality, but would likely use Google's Cloud SQL for that. Otherwise just pull down the NoSQL and import the data to an offline Postgres instance.
- Golang for server-side language
- Not familiar enough yet with Golang frameworks, but right now leaning toward Revel.
- Typescript as preferred client-side language.
- React, Vue, or Angular4+ for client-side framework.
- Protocol Buffers
- Amazon Route53 for DNS
- Amazon CloudFront, S3 for static resources. I don't feel Google Cloud equivalent front-end store is as feature-complete as Amazon's. One of the main things is Amazon's Route53 "alias" records that allow you to map root domain (ie. without subdomain) to your CloudFront deployment. If Google's infrastructure is capable of this I'm unaware.
- Using Amazon CloudFront also leaves open the ability to use Lambda at the edge where possible.
- LetsEncrypt to manage SSL.
- Google Apps to host email
I'm probably forgetting some stuff, but this should provide a high-level overview.
I'm not committed to it yet (would be a lot of work), but I'm leaning toward eventually writing up a series of blog posts that encapsulates the entire stack in much more detail when I'm confident I'm happy with it and all the holes / question marks are filled.
[0] https://github.com/yelluw/amy
It powers http://yelluw.com (https incoming this week)
I just dipped back into node with adonisjs but I think in rails it was much easier to do rapid prototyping full stack.