May 21, 2019

Building microservice based SAAS - how much lean can I really go...

vividcode

Devs

I am newbie web developer, though experienced enough to think of building a microservice based SAAS. (I have built one, though only as a part of bigger team, so I know the building blocks involved)

I know enough Nodejs and angular to build a full scale microservice based application.

However I have questions that are aimed more at not reinventing the wheel, or redo things myself from scratch all-over after I build it once.

1 - Will this be enough? Or do I need to know about more techs to build robust secure app?

2 - What additional setup-related thing I should consider - eg docker / serverless ? I am one-man team and intend to remain one until I see revenue validation. But I have no devops experience as such.

3 - Question 2 again, with respect to deployment. What will be suitable when I deploy it somewhere ie. amazon, azure or ibm cloud? Again , should I build them with those APIs/SDKs as dependencies (from amazon, azure or ibm) or will it be possible to deploy things just as-is?

4 - Not quite important, but still worth considering - what's the easiest cool sdk/library to test api based app like mine?

I am new to web tech, feel comfortable with node and angular now and would not want to learn something proprietary unless it's the only way.

All thoughts welcome...and thank you so much for your time..

  1. 5

    Generally speaking, microservices are much easier to scale team size with and the cost is significantly slower development speed and slower performance as well.

    As a rule of thumb, it's almost necessary for a company with 1000+ devs, it's a good choice for a company with 50+ devs, and it's really bad choice for a company with under 5 devs.

    You definitely don't need Docker or Serverless. You wanna get this thing shipped, right? I'd generally echo @igrabes's advice but take it one step further. You probably don't even need to use Angular to get started. Here's my advice:

    1. Use a Node MVC framework to speed up your development—Adonis is a good choice

    2. Host on something simple, not AWS or Google. I like Digital Ocean, but if you want a bit more done for you, check out Render

    3. Ship it

    If and when you get some form of traction, then make your beautiful SPA. If and when it's so big you can hire sizeable team, then worry about dockerizing everything, microservices, etc.

    1. 3

      Exactly this^

  2. 5

    I don't know what you are building, but why jump to a microservice architecture and serverless? That's a lot to bite off if you already aren't feeling that confident. I would focus on a single app, monolith it up, get it working, get some customers and THEN if you are needing to scale up, reassess your microservice goal.

    What I would do:

    1. Node/Angular - singular app ( No microservices)

    2. Host it on heroku ( let them handle devops for you )

    3. Docker if you want, but not necessary

    4. Get revenue validation

  3. 3

    I was in the same boat a few months ago and this is what I decided:

    I'll go with Dokku[0] (it uses Docker containers) at the start of the project, cost is very cheap and it works fine on a $5/month DigitalOcean's droplet, so it is perfect.

    If my project has success and load increases I'll scale up vertically the DigitalOcean's droplet instance up to the max ($960/month 192GB/32CPUS ).

    Finally if I need a bigger infra then I'd move everything to Deis Workflow - The open source PaaS for Kubernetes[1].

    Cons of this setup: if you app is mission-critical and it needs to be 99.999% of the time online (maybe SLAs?) from the day 1 then it is not good and you would need to jump right away to a Kubernetes cluster (running in multiple zones..etc) or just go for a Serverless cloud.

    P.S. Stop over over-engineering it ;-)

    [0] http://dokku.viewdocs.io/dokku

    [1] https://github.com/teamhephy/workflow

    1. 3

      If you need more than the max ($960/month 192GB/32CPUS ) droplet, then you'll have so much money rolling around that you can hire multiple full-time devops experts to decide how to do horizontal scaling for you.

  4. 2

    Wow, this is amazing. Everyone thank you so much...this info is priceless.

    This is just an online marketplace for one kind of corporate services (details I will reveal once I get some real progress on it, or it will be jinxed :)) - so no need for ultra-superfast services as such. But general consensus on what's good + value for money is always better shelling out of one's own packet instead of investors ...

    So many diverse suggestions about hosting - Digital Ocean seems to everyman's choice...I will also checkout heroku as that seems to be known name since longest to me...Both of their pricing structures (units droplets vs dynos) did not make sense to me, but i guess i will figure out once I get going.

    Back to plain old question of toolset - @alchemist - great suggestion about Adonis I will surely check it out. I am still not that great with Node fully, and struggling with authentication. I find passport library quite resourceful but struggling to make it work...and I use postgres for back end.

    Angular again is new territory but now I got hold of many constructs from an existing app team I am part of.

    @igrabes - A newbie question that pops to my mind is that if monolith is possible as you suggested, are angular + node both needed or just one of them? I am yet to see any REST based application using Angular for back end or Node for front end, or even vice versa. Some github project example will be greatly helpful here. From my own google search I came across many node based api examples, but so far it wasn't beneficial at all - they were quite older versions I couldn't even get to build on. I had to chop things myself to make it work.

    @sergey_shvets - i indeed found serverless interesting and I hope there are no pre-dependencies building for serverless.......will checkout their pricing - I still don't know what hosting providers go with serverless apart from Amazon.

    1. 3

      "serverless" is more of a buzz term, there is a real server behind. What they mean, you don't have to worry about infrastructure or scale if you write things their way. Node.js is supported by pretty much every cloud provider. Zeit.hq takes it even further, where you don't even care about where you host, you pay to them and they host it where they see fit. I recommend this approach just because you don't want to care about infrastructure yourself. It is a whole topic that you can skip learning.

      PS If you do marketplace for corporate services, and it fits well into purchase/order/order processing flow, I suggest you adopt some existing technology instead of building things yourself. Take wordpress+plugins for example, or even go for some "marketplace" solution. Run a few orders manually, before building something complicated.

      1. 1

        This is quite pragmatic @sergey_shvets - In fact I had begun by searching for such thing (even in paid solutions where I can shell up to $$$) but couldn't had any luck with google. PHP isn't on my list so wordpress is out. So I ended up starting to learn the web dev :)

        I kinda feel this isn't the type of thing someone would open source, but would rather ship themselves.

        1. 3

          Is the service you're trying to provide part of what you code? If yes, can you do it manually for a couple of times? If your code isn't part of core proposition, then definitely find a solution to sell it without coding. Challenge yourself to that and you'll find it.

          Also, WordPress with plugins requires next to no php knowledge unless you want to write your own theme (for 80% of the cases you don't)

    2. 2

      So first off I only went with node/angular because you mentioned it. But really you should be picking what you are most comfortable with. I liked @alchemist's recommendation to use an MVC node framework. That should get you your monolith and frontend out of the box.

  5. 2

    Hey,

    First of all, you never told what are you building. Hard to give exact advice without knowing details. But here are the answers to your questions regardless of the app you build:

    1. You can get very far with node.js and angular. You definitely need to know more to build a robust/secure/scalable app (not other technologies, per se, but general development principles), but those aren't requirements to start. "Make it work, make it right, make it fast". Your knowledge should be enough for "make it work" part.

    2. I suggest you go serverless to not worry about devops. Plus for starts, it might be cheaper.

    3. Check out Zeit.hq (for serverless), Google App Engine or AWS Lambda. If you decide to go docker/container route, then check DigitalOcean as well. Their docs/tutorial are great and allow you to cover most of the basic devops tasks just following them. Recommend to read even if you don't use them.

    4. Not sure what you mean, but anything api-related you want to check Postman (https://www.getpostman.com/).

    Hope this helps,

    Sergey