Implement DNP3 servers that are instantiated dynamically, based on TLS connections to the DNP3 endpoint. This will allow the service to scale horizontally easily. When a DNP3 connection is established:
- Use the X.509 client certificate to authenticate and authorize the connection.
- The X.509 client certificate uniquely identifies the DNP3 Server Settings in a SolarNetwork account, and thus all of its associated data and control points.
- Dynamically instantiate a DNP3 instance based on the associated DNP3 Server Settings, populating all initial data points and control values. It might be useful to keep DNP3 instances "running" for some time even after the connection closes, with the assumption the client will likely connect again in the near future.
- Respond to datum stream updates for all associated data points/control values by pushing those changes into the DNP3 instance, so the connected client then sees those values.