service or monitoring clarification

A common question is whether a systemd service should be created or if an
application should just monitor for its systemd targets. This commits
goal is to offer some guidelines for this.

Change-Id: I45849e679443e9e25fe3cbfcc6f957ce5515894b
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/architecture/openbmc-systemd.md b/architecture/openbmc-systemd.md
index 48e33e3..722ec1c 100644
--- a/architecture/openbmc-systemd.md
+++ b/architecture/openbmc-systemd.md
@@ -95,6 +95,22 @@
 
 Underneath the covers, this is calling systemd with the server power on target.
 
+## Systemd Services or Monitoring Applications
+A common question when creating new OpenBMC applications which need to
+execute some logic in the context of systemd targets is whether they should
+be triggered by systemd services or by monitoring for the appropriate
+D-Bus signal indicating the start/stop of the target they are interested in.
+
+The basic guidelines for when to create a systemd service are the following:
+- If your application logic depends on other systemd based services then
+  make it a systemd service and utilize the Wants/After/Before service
+  capabilities.
+- If other applications depend on your application logic then it should be a
+  systemd service.
+- If your application failing during the target start could impact targets or
+  services that run after it, then it should be a systemd service. This ensures
+  dependent targets are not started if your application fails.
+
 ## Error Handling of Systemd
 With great numbers of targets and services, come great chances for failures.
 To make OpenBMC a robust and productive system, it needs to be sure to have an