Zero downtime, docker and a broken upgrade script.


  • Anime Lovers

    Foreword

    Ok, before I start, many of this may probably also could have made it into a github issue. But actually this is more intended to have a dialog that may some read here that wouldn't do on github.

    So lets start on this topic:
    While NodeBB has really evolved in the last year, I have seen really positive development though, I nevertheless stopped using it.

    My Reasons to stop using NodeBB

    The reasons for this are quite simple, handling upgrades and scaling NodeBB was not yet stable. I can't say if it is now, but I suspect it is not.
    So why do I suspect that?
    Well simply, I have tested it now for a few weeks again and after the first patch has been released, it was the 0.9.1 patch and I tested today again with the 0.9.3 patch, it ran quite straightforward right into the wall.
    Something is broken right now, to be exact: It is the upgrade script. It seems to do something clever, it deletes a dependency it needs next to migrate the schema and throws this error
    21/12 20:30 [13976] - error: Unable to initialize Redis! Is Redis installed? Error :Cannot find module 'connect-redis'

    Well while this is easy to fix, this is the first example, why I still think NodeBB is not yet ready for a real world production environment.

    Zero downtime and docker

    The next points are docker and zero downtime deployments. Zero downtime deployments are only possible, if the Software allows to really zero downtime deploy it. That means that data store or database migrations are zero downtime safe, e.g. they do not delete anything the Software needed before the upgrade, but possibly when the whole upgrade is done. And who screams zero downtime deployments needs also to scream even louder zero downtime rollbacks. The same rules, just for the other direction.

    What really helps while scaling and deploying is docker, thus it is questionable: Will there be a maintained dockerfile? Will there be maintained heroku build scripts? Or even maintained builds in the docker registry? I know that for the latter one there have been docker container, but it seems like they have been shut down again.

    So here are the final questions, where is NodeBB going and can we expect the upgrade process to be more reliable than it is yet? Reliable in terms of automatization?
    And also what are your thoughts about this, zero downtime, docker and the future of NodeBB in general?

    I'm eager to listen to your minds..



  • @wzrdtales I do not really agree with you.

    For me NodeBB upgrades run very smooth, especially since 0.9.x (there have been flaws in the 0.7.x-0.8.x branches).

    For me NodeBB never crashed, just out of nowhere (John Cenna ). It runs and runs and runs, so maybe the error is on your end.

    I run NodeBB with over 1200 concurrent connections on the server end, 50k visitors a day and have stored over 6k users and 32k posts. For me this is proof enough that NodeBB is ready for productive use.


  • Anime Lovers

    @AOKP said:

    @wzrdtales I do not really agree with you.

    For me NodeBB upgrades run very smooth, especially since 0.9.x (there have been flaws in the 0.7.x-0.8.x branches).

    For me NodeBB never crashed, just out of nowhere (John Cenna ). It runs and runs and runs, so maybe the error is on your end.

    I run NodeBB with over 1200 concurrent connections on the server end, 50k visitors a day and have stored over 6k users and 32k posts. For me this is proof enough that NodeBB is ready for productive use.

    This might be, may be the upgrade script is just incompatible to npm 3.3 or node 5.1. And its completely ok that you do not agree with me, I'm open to other minds, but nevertheless the concerns are still the same for me. This has nothing to do with that your named numbers are still quite small, but that scaling dynamically and on demand and of course zero downtime deployment are something important to me.


  • Community Rep

    If you're running node 5.1, you can't bash some software for not running on it! :D

    Node 5.1 (the whole 5.x branch actually) is on a faster-paced development cycle, where API's and featured are changed much more rapidly that in the 4.x.x branch (which is the long term support branch)

    Read up here for an explanation on the release types: https://nodejs.org/en/blog/community/node-v5/

    @AOKP What version of node are you running?



  • @BDHarrington7 I use 5.3.0.

    @wzrdtales, excuse me if I do not understand, but what do you declare under 0 downtime? My forum has been up all the time, except then performing upgrades to Redis or the software itself.

    PHP forums do not differ at any point from that (if you upgrade, users cannot use the site either).


  • Admin

    We are not compatible with npm 3.3 yet at least programatically. https://github.com/NodeBB/NodeBB/issues/3780

    We will try to figure it out before 1.0.0. We haven't tested on 5.x either.


  • Anime Lovers

    @BDHarrington7 I know about the LTS and non LTS version :) And this is more likely to be an issue with npm than node

    @baris Cool, I also suspect this is more related to npm than node in this case. Node 5 works fine as soon as the manual reinstallation is done.

    @AOKP No problem, zero downtime deployments actually mean that there is no downtime for actually upgrading the application. And also I never compared with PHP, as this is true for every application completely unrelated to its language. Zero Downtime is about how one handles upgrades in a completely automatizeable fashion, that is safe even if one node upgrades earlier than another does.
    Zero downtime has nothing todo with an application that crashes or not, that is what you would call if an application is stable or not.


  • Community Rep

    @wzrdtales cool, just making sure since people just get the latest (automatically) and I've seen it (5.x) cause problems for one of my projects at work :)



  • @baris I use npm 3.3.12 without any issues.




Looks like your connection to NodeBB was lost, please wait while we try to reconnect.