LTS or stable Anvil Server?

Hi!

I had a topic several months ago to find out if Anvil is the right choice for my project. Many people helped and it was giving me the impression, Anvil is the right one.

While I was planning the app, I was constantly monitoring Anvil forums to see how bugs are poping up, being processed and fixed. I have to say, Anvil support is awesome! Unfortunately I found a blocking issue.

My app have to work 24/7 no matter what. It will be an essential part of several companies to keep track of their works. Many employee are on the way sometimes without internet, still the app must work and sync when connection is good. People in the office cannot stop working because the internet is off or because the Anvil server is down…

There is basically two things left for me to have a free go with Anvil.

  1. make it working even in offline mode.
    I find some docs about it using cache or simplified browser db, which would work for me. I did not tried, but looking at the doc, it solves my problem.

  2. I need an anvil server which is stable and did not change at all! This is critical!
    In the past few months, I’ve seen several cases, when something stopped working which was working before. Fixes was quick, usually within a day or two, but in my case 1 minute downtime is already a big issue. I cannot be active 24/7 if something goes wrong because a (silent) update by Anvil.

So in my case, without using an expensive plan and run my own anvil server (which kind of making the whole story of anvil useless to me at this point), I’m looking for a way to make sure Anvil did not change something in the background with an update. I have to control when to switch server or update / test my code.

In most cases, this is done using an LTS version, which has been updated ONLY for bugfixes or security updates. No changes in api, code, anything. Whatever worked before works the same way. Also, in case of any update, it must be tested well, to make sure it wont cause any issues in production.

Is there anything like that in Anvil? A stable server, which won’t change? I would only update my code when I want to go for a newer version of Anvil…

Thanks!

1 Like

You can run the open source version of Anvil on your own hosting (Vultr, Digial Ocean, AWS, etc). That allows you to pick the exact version of Anvil you want to run, and it won’t get updated unless you update it.

Do note that means you’re in charge of the virtual machine Anvil is running on, and in charge of configuring everything, keeping up with security updates, etc. It’s definitely not something to dive into without the relevant experience in operations. Even just getting the open source Anvil configured isn’t for the faint of heart.

The nice thing about Anvil is that you can easily port code from the hosted service to the open source version. So you can develop your proof of concept in the hosted service, and worry about the rest later.

2 Likes

I read that as you not wanting to run your own server. If I read that correctly then unfortunately the answer is no, you can’t run on the Anvil hosted runtime and guarantee they won’t update it in the background (ie there is no LTS option).

I don’t imagine it would be cost effective for them to do so, but you could add it as a feature request.

@jshaffstall’s suggestion of your own server is not as hard as all that to set up. There are plenty of instructions, and people on the forum will help where they can if you get stuck.

Also, I believe there is a docker container for it, and you can create a Digital Ocean droplet with docker preinstalled (Docker | DigitalOcean Marketplace 1-Click App) to make it even easier.

I know about the open source version, but it basically go against why to pick Anvil. If I have to deal with the server side from install to security update, I would stick to .Net core or other already known (by me) solutions.
I can see how good is Anvil to prototyping, but I don’t want to porting or refactor anything because it goes to production later.
Using the current server just not giving me the stability I’m looking for.

I have servers running already, so it is not about how to set up, but which solution would make more sense. Using .Net Core gives me more flexibility and in case of using the open source Anvil, it is kind of the same complexity to set it up and maintain. On the other hand, Anvil with python gives such a clean code that I cannot close my eyes on that part. Using the open source Anvil, I would lost the UI editor as well… so many yes and no in my case :stuck_out_tongue:

Anyway, thanks for the answers!

For what it’s worth, most of what I’ve seen people having trouble with, as far as changes and updates to Anvil goes, has been with the beta editor. The classic editor has been very solid in my experience (basically the Anvil incarnation of an ‘LTS’ version), and so it’s currently my only choice for production. When the Anvil team gets the beta editor stable, then you may consider using it. I think the biggest benefit of the beta editor is being able to install your own choice of libraries (or new versions of libraries) in your server account. If your needs are satisfied by default libraries installed with the classic editor environment, then you should be able to use it and have a much more reliable experience than you may have seen people discussing about the beta editor.

