Yesterday, I put the first bit of effort to setup my new server and staging environment for my latest project log.fm.
Since log.fm is a podcast search engine that will create custom RSS feeds for podcasts people guest appeared on, it will have lots of data to parse. So naturally I want it to be fast.
Goals for the tech stack:
Here is the tech stack I am working with for starting:
Main server: Digital Ocean droplet
affordable VPS that I can easily scale up later. Root access to setup and install the tools for the background jobs and processing of the RSS feeds and podcast data (using things like supervisord)
Web hosting control panel: CyberPanel
Databases: MySQL and ElasticSearch
Codebase: mostly PHP
I am the most familiar with and proficient in PHP, so that helps getting off the ground faster. Plus for a CRUD app, its handles the job decently well if you write efficient code.
After standing up my new server yesterday, and getting my staging environment setup, I was able to start testing the code base out on a live server that will be super close to the live production server down the road. Always great when you are not just working off the localhost server on your laptop, especially when trying to certain things.
Like say, ingesting over 250,000 podcast feeds and processing the data. This might surprise you, but my ISP didn't like me making 50k page requests overnight....
With that being said, what is your staging or production environment for your project?
Your thoughts on how I can make mine better? I am all ears!
I'm using a JAM Stack. NuxtJS, GraphQL, MongoDB and Node. I just started learning to it made sense for me to stick to Javascript on the frontend as well as back. Really loving it and would recommend to all beginners.
I find that a NoSQL solution like Mongo gives me the flexibility to scale my database design as I progress without having to think about the all columns I'd need in the traditional SQL model.
ALl the best!
Very cool. I did not know that Mongo is that different than something like MySQL. So I know that doing something like adding data into a record in MySQL would be a query like this: INSERT INTO table_name VALUES (col1, col2, col3)
How would that differ in Mongo? Are you saying that the columns don't quite have o match to store the data?
In a way, yes. Mongo uses key/value pairs to store data. So you can insert data into the database by referencing the field (column) in a document (row). If a field can be empty/null, you don't have to include it in the insert statement/code.