Comparison of GeoServer configuration deployment options
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 266 | |
Author | ||
License | CC Attribution 3.0 Germany: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/66364 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Computer configurationOpen sourceSoftwareData managementPlanningEnterprise architectureInformationSystem programmingComputer programmingService (economics)Open sourceIntegrated development environmentCommutatorServer (computing)Field (computer science)SoftwareComputer configurationOpen setComputer animation
00:46
Plug-in (computing)Parameter (computer programming)Internet service providerIntegrated development environmentBackupBoom (sailing)Internet service providerComputer configurationSoftware engineeringIntegrated development environmentCASE <Informatik>Point (geometry)Computer animation
01:36
Computer configurationDatenpfadServer (computing)Software architectureTrigonometryIntegrated development environmentComputer fileCache (computing)Library catalogExtension (kinesiology)Personal digital assistantPasswordPartial derivativeImplementationComputer fileWeb 2.0Integrated development environmentVisualization (computer graphics)Library catalogFile archiverComputer configurationServer (computing)Menu (computing)Extension (kinesiology)Flow separationConstraint (mathematics)System administratorPlug-in (computing)MathematicsNumberGeometryBackupView (database)Set (mathematics)Product (business)Software developerCASE <Informatik>Point (geometry)DatabaseInformation securityPoint cloudInterrupt <Informatik>Limit setData storage deviceFitness functionCache (computing)Category of beingInformationCartesian coordinate systemSoftware architectureRepresentational state transferAdditionVariable (mathematics)Direction (geometry)FrequencyCore dumpComputer animation
07:57
PasswordPartial derivativeImplementationExtension (kinesiology)Computer configurationModul <Datentyp>Library catalogMiniDiscPersonal digital assistantClient (computing)Computer filePoint cloudRoute of administrationSystem callPlug-in (computing)Scripting languageLibrary catalogComputer fileCASE <Informatik>PasswordRepresentational state transferPoint cloudComputer configurationIntegrated development environmentMiniDiscMathematicsAnalytic continuationFlow separationFile archiverPhysical systemGoodness of fitMultiplication signSpacetimeRange (statistics)Server (computing)Software developerSystem administratorFormal languageCodePartial derivativeSystem callClient (computing)Internet service providerSinc functionClassical physicsState of matterOperator (mathematics)Module (mathematics)AdditionFlagRevision controlGeometryStrategy gameScripting languageConfidence intervalTelecommunicationComputer animation
14:19
Computer configurationInternet service providerRepresentational state transferSet (mathematics)Computer configurationMixed realityLogicCartesian coordinate systemProjective planeComputer animation
14:54
Open sourceComputer configuration
Transcript: English(auto-generated)
00:08
Hello, everybody. Welcome. So, we are going to talk now about how you can manage the issue of deploying your GeoServer configuration to different environments. My name is Alexandre
00:23
Caquon and I am currently working for Gomp, which is an open-source IT service company based in France, Germany, Switzerland. We are quite active in the GIS field with committers to GeoServer, QGIS, open layers, and other software. So, we are going to see some...
00:53
I am working as an architect and software engineer come to come for GeoServer solution.
01:02
And with my work with my customer, one of the points I often met is how do you adapt and change the configuration based on the environment you are targeting. So, today I am going to present you the different options you have, including a
01:23
Terraform provider we have developed for the French firefighters. And also, in each case, we are going to see when you can use each option. So, first, what are we talking about?
01:41
When you deploy, for example, your GeoServer configuration from your development environment to your production environment, you have to define what is going to change in your configuration. So, generally, you have all the data store related information we are going to change
02:04
because you are targeting another database with another credential. Sometimes you also have the security option which is going to change. For example, if you are using OAuth, you perhaps have some configuration for developers and some configuration for UAT and production.
02:24
You also, if you use your web cache, perhaps you are going to hit another bucket for production and over stuff like that. Another point to take into account is also how your architecture is influencing how you are doing the deployment. Based on
02:45
which edition of GeoServer you are using, the classic one or the GeoServer Cloud edition, how if you use a web archive or Kubernetes, you are going to have influences on your deployment. And there is also the catalog. If you use GPC catalog or data folder, you will see you also
03:07
have a number of changes in your deployment. So, let's see what are our core options. The first one perhaps two of use, but you can use a GeoServer admin UI.
03:23
So, the idea is just you have the administration UI, you reduce the configuration manually on the target environment. It works if you have some customer, you have a small and simple configuration with a few layers. Perhaps it's good enough for this customer, but you have some constraint
03:48
indeed because you can do that only if you have extension with UI administration or some settings. You won't be able to scale if you have a lot of environments. So, for CI, CD, for
04:05
example, workflow is not going to work. Also, it won't fit for high frequency. But it also can be a solution if you don't have for some customer because of some customer policy,
04:21
you don't have access to the data folder directly. So, the second option, which is the most common one, I think, is to use the data folder as presented by Andorra before and adapt it to your target environment.
04:43
So, basically, the idea is to copy the data from your development environment, for example, to your production environment, and do the changes to match your new environment. It could also be a copy for example, some SCM solution like it, but at the end, it's kind
05:05
of copy. So, to do so, it's kind of repetition of what Andorra just said, you have to be prepared to have a configuration which fits with use case. So, first, it's generally best practice
05:22
for your server. So, you extract the data here for your deployment folder by using the choose-server-data-here variable. You remove the data out of this folder. So, you extract the log files, then your cache files if you are using your cache. And also,
05:42
I suggest that you use environment parameterization, which makes it easy to have only in one point all the changes for your environment. If you work like that, sorry, if you work like that, so when I use this solution, first, with the customer, which
06:15
allows some right access to the data here folder, it works well. It works with all the settings
06:22
and all the extension of your server. So, it's a good solution. It's only compatible with the file-based catalog. When you're doing updating for JDBC catalog, it's more difficult to update.
06:42
So, I will use it more for cases when we have several limited set of environment that will update after some changes. For example, we're having a property file for each of my environment, and not too much for CI-CD workflow, for example.
07:03
Since there is some reload of the configuration when you do changes, it works well with the application, which can have a small interruption during the reload of the configuration or a small catalog. And also, it's easier to use when you are ready to make full update of the
07:25
configuration when you do the update. So, we have seen the data here work. There is a small community plug-in, which is a backup restore plug-in,
07:41
which can be used to do the same thing, but with your server extension, which had some additional features like REST API to move the configuration from one server to another. It also allows for password replacement automatically, and also to do some partial
08:07
restore of the workspace or final space so you don't have to update your whole configuration at one time. So, when could you use this solution? First, you have to have a customer
08:23
which is okay to use community modules, which is not always the case. It works only with file-based catalogs because it's, in fact, putting the file into a compressor archive and moves the compressor archive so it's not working with the JDBC catalog. It's not
08:43
something which is not supported by your server cloud. It's a community module only for your classic. It's good for credential confidentiality because you can inject during the REST API your credential from all your secrets during the update. If you have some partial
09:08
updates when you want only to update only one workspace among several, it fits well in this case and also since there is a REST API, it's also a good candidate for when you have limited
09:21
access to the disk system of your environment. Let's continue. You can also work with the REST API of your server to do this deployment. So, the idea is that you have
09:41
some kind of configuration instruction and you use some scripts, some calls to your production environment to do configuration changes. There are several Python clients which are available,
10:01
geoserver-rest-config, geoserver-rest. Yesterday, I discovered geoserver-x. So, there are several clients if you are okay to work with Python. When it's fine to work with REST API, if you want to be agnostic of the catalog solution you
10:29
are using, it's a good candidate. It works with both geoserver-classic and geoserver-cloud. Since you are using the REST API, it works when you are limited or no access to this
10:41
unfolder. Since changes pushed by the REST API are directly taken into account by geoserver, it's also a good option when you want to limit an availability of geoserver and when you are doing some frequent updates or partial updates.
11:03
One of the things that is not to keep in mind when working with Python clients is generally they don't cover all the REST endpoints of your server, so you have to check that the client is okay for your use case.
11:27
Like I said in the introduction, we developed now for a year now for the French firefighter terraform provider to manage the definition of the geoserver configuration.
11:45
So, the idea is to use terraform built-in features to encapsulate and orchestrate calls to the REST API. So, for those who don't know terraform, it's originally an infrastructure as code tool language for which you are describing the state you want to have in your configuration
12:08
and terraform can compare to the state that you have deployed to define which operation you need to apply on your configuration to reach the state. So, it's determined
12:24
the dependencies between the resources. It also determines, it will check that to do only the required operation if the resource is already available. So, compared to the classical REST API solution, it takes in charge a lot of things that
12:47
in another case you will have to develop by hand. So, since it's based on the REST API, you can have the same use cases. If you are already working with Kubernetes,
13:04
it's a good candidate also with terraform to use it. We use it also with very frequent updates like CI CD workflow. Currently, for the French firefighters, we have one environment per
13:22
developer. So, we are maintaining about 40 to 50 development environments, each one with your server configuration maintained through the terraform configuration. And in addition, we're also maintaining 10 UI environment with the system line. So, to conclude,
13:48
we have seen a wide range of options when you come to deploy the configuration of your server
14:04
on two different environments, either through the admin UI or through working on the data here or even through the REST API. To my experience, there is no single solution.
14:21
So, you have to pick the best option or mix of option for your customer and for your project. Or because some settings you will manage in one way, the more you are close to the technical side of a setting, the more you will have to work with the data folder. The more you want the
14:43
application or business logic, the more you can use over tools like the REST API or the terraform provider. So, thank you for your attention.