If I was in your position, and basically zero downtime was required, I’d consider using Anvil’s hosted service for development work, and run the open source server on AWS for production. That would give you all the productivity benefits that Anvil provides (which I think are nearly impossible to match with other tool chains), and the safety of controlling the production environment as you see fit. In my opinion, the trade off that comes from having to run your own server on AWS doesn’t deteriorate the productivity benefits of using Anvil, enough to make me want to use another tool chain all together. And the truth is: if you hope to control your environment enough to maintain zero downtime, you’re likely going to have to do at least as much work supporting any other tool chain and production build setup as you would supporting Anvil open source server - with none of the potential development productivity benefits that Anvil enables.

In my experience, the more complexity you add to your entire tool chain, the more likely you are to have problems of all sorts. Anvil’s purpose, and the reason it’s currently the most reasonable choice for me, comes from that fact that it dramatically reduces so much complexity in all phases of the development and deployment process. That not only makes the development routine a pleasure, and reduces development time, reduces costs, etc. - it also reduces the total number of potential problems that are encountered in every phase of development and production on any project. You’re going to run into problems with any development and deployment toolchain you choose. You’re going to have to put time, money, and work into maintaining the environments and tools you choose to build your product. Maintaining Anvil open source will take some more work than simply hosting on Anvil’s servers, but that’s a choice you can choose to make. There is a community of Anvil users relying on Anvil’s hosted plans for commercial clientele, and so far that service has been reliable for those users’ needs (I would expect their requirements are just as demanding as yours are). Perhaps that’s a better question to ask - has any of that community experienced a failure in the Anvil hosting environment that has led to significant disruption in business. I haven’t heard of that being the case yet (except from users who just don’t know how to use Anvil). You’re going to be relying on third party services in some way or another, unless you own and manage a data center and all your own infrastructure, in a way that’s more robust and stable than, for example, AWS, and have a team of engineers more capable than those in charge of maintaining Anvil. So far, my experience has been that’s not likely going to be the case, unless you’re managing a very large team and have a tremendous budget.

…just my few little cents to add to the pile of perspectives. Good luck!

2 Likes

So true… I am running business with “every scale” since over 25 years. Clients from automotive to gambling, Hollywood studios to gamers… experienced all level of errors. Complexity is what causing the most of the problem.

I can agree with you in all cases, the only problem, which I want to avoid is downtime or “not working feature” because an Anvil “invisible” update. I’ve seen this several times in the past few months. An update made existing websites functioning badly, depending on what feature were using. It was not downtime issue but a change broke a feature which was working before. It was fixed but some in 1-2 days later. That would be an issue in my case.

Btw, if I am getting it right, developing using an anvil plan, than moving the production to an open source anvil server would not add extra cost? Is there any dependency I should be aware of regarding anvil plans vs open-source server?

The only time I (me personally) have had a breaking change, was when I used a feature that I did not understand, and was not meant to be used the way I was using it.
Then it was ‘fixed’ which corrected the ability to use it ‘wrong’. (It wasn’t supposed to work but it did anyway and that was what was fixed.)

I’m not saying it does not happen, just that this is the only scenario that has happened to me after several years of using it in production.

Please let me know when you find a solution without 1 minute downtime :smiley:

We have been using Anvil for 5 years in my company. Our apps interact with uplink scripts to access local resources, with managed servers with ecommerce site, internal wiki, etc, with FedEx and UPS services, with Microsoft SharePoint, with Google maps, etc.

By far most of the down time we had in the past 5 years was due to problems with our internal network. Mostly the internet provider, but also problems with our DNS server, with the 3 VMs the uplinks run on, all kind of routine internal network problems. The very thing we have control over, is what failed us most. Then every single service, including the big guys, have had their fair share of down time. All of them, including Google and Microsoft. Way more than 1 minute.

