From e7dca958c49962c6a8b0cf3cc20c5bc326e30e39 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Thu, 19 Sep 2019 11:18:07 +0200 Subject: [PATCH] arch-guide: rework recommendations for managers and architects --- docu/mars-architecture-guide.lyx | 333 +++++++++++++++++++++++++++---- 1 file changed, 292 insertions(+), 41 deletions(-) diff --git a/docu/mars-architecture-guide.lyx b/docu/mars-architecture-guide.lyx index ee69cfca..748f82a1 100644 --- a/docu/mars-architecture-guide.lyx +++ b/docu/mars-architecture-guide.lyx @@ -15946,17 +15946,36 @@ Practical observation from many groups in many companies: which storage \emph on really \emph default - failure resistent and reliable, and how much they are + +\series bold +failure resistent +\series default + and +\series bold +reliable +\series default +, and how much they are \emph on really \emph default - scalable for their workload, and what is their TCO (Total Cost of Ownership), - does often + +\series bold +scalable +\series default + for their workload, and what is their +\series bold +TCO = Total Cost of Ownership +\series default +, does often \emph on not \emph default - depend on real knowledge and facts. - It often depends on + depend on real knowledge and on facts. + It often depends +\series bold +randomly +\series default + on \series bold personal habits \series default @@ -15979,8 +15998,22 @@ This can be seen in a bigger company (e.g. \end_inset . - In essence, this results in a gambling game how safe / cost-effective etc - your critical data +\end_layout + +\begin_layout Standard +\noindent +\begin_inset Graphics + filename images/MatieresCorrosives.png + lyxscale 50 + scale 17 + +\end_inset + + In essence, this results in a +\series bold +gambling game +\series default + how safe / cost-effective etc your critical data \emph on really \emph default @@ -15988,9 +16021,94 @@ really \end_layout \begin_layout Standard -As just explained in the previous section, there are so many pitfalls, and - there are only a few people who know them, because more people are working - in small-scale systems than in large-scale enterprise ones. +\noindent +\begin_inset Graphics + filename images/lightbulb_brightlit_benj_.png + lyxscale 12 + scale 7 + +\end_inset + + In particular after company mergers, suchalike varieties need not remain + a permanent disadvantage. + You may turn it into an advantage. + Once you have enough reliable and validated KPIs about each of the systems, + and after you have checked that they are +\emph on +really +\emph default + comparable, you can derive a detailed comparison of competing architectures + and/or of their actual implementations. + Then you may start +\series bold +merging +\series default + some of the technical platforms, provided there is a business case for + it. + Or, you may +\series bold +bleed out +\series default + some old / obsolete technology. +\end_layout + +\begin_layout Standard +When the game is about building up +\series bold +new functionality +\series default + from scratch, it is much different. + There are two main possibilities: +\end_layout + +\begin_layout Enumerate +check whether your +\emph on +best +\emph default + platform can be extended with the new functionality. + Good architectures are also +\series bold +easily extensible +\series default +. +\end_layout + +\begin_layout Enumerate +build a new platform. +\end_layout + +\begin_layout Standard +The rest of this section focusses on architecture of new platforms. + Always check whether existing +\emph on +experience +\emph default + can be re-used. +\end_layout + +\begin_layout Standard +\noindent +\begin_inset Graphics + filename images/MatieresCorrosives.png + lyxscale 50 + scale 17 + +\end_inset + + As explained throughout section +\begin_inset CommandInset ref +LatexCommand nameref +reference "sec:Scalability-Arguments-from" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +, there are many pitfalls, and there are only few people who know them, + because more people are working in small-scale systems than in large-scale + enterprise ones. There are so many lots of people at the market who \emph on claim @@ -16020,9 +16138,9 @@ false proofs \begin_inset Quotes erd \end_inset - about scalability, derived from different usecases (or in extreme cases - even from workstations workloads), or the failed scalability scenario in - section + about scalability, derived from different use cases (or even from workstation + workloads). + See the failed scalability scenario in section \begin_inset CommandInset ref LatexCommand vref reference "subsec:Example-Failures-of" @@ -16091,12 +16209,16 @@ scale very well \emph on assumptions \emph default - instead of knowledge (and almost never based on + instead of knowledge (and rarely based on \emph on measurements \emph default at the right measurement points for deriving substantial knowledge about - your real application behaviour). + your +\emph on +real +\emph default + application behaviour). Literally \emph on anyone @@ -16180,12 +16302,12 @@ Therefore, chances are better to get a real expert when he has some (higher) \end_inset -Real experts will tell you when they don't know something. + Real experts will tell you when they don't know something. In addition, they will tell you \emph on multiple \emph default - ways for abtaining such information, such as measurements, simulation, + ways for obtaining such information, such as measurements, simulation, etc. \end_layout @@ -16220,7 +16342,8 @@ I know of cases which have produced unnecessary \emph on direct \emph default - cost of at least € 20 millions. + cost of at least € 20 millions, not counting further indirect costs such + as power and rackspace consumption. \end_layout \end_inset @@ -16234,16 +16357,21 @@ The problem is that it \emph on looks so easy \emph default -, as if everyone could build a larger storage system, with ease. - For example, just +, as if everyone could build a +\emph on +large(!) +\emph default + storage and/or application system, with ease. + It looks easy once a small prototype is running at a workstation. + Some people believe that \begin_inset Quotes eld \end_inset -spend some more money +just spend some more money \begin_inset Quotes erd \end_inset -, that's all you would need. + would all which is needed. Unfortunately, both \begin_inset Quotes eld \end_inset @@ -16272,7 +16400,7 @@ architecture (see definition in section \begin_inset CommandInset ref -LatexCommand vref +LatexCommand nameref reference "sec:What-is-Architecture" plural "false" caps "false" @@ -16313,13 +16441,24 @@ ion. \begin_inset Quotes eld \end_inset +favourite solution +\begin_inset Quotes erd +\end_inset + + or their random +\begin_inset Quotes eld +\end_inset + favourite product \begin_inset Quotes erd \end_inset . - For a responsible, this increases the risk of getting a non-optimum or - even bad / dangerous solutions. + For you as a responsible, this increases the +\series bold +risk +\series default + of getting a non-optimum, or possibly even a bad / dangerous solution. \end_layout \begin_layout Standard @@ -16344,9 +16483,16 @@ For each 1 or 2 orders of magnitude of the \series bold size \series default - of your data, you need better methods for safe construction and operation. - At least for each 3 to 4 orders of magnitude (sometimes even for less), - you need + of your data, you will need +\series bold +better methods +\series default + for safe construction and operation, as would be sufficient for lower demands. +\end_layout + +\begin_layout Itemize +For each 3 to 4 orders of magnitude (sometimes even for less), you will + need \series bold better architectures \series default @@ -16366,8 +16512,37 @@ losses not just better components. \end_layout +\begin_layout Standard +\noindent +\begin_inset Graphics + filename images/lightbulb_brightlit_benj_.png + lyxscale 12 + scale 7 + +\end_inset + + General advice: if you start a new platform from scratch, always +\series bold +start with a +\emph on +good +\emph default + architecture +\series default +. + Once a platform is in production, even with a small number of customers, + it becomes increasingly difficult to change its fundamental architecture. + While bugs can be relatively easily fixed, and while single components + can be exchanged with some effort, changing an architecture may turn out + +\emph on +close to impossible +\emph default +, or at least very expensive. +\end_layout + \begin_layout Subsection -Recommendations for Architects and Sysadmins +Recommendations for Architects \begin_inset CommandInset label LatexCommand label name "subsec:Recommendations-for-Architects" @@ -16408,6 +16583,17 @@ fork bomb \end_inset best and the most expensive hardware +\begin_inset Foot +status open + +\begin_layout Plain Layout +There is an old joke from the 1980s: a Cray is a computer capable of running + an endless loop in 10 seconds. +\end_layout + +\end_inset + + \begin_inset Quotes erd \end_inset @@ -16454,7 +16640,25 @@ network queues \end_layout \begin_layout Itemize -Real-life example: some percentage of +If you think this cannot hurt you, because you are working in a completely + different area from Apache: +\emph on +any +\emph default + type of IP-based network traffic can show queueing behaviour. + Complex queuing systems can show +\begin_inset Quotes eld +\end_inset + +unexpected +\begin_inset Quotes erd +\end_inset + + behaviour, and sometimes even a dangerous one. +\end_layout + +\begin_layout Itemize +Real-life example for application-level problems: some percentage of \family typewriter WordPress \family default @@ -16578,15 +16782,21 @@ overall An impressive example for architectural (cf section \begin_inset CommandInset ref -LatexCommand ref +LatexCommand nameref reference "sec:What-is-Architecture" +plural "false" +caps "false" +noprefix "false" \end_inset ) ill-design can be found in section \begin_inset CommandInset ref -LatexCommand ref +LatexCommand nameref reference "subsec:Example-Failures-of" +plural "false" +caps "false" +noprefix "false" \end_inset @@ -16600,8 +16810,11 @@ reference "subsec:Properties-Scalability" , in particular subsection \begin_inset CommandInset ref -LatexCommand vref +LatexCommand nameref reference "subsec:Influence-Factors-Scalability" +plural "false" +caps "false" +noprefix "false" \end_inset @@ -16615,8 +16828,11 @@ reference "subsec:Filesystem-Layer-vs" . A strategic example is in subsection \begin_inset CommandInset ref -LatexCommand ref +LatexCommand nameref reference "subsec:Example-Scalability-Scenario" +plural "false" +caps "false" +noprefix "false" \end_inset @@ -16624,8 +16840,11 @@ reference "subsec:Example-Scalability-Scenario" It is absolutely necessary to know the standard cache hierarchy of Unix (similarly also found in Windows) from section \begin_inset CommandInset ref -LatexCommand vref +LatexCommand nameref reference "sec:Performance-Arguments-from" +plural "false" +caps "false" +noprefix "false" \end_inset @@ -16668,7 +16887,7 @@ best and most expensive storage \emph on components \emph default - and the best storage + over the best storage \emph on network \emph default @@ -16695,15 +16914,21 @@ network Similarly for reliability: if you have problems with too many and/or too large incidents affecting too many customers, read sections \begin_inset CommandInset ref -LatexCommand vref +LatexCommand nameref reference "sec:Reliability-Arguments-from" +plural "false" +caps "false" +noprefix "false" \end_inset and \begin_inset CommandInset ref -LatexCommand vref +LatexCommand nameref reference "subsec:Reliability-Differences-CentralStorage" +plural "false" +caps "false" +noprefix "false" \end_inset @@ -16720,7 +16945,11 @@ Choice and tuning of components \end_inset No further explanations necessary, because most people already know this. - In case you think this is the only way: no, it is typically the + In case you think this is the +\emph on +only +\emph default + way: no, it is typically the \emph on worst \emph default @@ -16729,16 +16958,38 @@ worst last resort \emph default when compared to the previous enumeration items. + See example in section +\begin_inset CommandInset ref +LatexCommand nameref +reference "subsec:Example-Failures-of" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +. \begin_inset Newline newline \end_inset Exception: choice of wrong components with insufficient properties for your - particular application / use case. + particular application / use case, or even hard restrictions as mentioned + in section +\begin_inset CommandInset ref +LatexCommand nameref +reference "sec:What-is-Architecture" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +. But this is an \emph on architectural \emph default - problem in reality. + problem in reality, and belongs to the previous item, not to this one. \end_layout \begin_layout Chapter