On.System Architecture

System Architecture (and it’s subfield Software Architecture) is a discipline which is surprisingly poorly covered. In a sense, it is still more an art than a science, and usually requires somebody intimately familiar with practical systems, to tell what’s to do and what’s to avoid when building a system.

IT Hares have lots of experience in both Software Architecture and more general System Architecture, and are trying to share their knowledge (and more importantly, their feelings) about them.

Deterministic Components for Distributed Systems

August 22, 2016 by “No Bugs” Bunny

Schrödinger's Cat

Quote:

Then you can recover from any single server failure in a perfectly transparent manner

Another Quote:

after the program fails in production, we can get the input log and run it in the comfort of a developer’s machine, under a debugger, as many times as we want, and get exactly the same variables at exactly the same points as happened in production

Filed under: On.System ArchitectureDistributed systems(Re)ActorsOn.ProgrammingDebugging

Read more

Implementing Queues for Event-Driven Programs

June 13, 2016 by “No Bugs” Bunny

Multiple Writers Single Reader Queue

Quote:

full queues SHOULD NOT happen during normal operation

Another Quote:

With queues-implemented-over-mutexes like the ones we’ve written above, the most annoying thing performance-wise is that there is a chance that the OS’s scheduler can force the preemptive context switch right when the thread-being-preempted-is-owning-our-mutex.

Filed under: On.System Architecture(Re)ActorsBook: D&D of MOGs1st beta of Vol. IV-VIOn.ProgrammingTips and Tricks

Read more

Network Programming: Socket Peculiarities, Threads, and Testing

May 9, 2016 by “No Bugs” Bunny

Socket Peculiarities

Quote:

I am not saying that this architecture is the only viable one, but it does work for TCP for sure (and performs reasonably well too)

Another Quote:

The whole task of optimizing performance beyond, say, 20-50K packets/second per box tends to be Quite Elaborated, and involves quite a few things which are platform- and hardware-dependent.

Filed under: On.System ArchitectureDistributed systemsBook: D&D of MOGs1st beta of Vol. IV-VIOn.ProgrammingTips and TricksNetwork Programming

Read more

Avoiding Ugly Afterthoughts. Part a. From Writing for Cross-Platform, to Writing for Debugging and Production Post-Mortem, with Error Handling in between

March 28, 2016 by “No Bugs” Bunny

An Ugly Afterthought

Quote:

It is strongly recommended to have your build server to compile your game for at least two sufficiently-different platforms from the very beginning

Another Quote:

If allocation of 50 bytes causes an “out of memory” error, we’re probably already long dead because of unacceptable swapping. And even if we disabled swap file – chances that we will recover from this condition, are infinitesimally small

Filed under: On.System Architecture(Re)ActorsBook: D&D of MOGs1st beta of Vol. IV-VIOn.ProgrammingDebugging

Read more