To be fair, there have been periods where Anvil had more hiccups than desired. Once the email service stopped working, once they deprecated an old domain that I was still using for some http endpoints, and there were a few not-so-smooth upgrades. But also, they once contacted me to tell me that our dedicated server was bogged. I heard from them before I heard from my users. (It was my fault, I quickly fixed the bug and everything was back to normal).

In summary I have 10% of my code on uplinks relying on my own servers, 80% relying on Anvil, 10% relying on other services running on the big guys’ servers. My downtime is 70% on my side, 20% on Anvil and 10% on any of the other parts (the numbers are my feeling, I have no data to show)

A little downtime is inevitable. Not one of the services I use has been 100% reliable.

A little more downtime with Anvil is a price that I am very happy to pay, considering that it has always been growing pain.

I understand you don’t care about growth. You are looking for LTS, I guess you are at the “ain’t broken, don’t fix it” point already. But also the ecommerce and the wiki running on my managed servers should be at that point, and yet they have more downtime than Anvil. (I do have data to show).

2 Likes

without going too much deeper in this topic - again, here is a recent answer to one performance issue in the forum:

I’ve seen a question “too many times”, which is about any update might happened why an app does not work properly, (slow or don’t work some feature) with answers like this one:

“You might be tickling a feature that recently got updated? Anvil is an ever changing platform, which is both good and bad sometimes.”

exactly what I’m afraid of without having an LTS version

Anyway, I can see workarounds using open source anvil, but I’m really a “confused” with Anvil with the lack of LTS version. LTS is kind of mandatory for anything commercial use, or you need constant attention and work to keep something working, which was working before. More like prototyping stage rather than production.

internet downtime is not the real problem, that can be worked around with client side cache, db etc and it is a clear issue. You know what is going on when it happens. But when an app has issues which was not there before, and you can just guessing where to start to find the problem, is it an update or is it a hidden bug in your ode? That is a pain I really don’t like to get…

I think the answer you’re looking for has been provided. You can use Anvil App Server, hosted wherever you want, and there will be no changes to the platform beyond those you chose.

Companies like https://a2hosting.com/ offer unmanaged VPS hosting starting at $4.99 per month (I currently have Anvil apps running on a2hosting servers). It takes a few minutes to pip install anvil-app-server and copy the GIT repository for any project you’ve created in an account at anvil.works, and then it runs permanently with the same version of Anvil. It’s extremely simple, fast, and cheap to do (and you can do the same with any framework in any other language…). You don’t have to mess with docker containers, or cloud hosting expenses, and you can even create Anvil projects entirely in code using a text editor, without any involvement with anvil.works whatsoever - if you don’t want/need to use the nice IDE with autocomplete, visual UI builder, data table editor, etc., because your concerns are more heavily weighted towards controlling your environment and tooling. You can make that choice. Nothing is tying you to the anvil.works cloud services whatsoever. Or you can use all the convenience of the anvil.works hosted environment during development (use the classic editor to avoid changes and updates that are being made to the beta editor) then just copy the project GIT repository to your own anvil-app-server for production, and let it run is that untouched state forever.

For future readers, this isn’t quite true - that kind of personally managed change control is available as part of an Enterprise plan, where it is relied upon by some fairly big players :slight_smile:

1 Like

I stand corrected in general; I must remember there are people less tight than me out there :slight_smile: and answer more generally.

But in my slight defence the OP said this (my bold) :

which in my head ruled out an Enterprise plan.

1 Like

Setting up open source Anvil is kind of easy and I already have multiple virtual servers, actually I’m running my DB on one of those and uplink db connection works seamlessly with Anvil. So I can work in Anvil for development and use a virtual server with open source Anvil as production server.

I think I’ve got more than enough answers and options, with useful links and details. Thank you for everyone to help me to understand alternatives for LTS.