Hacker News new | ask | show | jobs
by beginrescueend 3984 days ago
It depends on what you mean, what your goals are, what you are trying to build, etc.

"No maintenance whatsoever?" I doubt it. Things break, get old, go obsolete, are insecure, and wear out.

Perhaps, you should worry about "nines of uptime" or "fixed requirements" or something along those lines.

Simplicity is first. The more complex, the more maintenance. "Everything Should Be Made as Simple as Possible, But Not Simpler" - http://quoteinvestigator.com/2011/05/13/einstein-simple/

"No moving parts."

Make it highly available and redundant. Power, cooling, networking, hardware, and software redundancies are needed.

Make it immutable. Change and mutable state will create maintenance. Implement functional programming, if you write software.

Monitor it and make it self-restart. Somebody already mentioned watchdogs, for hardware.

Make it ultra secure. No outside networking?

Program finite state machines....

If you imply a "hardware and software" solution, these points sound like you need redundant hardware and Erlang/OTP. Take a peek at OTP and the Erlang-based languages (Erlang, Elixir, Joxa, and LFE).

At least with redundant power, cooling, hardware, and Erlang/OTP (Elixir/OTP, etc.,) you gain the ability to do all of these things.

With Erlang/OTP, you can achieve very high uptimes, and if you design it correctly, you do have the ability to hot-patch running code, if you do have to (rarely) perform maintenance.

While you're at it, you also get distributed programming, concurrency, and parallelism, for free, with Erlang/OTP. This, in and of itself, can "reduce maintenance."

See https://pragprog.com/articles/erlang and http://stackoverflow.com/questions/8426897/erlangs-99-999999...