# Ignition architecture question DEV to PROD

**URL:** <https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182>\
**Category:** Ignition\
**Created:** [February 22, 2023, 7:14pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182 "2023-02-22T19:14:10Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![rahman.tarek](https://avatars.discourse-cdn.com/v4/letter/r/b77776/32.png) [@rahman.tarek](https://forum.inductiveautomation.com/u/rahman.tarek)\
**Post date:** [February 22, 2023, 7:14pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/1 "2023-02-22T19:14:10Z")

</div>

Hello i currently have an Ignition DEV instance and SQL Server DEV instance. At the same time i have an Ignition PROD instance and a SQL Server PROD instance. (4 VMS in total)  
The goal was to do all development in the DEV instance and do periodic gateway backup restores for the PROD version. I was just wondering if this is the right way to go about things or is there a way to push updates directly from the DEV instance to the PROD instance?

---

<div class="post-metadata">

**Author:** ![franklepkowski](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/franklepkowski/32/4808_2.png) [@franklepkowski](https://forum.inductiveautomation.com/u/franklepkowski)\
**Post date:** [February 22, 2023, 7:20pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/2 "2023-02-22T19:20:34Z")

</div>

Hello,

To do this right, you will want to layout and follow a DEVOPS process. Ignition itself I have found does not lend it self particularly well to DEVOPS, but following a rigid process is the key. There are a lot of tools out there to assist in all Phases of the DEVOPS lifecycle.

Frank

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 22, 2023, 7:37pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/3 "2023-02-22T19:37:22Z")

</div>

If you make your dev environment identical to the production environment, right down to DNS names (or IP addresses), then restoring a dev backup into a production gateway is possible. But pretty hard on production while the gateway restarts.

Consider using EAM to move resources around.

You could use git pushes and checkouts to move many types of resources, but certain items are only configured in the gateway's internal database at this time (tags, in particular).

Many of us are looking forward to v8.3.....

---

<div class="post-metadata">

**Author:** ![rahman.tarek](https://avatars.discourse-cdn.com/v4/letter/r/b77776/32.png) [@rahman.tarek](https://forum.inductiveautomation.com/u/rahman.tarek)\
**Post date:** [February 22, 2023, 7:50pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/4 "2023-02-22T19:50:12Z")

</div>

if i had EAM installed on the DEV server would i be able to push updates into the PROD server?

Will ignition 8.3 make this easier?

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [February 22, 2023, 8:25pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/5 "2023-02-22T20:25:51Z")

</div>

I need to check into the EAM module as well. I currently mirror my Dev and Pro environments except for the database connections. I have a gateway startup script that adjusts the data source connections based on the gateway name. I'm sure Phil will have a reason for this to be a bad idea though 😅

~~

```auto
host = system.tag.readBlocking(["[System]Gateway/SystemName"])[0].value

if 'dev' in host.lower():
	dbHost = 'something'
else:
	dbHost = 'somethingElse'	

sources = ["connection1","connection2"]
path = "jdbc:mysql://{:s}:3306/{:s}"

for source in sources:
	system.db.setDatasourceConnectURL(source, path.format(dbHost,source))

```

~~

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 22, 2023, 8:28pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/6 "2023-02-22T20:28:26Z")

</div>

> [@dkhayes117](#):
>
> I'm sure Phil will have a reason for this to be a bad idea though

Any typo or side effect that prevents that from running, or running immediately, will cause a production backup loaded into DEV to write to your production database in parallel with production. Could be something as simple as that project being disabled in production when the backup is taken.

I would not take that chance.

I recommend using a DNS name in the connection URL that resolves to the correct DB for the environment.

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [February 22, 2023, 8:33pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/7 "2023-02-22T20:33:45Z")

</div>

The other annoyance I've run into when doing this, is report scheduling. If you have any reports that use the scheduling functionality you will get double reports unless you open each one and disable the schedule.

I moved all my report scheduling to scheduled gateway scripts in a separate project so if I do export/import from Pro to Dev, I just disable the report scheduling project.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 22, 2023, 8:34pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/8 "2023-02-22T20:34:35Z")

</div>

FWIW, I recommend making your dev environment identical to your production environment as far as DNS names or IP addresses are concerned, regardless what method you use to move updates in the dev =\> prod direction. It reduces the chances that a forgotten incorrect setting anywhere in the system ends up in production.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 22, 2023, 8:36pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/9 "2023-02-22T20:36:25Z")

</div>

Have a separate mail server in DEV impersonate the PROD mail server (with same DNS name) and blackhole any unwanted messages. You could also use `msmtpd` or similar mail forwarders installed in the gateway servers and have all email configurations in Ignition go through localhost. The forwarder in DEV would handle everything differently.

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [February 22, 2023, 9:13pm UTC](https://forum.inductiveautomation.com/t/ignition-architecture-question-dev-to-prod/70182/10 "2023-02-22T21:13:36Z")

</div>

> [@pturmel](#):
>
> I recommend using a DNS name in the connection URL that resolves to the correct DB for the environment.

That makes a lot of sense 🙂 Our Ignition gateways are hosted on Windows Server 2019. For anyone else that finds this thread, You can add a local DNS name in the `C:\Windows\System32\drivers\etc\hosts` file and use that name in Ignition's DB configuration. Do this on both production and development servers with the correct associated IP for easier gateway exports/imports. Thanks, Phil.

```auto
<db_ip_address_here> my_db_dns_name

```
