]> pere.pagekite.me Git - homepage.git/commitdiff
First draft.
authorPetter Reinholdtsen <pere@hungry.com>
Mon, 11 Jul 2005 18:54:12 +0000 (18:54 +0000)
committerPetter Reinholdtsen <pere@hungry.com>
Mon, 11 Jul 2005 18:54:12 +0000 (18:54 +0000)
mypapers/enterprise-software/enterprise-software.html [new file with mode: 0644]

diff --git a/mypapers/enterprise-software/enterprise-software.html b/mypapers/enterprise-software/enterprise-software.html
new file mode 100644 (file)
index 0000000..53f1687
--- /dev/null
@@ -0,0 +1,207 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+  <head>
+    <link rel="stylesheet" href="../../mrtg-td/slides.css" type="text/css">
+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+    <meta name="Language" content="en">
+    <meta name="Author" content="Petter Reinholdtsen">
+  </head>
+  <body>
+
+    <h1>Writing enterprise ready software</h1>
+
+    <p></p>
+
+    <p><tt><a href="http://www.hungry.com/~pere/mypapers/enterprise-software/enterprise-software.html">http://www.hungry.com/~pere/mypapers/enterprise-software/enterprise-software.html</a></tt></p>
+
+    <div class="presenter">Petter Reinholdtsen
+      <br>pere@hungry.com
+      <br>Debconf5, Helsinki 2005-06-12</div>
+
+    <h2>Overview</h2>
+    <ul>
+
+     <li>we are in trouble
+     <li>clues for the clueless
+     <li>multilevel configuration
+
+   </ul>
+
+<h2>We are in trouble</h2>
+
+<p>With 60000 users and about 150 home directory file servers
+ available from 12000 machines, users move from file server to file
+ server.  This break several applications when the path to the users
+ home directory changes.  (example: /mn/hegel/u1/pere to
+ /usit/saruman/u1/pere).</p>
+
+<!-- 
+Moving a user from one user disk to another break mozilla and
+openoffice configuration.  - not using relative paths
+-->
+
+<h2>More trouble</h2>
+
+<p>With 900 linux machines with common user database and home
+directories while running different versions of programs, users will
+run several versions of a program with the same configuration
+files.</p>
+
+<!-- Trying to run with KDE 2 and 3 on different machines messes up
+the configuration - not handling downgrades
+
+- handle up/downgrades - people will use different versions on
+different machines, with common home directories
+
+ -->
+
+<h2>Some old trouble</h2>
+
+
+<p>Some users lost the source of their production systems, and need
+the binaries to keep working for 10-15 years.</p>
+
+<!-- 15 year old binaries should keep working.  The source is lost
+long time ago, and the program is still used in production. -->
+
+<h2>No room for more trouble</h2>
+
+<p>When the file system for the PostgreSQL database in production goes
+full, one do not want to kick out 30000 users to take down the
+database and resize the file system.</p>
+
+<h2>Disktrouble</h2>
+
+<p>RAID is only only useful until the last redundancy disk is lost.
+
+<p>Automatic RAID status systems need API or command line tools to
+extract the status.  Not like afacli, which go into interactive mode
+when an error is detected.
+
+<h2>Installation trouble</h2>
+
+<p>Trying to compile/install software on Irix, Solaris, Linux, HP-UX,
+Tru64 Unix, MacOSX and AIX when the process require a sysadmin to sit
+around to answer questions, change CDs, or insert licenses is both
+painful and prone to errors.</p>
+
+<h2>Network trouble</h2>
+
+<p>Trying to get some network server to work when it require to use
+some given port range, which is already taken by some other service
+and blocked in the router -- or try to get the coorporate network
+gatekeeper to open up the firewall</p>
+
+<h2>Version trouble</h2>
+
+<p>Given three tcl or php applications, is there one version of TCL or
+PHP usable with all of these?
+
+<h2>Usability trouble</h2>
+
+<p>When starting a program from the meny, where does it go if nothing
+appear on the screen?
+
+<p>Do users always read their ~/.xsession-error file?
+
+
+Providing hooks to the local admins
+
+backdoor - alternative way in.  fixing 800 machines by hand is not
+possible. - ssh config fuckup
+
+reduce flexibility.  trying to support people over the phone when the
+gui is different for every person is a pain.
+
+
+<h2>Clues for the clueless</h2>
+
+<ul>
+
+<li>at least three levels of config files; package defaults, site
+  defaults and host defaults
+
+<li>never ask questions at compile time.  when compiling automatically
+  for 10 platforms, a sysadmin do not want to sit down and answer
+  questions.
+
+<li>split installation tasks in two, one for installation, and one for
+  the operations needing root access. (build / configuration as well)
+
+<li>make sure the software can be installed anywhere (location
+  independent), avoid hardcoding paths into the binaries.
+
+<li>make the source available to make it possible to fix problems on
+  site, and to use it on different platforms (os/hw) in the future
+
+<li>Make paths into users home directories relative to ~user/, as users
+  will move from disk to disk, or copy their home directory from site
+  to site.  Always convert paths when saving config files.
+
+<li>depend on as few libraries as possible, as it is a pain to get every
+  extra library in place
+
+<li>use well known libraries instead of making your own implementation.
+  reduses the security risk.
+
+<li>make sure libraries, and programming languages are backwards
+  compatible.
+
+<li>use a well known license.  it is a pain to evaluate every new
+  license
+
+<li>when distributing source, do not use vendor specific compiler
+  features.  It will not work with the other vendors compilers used to
+  compile on site.
+
+<li>write portable code, make sure it works the same on all platforms.
+
+<li>make the software work out of the box (require as little
+  configuration as possible).
+
+<li>avoid resource leaks (memory, shared memory, locks, file
+  descriptors, X server resources, etc).  Restarting a long-running
+  server is not always an option.
+
+<li>system services should send messages to syslog.  always log why when
+  crashing.  always log problems and errors.
+
+<li>reuse configuration.  ktouch have its own x layout setting.
+  better to fetch the current one from X like xkeycaps.
+
+</ul>
+
+    <h2>Solving the upgrade problem using multilevel
+      configuration</h2>
+
+    <ul>
+
+      <li>local configuration should be kept during upgrades</li>
+
+      <li>easiest to do if the local configration is separate from the
+        package default
+
+      <li>several actors what to have a say in the service
+         configuration.  allow them to have their own files
+
+      <li>Example: read config from /usr/share/foo/config,
+         /site/share/foo/config, /etc/foo/config, ~/.foo/config,
+         /etc/foo/config.fixed, /site/share/foo/config.fixed,
+         /usr/share/foo/config.fixed.
+
+      <li>make it possible to provide package, site, host and user
+        defaults, as well as locking down features on a host, site and
+        package level.
+
+      <li>always well known where the admin made his changes
+
+    </ul>
+
+
+
+    <h2>Thank you very much</h2>
+
+    <h3>Questions?</h3>
+
+  </body>
+</html>