Hello everyone, my name is Rémi Nicole, I'm this dude on the internet and I work for
the CEA which is the commissariat for atomic energy and alternative energy.
But the CEA is quite big so I should say technically that I'm CEA, DRF, IRFU, DISC
and all the way at the bottom.
What do we do?
Well, we do control systems for big physics experiments like particle accelerators.
And so what is a particle accelerator?
Basically, it's a bunch of hardware.
There is a plasma chamber that just exposes protons and then you need to give protons
some energy, you need to control them and you need to do some diagnostics.
For example, if you want to make the protons turn, you need to have an industrial power
supply and an electromagnet.
And so you need to control the power supply to control the strength of the magnet.
And so we use a framework which is called EPIX, DayLake acronym in this space.
So it means experimental physics and industrial control system.
And it's quite old software.
I'm showing you the old logo because it quite explains well what it does.
It's a single protocol which is represented by the line and some clients and servers.
So we have, for example, the input-output controller which does the control of the power
supply, for example.
And we also have some graphical clients, alarm system and some archiver.
And so what do we do when you're an EXPAN?
Well, you package it with NICS.
And so you can see the logo of NICS kind of eating the EPIX logo.
And I'm not going to talk too much about that because chances are you don't have a particular
accelerator at home, so you won't really need this project.
To be fair, someone did use EPIX to control a beer brewing system.
Yeah, beer people are weird.
And so what in terms of network?
So you need a network as isolated as possible so you don't exactly need to do this much
update.
And usually you don't want to update something.
If something works, you don't want to touch it because it takes a lot of money to restart
the accelerator.
And so what you need usually is a good resilience of the system.
You have a lot of assumptions to rethink.
And we could ask you, we could be asked to modify some software 10 years after it was
in production.
And so what I'm going to present is how we use NICS and EXPAN for this kind of resilience.
So first things is we use Flake for pinning projects, which is good because anyone can
just pick up the project back up and it should compile and work.
There are some exceptions that you have when you have such a large time scale.
For example, some software might not be available in 10 years.
Maybe GitHub went down because Microsoft or something.
And what we have as a solution is to do a lot of CI and use our own cache server extensively.
And by caching, I mean caching really everything.
So usually what you want to cache is the runtime dependencies, but what we want here is we
also want to cache every build time dependencies.
And so what we should have as a system is that even 10 years after it was deployed, we
could modify anything down the stack and we could pick any project back up.
We also need to cache fake inputs, which is a bit weird to do.
We also need to cache NICS itself because maybe in the future NICS won't evaluate, we
will have some deprecation and won't evaluate the old NICS code.
And so the system that we have, thank you Maurice for working on this, is that we have
a CI server, in our case it's a GitLab CI, which will build our derivation and we also
build a build time derivation, which depends on all the build dependencies of the software.
And then the CI we call a webhook in the cache server and the cache server will actually
pull all of those dependencies.
And why do we have a separate cache server is that with this system we can use profiles
because over time the cache server will fill up and so we need to figure out what old version
of the software we need to clean.
Yeah, I have a hopes that NICS can be used for building resilient systems.
And yeah, if you're curious, here's some links.
And if you want to build time derivation, there's an example code here.
Thank you.