From cd60eec1bd25a2bc102934604d3ba719ba2e09cc Mon Sep 17 00:00:00 2001 From: Marco Quintana Date: Wed, 21 Feb 2024 21:22:35 +0100 Subject: [PATCH 1/4] Added info to doc --- docs/images/deployment.svg | 1 + docs/src/07_deployment_view.adoc | 76 +++----------------------------- 2 files changed, 8 insertions(+), 69 deletions(-) create mode 100644 docs/images/deployment.svg diff --git a/docs/images/deployment.svg b/docs/images/deployment.svg new file mode 100644 index 00000000..e7f67add --- /dev/null +++ b/docs/images/deployment.svg @@ -0,0 +1 @@ +
Azure VM
Questions Generator API
WebApp
Questions History API
Questions History Database
Users Database
USER
WikiData
\ No newline at end of file diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 22b45c27..4c57851f 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -2,46 +2,8 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-deployment-view]] - == Deployment View -[role="arc42help"] -**** -.Content -The deployment view describes: - - 1. technical infrastructure used to execute your system, with infrastructure elements like geographical locations, environments, computers, processors, channels and net topologies as well as other infrastructure elements and - -2. mapping of (software) building blocks to that infrastructure elements. - -Often systems are executed in different environments, e.g. development environment, test environment, production environment. In such cases you should document all relevant environments. - -Especially document a deployment view if your software is executed as distributed system with more than one computer, processor, server or container or when you design and construct your own hardware processors and chips. - -From a software perspective it is sufficient to capture only those elements of an infrastructure that are needed to show a deployment of your building blocks. Hardware architects can go beyond that and describe an infrastructure to any level of detail they need to capture. - -.Motivation -Software does not run without hardware. -This underlying infrastructure can and will influence a system and/or some -cross-cutting concepts. Therefore, there is a need to know the infrastructure. - -.Form - -Maybe a highest level deployment diagram is already contained in section 3.2. as -technical context with your own infrastructure as ONE black box. In this section one can -zoom into this black box using additional deployment diagrams: - -* UML offers deployment diagrams to express that view. Use it, probably with nested diagrams, -when your infrastructure is more complex. -* When your (hardware) stakeholders prefer other kinds of diagrams rather than a deployment diagram, let them use any kind that is able to show nodes and channels of the infrastructure. - - -.Further Information - -See https://docs.arc42.org/section-7/[Deployment View] in the arc42 documentation. - -**** - === Infrastructure Level 1 [role="arc42help"] @@ -56,39 +18,15 @@ Describe (usually in a combination of diagrams, tables, and text): For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments. **** -_****_ +image::deployment.svg["Deployment View"] +In addition to what is shown in the diagram, we will also use Graphana and Prometheus during the production stage as code monitoring systems. Motivation:: -__ +Our goal is to run the application with Docker in a Azure VM. +However, during the production stage, each contributor will deploy the project locally. +Final product will be deployed in http://wiq.sytes.net/ (if that does not work, try http://20.77.37.219:3000/). Quality and/or Performance Features:: - -__ - -Mapping of Building Blocks to Infrastructure:: -__ - - -=== Infrastructure Level 2 - -[role="arc42help"] -**** -Here you can include the internal structure of (some) infrastructure elements from level 1. - -Please copy the structure from level 1 for each selected element. -**** - -==== __ - -__ - -==== __ - -__ - -... - -==== __ - -__ +As for performance features, our current Azure MV has 2 GiB RAM and 1vCPU. +If that was not enough, we can always switch to an Oracle VM, which has better resources for free. From 31328461b4e1729fb2d4006481e2cc955d8ef8cd Mon Sep 17 00:00:00 2001 From: Marco Quintana Date: Wed, 21 Feb 2024 21:27:07 +0100 Subject: [PATCH 2/4] Fixed --- docs/src/07_deployment_view.adoc | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 4c57851f..9186c2b0 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -7,16 +7,6 @@ ifndef::imagesdir[:imagesdir: ../images] === Infrastructure Level 1 [role="arc42help"] -**** -Describe (usually in a combination of diagrams, tables, and text): - -* distribution of a system to multiple locations, environments, computers, processors, .., as well as physical connections between them -* important justifications or motivations for this deployment structure -* quality and/or performance features of this infrastructure -* mapping of software artifacts to elements of this infrastructure - -For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments. -**** image::deployment.svg["Deployment View"] In addition to what is shown in the diagram, we will also use Graphana and Prometheus during the production stage as code monitoring systems. @@ -30,3 +20,4 @@ Final product will be deployed in http://wiq.sytes.net/ (if that does not work, Quality and/or Performance Features:: As for performance features, our current Azure MV has 2 GiB RAM and 1vCPU. If that was not enough, we can always switch to an Oracle VM, which has better resources for free. +MongoDB will be used in both Databases. \ No newline at end of file From df870787d1136a7a3026077c008cb05d15686d9d Mon Sep 17 00:00:00 2001 From: Marco Quintana Date: Thu, 22 Feb 2024 16:43:18 +0100 Subject: [PATCH 3/4] hotfix --- docs/src/07_deployment_view.adoc | 51 ++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 9186c2b0..47c397cb 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -4,6 +4,57 @@ ifndef::imagesdir[:imagesdir: ../images] == Deployment View +[role="arc42help"] +**** +.Content +The deployment view describes: + + 1. technical infrastructure used to execute your system, with infrastructure elements like geographical locations, environments, computers, processors, channels and net topologies as well as other infrastructure elements and + +2. mapping of (software) building blocks to that infrastructure elements. + +Often systems are executed in different environments, e.g. development environment, test environment, production environment. In such cases you should document all relevant environments. + +Especially document a deployment view if your software is executed as distributed system with more than one computer, processor, server or container or when you design and construct your own hardware processors and chips. + +From a software perspective it is sufficient to capture only those elements of an infrastructure that are needed to show a deployment of your building blocks. Hardware architects can go beyond that and describe an infrastructure to any level of detail they need to capture. + +.Motivation +Software does not run without hardware. +This underlying infrastructure can and will influence a system and/or some +cross-cutting concepts. Therefore, there is a need to know the infrastructure. + +.Form + +Maybe a highest level deployment diagram is already contained in section 3.2. as +technical context with your own infrastructure as ONE black box. In this section one can +zoom into this black box using additional deployment diagrams: + +* UML offers deployment diagrams to express that view. Use it, probably with nested diagrams, +when your infrastructure is more complex. +* When your (hardware) stakeholders prefer other kinds of diagrams rather than a deployment diagram, let them use any kind that is able to show nodes and channels of the infrastructure. + + +.Further Information + +See https://docs.arc42.org/section-7/[Deployment View] in the arc42 documentation. + +**** + +=== Infrastructure Level 1 + +[role="arc42help"] +**** +Describe (usually in a combination of diagrams, tables, and text): + +* distribution of a system to multiple locations, environments, computers, processors, .., as well as physical connections between them +* important justifications or motivations for this deployment structure +* quality and/or performance features of this infrastructure +* mapping of software artifacts to elements of this infrastructure + +For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments. +**** + === Infrastructure Level 1 [role="arc42help"] From 9416fa8b92b939f6af65b720e419c8389716168d Mon Sep 17 00:00:00 2001 From: Marco Quintana Date: Thu, 22 Feb 2024 18:25:12 +0100 Subject: [PATCH 4/4] hotfix --- docs/images/deployment.png | Bin 0 -> 62508 bytes docs/images/deployment.svg | 1 - docs/src/07_deployment_view.adoc | 7 ++----- 3 files changed, 2 insertions(+), 6 deletions(-) create mode 100644 docs/images/deployment.png delete mode 100644 docs/images/deployment.svg diff --git a/docs/images/deployment.png b/docs/images/deployment.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2c20802012c812187ef209401f8c18d432d749 GIT binary patch literal 62508 zcma&O1z1&E)HO_ZcZYNdf=H)9gER=zAtjA;hYCtbsYt1`(jd|xT`H{-lG1{7{qvyr z{`bD$eZKd*&#mWp&fa^iHP@VDjxpALa8q3YABP492?+^bN%5K%5)$fNBqWpcRf6v94}fr zJ9+hYGs0y^>~st~{`wpV8Ls2~d`(Zy`MUs7{gHm}!Vtp}irNx|ZlM;ZHBa1_{CK&N zaS7HH2MHa=4?$C13QGG}5w~|D<8LPTY){5?FdXU87N`pBbWsY~Xk)lb>*!F)->op* zUzI?n)8RV6asKEoI$>OLn);r!xgv5ag48hiW1|8-y;k4Wv@T~c_422b0-UQEwTa;i z3l7<8c@8g8Rt$x#iN7BTZZ;L1V3URU?pq)a|J1&~@v@_d#-;bc;b7J}72AcOOjPF* zt;eqTKh)#INbT(l`)qEewA^I9IU;_6?%})0hw-t4rjA%x)guBux1WblUyaQdyEmRS zXP6O79*Chzdod!CVpQ~A^i}IBdWUa}9ZOOILz(999_y*zCj5k_kNOKw`0!?aOb4dW zJJsarggD2LgYc*ono+ZBx;OnVUx}#Lx`|#mym8Nu_`!9pR-C6Pcb94xrn~et$MTLS zI8({D?32yhcRo!|mEXGF$XDvHa5rtU<+0pd{l2RjHL04{b6ujoc)zq_s=H%(RfvW< zm_fTYE}FRRrfGT1JlC!k6`!$n!)VJoY5Dl$+okC-#Sd_qI)*G8QQ3`07WjD`FW=Mh zQT;I8?YaL2Ik0KamhT3!50YoNy6cf4;b?5UT^L{d>M>gh?)?zC)&8-R%ZT^x&9(S%NmQhf&#vE9 z-+Qcmde4nn&E%^-m1nE;!^6xU4+%TIJvEY4crApNpLbX^?)I_Z<(b`TLu{XfeV`AH z`sY(Z^sk|EChuau(jVCe)P|+6o8?N3{UE4XBpBKG`8;sF!o2^<4K7Fed5iIe8p)Md z)H@fnyFxyB4qw!ZCXn1)A$mH{HGZ`k{}u+$y^yGQ9%;Omn*&`e>Dt~nnSIJ}f@FSXwcBSTO0Ea_g48U*YfyxhB(`l01`!qM|ozoGhy>(;Rk) zqW2Ay87FU25(efv`CwTl*6{Ff*6p)z)+nr z+k=03tsSnv-)J&ae|E*`c>m`#e{^(om-cc7t;pS>ug&uvg#`r#B_%`&9D;(MzI-{t z723q~e=g!Y`C9E6HxJJTYb^PW^P%jE*bcmiDE&G$CBwn7`0K~#?BlC6G&Buor$^!8 zX!kMSV>5ohYI$W`>tVMxQRx!w9}v)-hdyQgYw05?yQ-qH@W4+lR}u3w_Vf z(b3J#%@f(xlr=P>lsezJFFvV2CYNrBL4O$+N0i!CWK>N+w@J9dge8TTUdi~~-QDHo zWtfTEHUtckSpE484JI+$RPY(aMPpId?`?h0M5-$)?hE3qcE!ZtZSt6@83(pU-*Iw^ zc=GuEeJnh@-rinG|NYHMhtcrVmC?5wQ;jk_Jh&Dx&?@U53O~Zy+n0rf=NA{RM!tOg z`h}#A){|o7HDbwEv9SXW$$2_&l88saN_rEeT)cg&`tG+FYN7TRYEn8nI!49}dv-1^ zyXB#Lfgu92gSE4yQyW6Bi$zJd|=qN{m+Sooshoxu8v(2 z&2;H(5^F||XvH*Ty?ohYq{vWAObph4^D-q$6v+Z=+?chsb+!$DsCwhOxWqh0kqPdos^V2l)z*q@vS886 z>U~m_l|i}M36XCeid#RaDx{>Oq>{|b#mOn^`|FOSWloK1uFKA{E>)q~63R1_FUg6C z<>svzV>{P+=< z@?wQ`5k2Yz*Jafb*G~hhEnauO)?5-0AfjUx4HUj-+j2qT-Z~l!iWl|Mmz?i$SL+0= ziV_JJ4oicBgOhml3!J&CkTeJ%5s2H`s(bP@?cJ*P6{hp$xXmSZ2iZ^w6{&pf`1m+4 zkJH(C12PXek6zQ5%jR_Rtj#V2TfmXmri&S6dn_aT)o9s4@WV1y*R0dH+(zx%H8hX! zW=`(z?#*&7SeQBAw&r`xRp6m9ukIxC84bnwgnO8Yq8Smk65>@n#xHepa{BP$!_BL{ zzO~QP@ZQ{hPeDV2!>2-Kg>=LRA-x=Bn4Bke&B4LJ+&rtXQHIL2Lp?M3$&>J?sH=r_ zfhVMEx|{j#ozKQ({UG7t;bGv>TJ?kzU(5|V zJ3BKcAt51+7m{`kt(hrN4TKmnuuYj->KO_#fX~IK`Y(>YV5Oqd2w?Vkf_?kkNU@RG zV~A(|y*fc8ZHqC@!L{g6oN4doGMaSMNV?#cp*|6uHS~}lVF#?fYg+qK-8zU7mbqO| zorP}2R*WQ#O+s1Au|&|scm4YHQkAZ(tSrb@!NiW|xwp$7A~?>b4OdI)Q_OlWFsQG7yDjugto~ENFeQ-e?F5KbVWutVm!0juD*^CH3c`$d8teHX13>$;Rpf0|OuX+)Ofl?}h&qd(}!)Kw6-H zLDYpwSa^68uOeXAm?`f0b2?gDiMwA#Q<-h8t(EFtCAlz^CCE&Vm0C_SL204jyHx>2 zU}ECdr567(%oz5UqGR38jVF4CX;nP>Z<-`&BgGdnV|!BgTfLy%^v%SpB6%qq8`C*5 zIKIrwpZ@yJeY&SPT5-xQIe6YWmg&yrn0(~g>!~-wth@U9bj7bBNs{&wUA$e(dXWiR z@irAoWlb*5uDzGn6;_Uyh=>jdI9VPpY#vul6GY!7iMe2=uzwYU3-dGgm?ad;P@iw# zKSZY=o7@!Z9W;BDokIyp985Ou>^3IJdRmiZ4a0FM1R`t$xIqtzPttp|uNYQC!b0X7F z_w6*}@Fj{H+!xg~U9gton$zTR+tiU!1l*yVCiu~yEW+lE6B=~wdm;5cFRyd!L=A83 zWx4G@3vmd8<iX@bU4@M4N(|PBq1bL#}7q1!IQ3_WiY_si}wAOVYe@{}m1D z8qE#q_jg5+QE~c4Cbcb=Lms7xdvdGdU6T`b88WjCZ8R-0L$;#da&dKVSo!fecN~9e zkTpvzuQAg+X<=ajK3SZbyB~_twD&M3M#u8Kc}h$5=k+-3CJ%zAGo_Xt*W~C2A6+F? z2Xvt64D|;}j0;`Tk9CNltSmV(k6g3S%k@QgCN8a!_yP$wR#s!e%@{|x?o>HF z_vT#_B{b|hli&x$AZYiAbqR$|QQ^*jkWFuJX1kWPzIg3>n5NIjxCGgU*3_-|m$t3Di$k*d=z0;h_`_rS;@5n^O)pYd;JX z&s^CPX-w`!RzZG5R!01sI_5%^`t30kUiup9#l3P=f5@PNDtTgIEiZ;67?f6K$A*T` z{BklgWy!>|tEwmtRj-s*?A^so?Qh2W+R=gOb>9*LeOJT6;)2cvoTtd?Li^mu$w*6D zX1jUquFBzR8*AwzEu-dyVOKM-6&lORK8-Zp+g?yxDr~lpEMBEg)D9%tSpmzS5% zZ1t#d>�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
2Zx{~Ek9ut-D<3=Q5tzb`D< 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 V{8(D7F0Q~oCHW(A8M1~R{|BVY9U%Y! literal 0 HcmV?d00001 diff --git a/docs/images/deployment.svg b/docs/images/deployment.svg deleted file mode 100644 index e7f67add..00000000 --- a/docs/images/deployment.svg +++ /dev/null @@ -1 +0,0 @@ -
Azure VM
Questions Generator API
WebApp
Questions History API
Questions History Database
Users Database
USER
WikiData
\ No newline at end of file diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 47c397cb..239f6db9 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -55,11 +55,8 @@ Describe (usually in a combination of diagrams, tables, and text): For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments. **** -=== Infrastructure Level 1 - -[role="arc42help"] +image::deployment.png["Deployment View"] -image::deployment.svg["Deployment View"] In addition to what is shown in the diagram, we will also use Graphana and Prometheus during the production stage as code monitoring systems. Motivation:: @@ -71,4 +68,4 @@ Final product will be deployed in http://wiq.sytes.net/ (if that does not work, Quality and/or Performance Features:: As for performance features, our current Azure MV has 2 GiB RAM and 1vCPU. If that was not enough, we can always switch to an Oracle VM, which has better resources for free. -MongoDB will be used in both Databases. \ No newline at end of file +Each microservice has its own container aswell as its own database in case of needing one. \ No newline at end of file