Hello Everyone!
First time poster and newbie to the Indie Hackers community. I am looking to start a SaaS product and trying to get some feedback on what programming language I should have it developed on and also what architecture I should use?
The software is for a University's Student Services department, so I was thinking Multi Tenancy (however need to validate if University's would allow for a shared DB with another University). I was planning on AWS or Azure... I would need to make sure it is very secure as it would likely have documents containing PII including SSI numbers and etc.
Thinking about Python or C# mainly because of the versatility and my pre-existing knowledge of the languages.
Any suggestions and Feedback would be greatly appreciated!
Sorry in advance if this conversation has already happened or if I am in the wrong section for posting this type of question!
Thank you,
Christian
The language and framework used dont really matter. Use whatever you like and gets the job done, just make sure your not putting stones on your way. For example, I'm backend engineer working for a Big company (Sage) were using Java and microservices architecture, bad combo, Java doesnt fit well into microservices because the jvm is so freaking slow, the footprint is too big, If you go microservice I would use something with a small footprint, like node, python or PHP. Just my two cents.
I´ve moved from Spring to Quarkus.io and so far very happy with it. You can get the memory footprint even lower by using GraalVM instead of JVM.
Just a quick look and seems pretty awesome, will have a look into that, because with spring... Get it up running 30secs if you don't have any migrations ongoing.
I faced this java issue, if you have a choice try graalvm. Its comparatively faster than plain JVM.
I have 5 years of architecture and production experience with java and microservices, feels like you guys are doing something off if the startup time is your problem, if the make or break of your app is 30 seconds of warmup time this means your auto scaling is done in a poor manner.
I would not say that, the JVM is slow in it's nature, if you add a framework to it like Spring it just slowers everything down, + a migration then things get slow asf.
Nothing about doing things well or wrong, In my personal opinion, java is not the best fit for microservices if you compare it with Python let's say.
Well, netflix the inventor of microservices would disagree as they built it all on java and groovy, which btw just moved to using spring themselves
I agree with you, Java can be tweaked to perfom better, but let's not forget the JVM is heavy, and it just takes longer to starts as let's say a interpreted language like Python or PHP, not saying these languages are faster, just saying the start time is better.
I'd go with C#.
Build with what you know the best as of now.
I generally start with Node on the backend, or Python. If performance is not the issue then think of Java(generally slow to start, if you have control over server GraalVM can help a bit in performance).
Initially I suggest you go with NodeJS on Firebase. You can just concentrate on your project instead of all other headaches. I also heard Firebase is expensive compared to Azure and AWS for large projects, be cautious.
NodeJS and ReactJS - https://saasify.teachable.com/p/build-a-saas-app-with-nodejs-and-reactjs . It has everything you need.
Just work on the idea of what you currently know best. It will enough challenges by itself, there is no need to burden yourself to learn new things at the same time. In fact that would greatly increase the risk you never get there..
As other already told you the programming language itself isn't really important, most of them will be able to let you create what you have in mind.
The security concerns are fare but I think that you can even rely on an encrypted HTTPS and store the relevant information with MD5 (those are common way to store passwords) but I think you shouldn't let those concerns stop you from developing an MVP.
If you want to learn all the stack involved in building a fello Indie Hacker (@tonylea) have created this course that will teach you how to create your Saas platform: https://saasadventure.io/
Hope this help.
MD5 is not a good strategy for storing password hashes. Pick something slower like bcrypt: https://security.stackexchange.com/a/19908
@jakelazaroff I am sure that there are better ways to safely store PII data, my point here was to not fall in the analysis paralysis and start building the project 😃
BTW I am not an expert in security and I said MD5 because I tought it was secure enough because I saw the field password stored like it in my WordPress databases. Comes out that MD5 is not the single approach that WordPress uses to save password and your comment let me discover this interesting article: https://ttmm.io/tech/wordpress-password-hashing/
Sorry if I came across as rude! Wasn’t trying to criticize, just wanted to let you know that storing password hashes as MD5 is insecure. I’m not a cryptography expert so I basically just reach for bcrypt whenever I need to hash passwords — it’s slow and it automatically does key stretching with random salts.
Hey @jakelazaroff I really appreciate your clarification, I know how internet works and that we do not always have the time to explain something in the proper way 😉
Instead I want to thank you because your point let me discover something new.
This comment was deleted 6 years ago
Any of those would be alright. When picking your stack, I always say, start with what you know.
I made a list of SaaS starter kits, boilerplates or templates recently.
For C#, you can consider ASPnet Zero (not sure if they support C#)
For Python, there's Launchr, Pegasus, SaaS Forge and Djaodjin.
https://www.indiehackers.com/post/17-saas-starter-kits-boilerplates-based-on-your-favourite-programming-language-framework-35387161e0
This comment was deleted 6 years ago