DevOps and Xojo - and XDC Conference Session

Hey there!

I am developing a topic for the next XDC and I wanted to get your feedback.
The central focus will be DevOps for Xojo web applications but there are several tracks I can go down and I want to gauge interest from the community to create something that provides as much value as possible…

Last time I covered load balancing with HAproxy and also launch configuration using systemd, for reference.

So - Let me know your relative interest in the following sub-topics (maybe provide your top 2 or 3 favorites):

I could go into greater depth regarding load balancing:

  • Custom routing of requests
  • Implementing sub domains and multiple applications
  • Apache and xojo side-by-side for static content
  • SSL configuration and fine tuning
  • I could cover managing services with systemd in more detail

I could cover some completely new topics such as:

  • Using cron to automate tasks or execute xojo console apps on a schedule

  • Managing your application logs with rsyslog and logrotate

  • Streamlining deployment with build automation and rsync

  • Debugging remotely over the internet

  • Deploying on AWS

  • Do you have any DevOps issues/suggestions?

Thanks in advance for your interest.
John

[quote=349101:@John Joyce]

  • SSL configuration and fine tuning
  • Streamlining deployment with build automation and rsync
  • Debugging remotely over the internet[/quote]

are three topics that are hot on my list right now. And I will have them worked out over the next few months. Not saying I wouldn’t mind more (better?) information on the subject.

thanks!

[quote=349102:@scott boss]are three topics that are hot on my list right now. And I will have them worked out over the next few months. Not saying I wouldn’t mind more (better?) information on the subject.

thanks![/quote]

Thanks for your input.
If you have any specific questions in the meanwhile please feel free to hit me up.

[quote=349104:@John Joyce]Thanks for your input.
If you have any specific questions in the meanwhile please feel free to hit me up.[/quote]

will do. I am working with a new startup and I am looking at using Xojo as the (REST) API server(s).

thanks!
sb

I know there is someone else out there with an opinion…

yeah many of us do have opinions and like to share them.

Well, load balancing and deployment best practice is welcome. All the points look interesting.
Apache for static content is used here to reduce load for Xojo web app.
You may include running several instances on the same server to better use multi core CPUs.
Looking forward to your presentation.

If you like to make another presentation, you can join my conferences in Europe (London 2017 and Munich 2018).

The kinds of Xojo WebApp DevOps talk titles that I would attend or buy the video for, probably can’t make XDC 2018, calendar clashes :frowning:

  • Rolling WebApp upgrades without downtime – Should include strategies in code/architecture for handling disparate code versions during roll-out too.
  • Scaling WebApps – Using console processes for responsiveness, using multiple instances on a server, and finally multiple servers.
  • Docker all the things! – Basics for running WebApps in containers and their benefits (see previous two talk suggestions).

Well, I’d ask @David Cox for such topics. I think he has experience on Web Apps.

@Ian Jones I have been wondering if many are adopting Dockerized deployment but I have only heard little things here and there.
Thanks for chiming in!

@Christian Schmitz I want to be careful not to just do the same session as the last XDC - But I might drill into one of these for more details if it seems like it is important to people. I would love to come to one of your European conferences sometime. Thanks for the invite. Don’t think it is going to happen soon though.

J

Well, you can always take a few slides from last year as a little introduction and refer to old presentation.
Than dig into something new or deeper in a specific subtopic.

I’ll try!

I place two zipped apps for the new version on a web server — one is the new app version and the other is the Updater app. The old WebApp downloads these two apps, unzips them, runs the Updater then quits. The Updater archives the old version, installs the new version, launches the new version then quits itself. The new version cleans up any mess left by the Updater, including the Updater itself.

I have a number of Console apps that are included with the WebApp. They run jobs as an array of threads. The WebApp talks to them (gives them instructions and gets back results) via a shared SQLite multi-user database.

I used to do this (showing one WebApp in an HTMLViewer of another WebApp), but found the browser often restricted this or the user could right-click in the iFrame. Now I try to output HTML to a file then pass this to an HTMLViewer. It is fast, flexible, I can save the HTML in a database, email the HTML or export HTML to PDF.

@David Cox These are great tips and I may include something like this.

Do you have any other ideas for topics you think would be of interest for an XDC session about Xojo DevOps that I am working on?
(see original post for context)

Thanks!
J

[quote=349545:@John Joyce] I have been wondering if many are adopting Dockerized deployment but I have only heard little things here and there.
Thanks for chiming in![/quote]

I have several clients running Docker. Either for their Dev/QA environment or for all environments.

I place two zipped apps for the new version on a web server — one is the new app version and the other is the Updater app. The old WebApp downloads these two apps, unzips them, runs the Updater then quits. The Updater archives the old version, installs the new version, launches the new version then quits itself. The new version cleans up any mess left by the Updater, including the Updater itself.[/quote]
At the moment my roll-out strategy isn’t quite as automated as yours. Each version is uploaded to the server in a version (build number) specific folder alongside the previous ones, and then I remove and recreate a symlink that was pointing at the old version to point to the new version. Then if it’s a CGI deploy I might restart Apache so that it picks up the new version, or just let it naturally switch to the new version as processes die and restart. For stand-alone I just kill the old version and start the new one.

What always worries me is making sure that things like the database schema roll forward in such a way that it is still usable by the old version while the roll-out is in process.

Maybe one strategy is to feature-flag in the new version and not do (in-app) schema updates until all instances are running the new version and I just flick a switch in the database.

Maybe I worry about these kinds of things too much though.

I have a number of Console apps that are included with the WebApp. They run jobs as an array of threads. The WebApp talks to them (gives them instructions and gets back results) via a shared SQLite multi-user database.[/quote]
Smart, like the idea of using SQLite as a lightweight messaging system for local processes.

I used to do this (showing one WebApp in an HTMLViewer of another WebApp), but found the browser often restricted this or the user could right-click in the iFrame. Now I try to output HTML to a file then pass this to an HTMLViewer. It is fast, flexible, I can save the HTML in a database, email the HTML or export HTML to PDF.[/quote]
Sorry for the confusion David, but I was talking about a different type of container, Docker containers.