I've been releasing a lot of products over the last two years. About a dozen. Most have been abandoned. Five are still alive, all need love and attention. How can I prevent myself from reinventing the wheel each time I'm making a new digital product?
I came to the conclusion I should view my products as atomic parts of a bigger entity. Each product I made so far is a monolithic LAMP application: PHP/Symfony with React DOM and MySQL.
What I need to make things more modular and performant is to shift toward a micro-service architecture and leverage platforms like Netlify to decrease my hosting and development costs.
I've been experimenting with GatsbyJS over the last two weeks, and I've fallen in love with how cutting-edge the technology is: my development time is significantly reduced, and the quality of the delivery increases proportionally. It's perfect to manage all my front-end activities.
Hosted on Netlify, I don't have to spend time setting up SSL certificates or SEO or complicated DNS configurations, it just works right away, with built-in Continuous Delivery and Continous Integration directly from my Github repositories. And the best part is I don't have to pay anything.
I bought the domain name smithrandir.com, which is the primary domain that will host all my micro-services written in NodeJS. One micro-service will be served over one subdomain endpoint. For example, I have a websocket server I'm accessing at ws.smithrandir.com. This way, each micro-service can be reused in different products to decrease my server costs, and at the same time, I can manage them more efficiently.
Then I just need to call my back-end services from my GatsbyJS websites using AJAX requests to dynamically render data.
Slowly but surely, I'll get to the point where I've built my own virtual lab.