summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimeon Simeonov2017-12-14 09:42:47 +0100
committerSimeon Simeonov2017-12-14 09:42:47 +0100
commit286e6626b84b8337d721330e84ff41bf684c1c37 (patch)
treedc20210b43c09850a35a76b00f5a1b97cba57608
parentd958199acde1ffee073c93302d81a72b9bbe500c (diff)
mqprod presentation
-rw-r--r--reveal.js/images/mqprod/flow01.pngbin0 -> 40772 bytes
-rw-r--r--reveal.js/mqprod.html260
2 files changed, 260 insertions, 0 deletions
diff --git a/reveal.js/images/mqprod/flow01.png b/reveal.js/images/mqprod/flow01.png
new file mode 100644
index 0000000..28547fb
--- /dev/null
+++ b/reveal.js/images/mqprod/flow01.png
Binary files differ
diff --git a/reveal.js/mqprod.html b/reveal.js/mqprod.html
new file mode 100644
index 0000000..212e636
--- /dev/null
+++ b/reveal.js/mqprod.html
@@ -0,0 +1,260 @@
1<!doctype html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8">
5 <title>Meldingskø ved INT</title>
6 <meta name="author" content="Kai Vaade, Simeon Simeonov">
7 <meta name="apple-mobile-web-app-capable" content="yes">
8 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
9 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
10 <link rel="stylesheet" href="css/reveal.css">
11 <link rel="stylesheet" href="css/theme/serif.css" id="theme">
12
13 <!-- Theme used for syntax highlighting of code -->
14 <link rel="stylesheet" href="lib/css/zenburn.css">
15 </head>
16 <body>
17 <div class="reveal">
18
19 <!-- Any section element inside of this container is displayed as a slide -->
20 <div class="slides">
21 <section>
22 <h2>Meldingskø ved INT</h2>
23 <p>Utviklerforum 14.12.2017</p>
24 <br/>
25 <p>
26 <small>Kai Vaade (KIA), Simeon Simeonov (INT)</small>
27 </p>
28 </section>
29
30 <section>
31 <h2>Agenda</h2>
32 <br/>
33 <ul>
34 <li>Administrasjon</li>
35 <li>Roller og entiteter</li>
36 <li>Flyt</li>
37 <li>Rettigheter</li>
38 <li>Q &amp; A</li>
39 </ul>
40 </section>
41
42 <section>
43 <h2>Generelt</h2>
44 </br>
45 <p>Vi bruker RabbitMQ med AMQP 0.9.1 til å utveksle / behandle meldinger (JSON, <a href="https://tools.ietf.org/html/draft-hunt-idevent-scim-00">SCIM</a>)</p>
46 <p>Bruk av message-broker startet i 2015. I produksjon siden høsten 2017.</p>
47 <p>Driftes av KIA.</p>
48 </section>
49
50 <section>
51 <h2>Administrasjon</h2>
52 <p>Cerebrum har brukt MQ et års tid på egen server satt opp av Seksjon for integrasjon og elektroniske identiteter (USITINT).</p>
53 <p>Nå er driften av tjenesten flyttet fra prosjektet og inn i linja, Gruppe for drift av katalog-, integrasjon- og autentiseringstjenester (KIA).</p>
54 </section>
55
56 <section>
57 <h2>Administrasjon (forts...)</h2>
58 <p>Vi har softlaunchet meldingskø-tjenesten i høst. Tjenesten er ikke "offisielt" lansert, kjører kun våre egne ting (Cerebrum/SAP) foreløpig.</p>
59 <p>Antakelig gjør vi tjenesten kjent samtidig som et annet delprosjekt (API Manager) i UiO INTARK lanseres i nær fremtid.</p>
60 </section>
61
62 <section>
63 <h2>Administrasjon (forts...)</h2>
64 <p>Foreløpig så har vi ikke så veldig mye erfaring med tjenesten i linja.</p>
65 <p>Vi vet heller ikke så mye om behovet; dvs hvor mange som kommer til å bruke tjenesten.</p>
66 </section>
67
68 <section>
69 <h2>Administrasjon (forts...)</h2>
70 <p>Hvordan kontakte oss:</p>
71 <p><a href="https://www.usit.uio.no/om/organisasjon/iti/td/kia/dokumentasjon/meldingsko/" target="_blank">https://www.usit.uio.no/om/organisasjon/iti/td/kia/dokumentasjon/meldingsko/</a></p>
72 <p>Tilgang til grensesnittet: <a href="https://mq.uio.no/">https://mq.uio.no</a></p>
73 </section>
74
75 <section>
76 <h2>Roller og entiteter</h2>
77 <ul>
78 <p>Roller:</p>
79 <li>Administrator / Manager</li>
80 <li>Consumer / Konsument</li>
81 <li>Publisher / Publisist :)</li>
82 <p>Entiteter:</p>
83 <li>vhost</li>
84 <li>Exchange (direct, fanout, topic, headers)</li>
85 <li>Kø (transient, durable)</li>
86 <li>Binding</li>
87 </ul>
88 </section>
89
90 <section>
91 <h2>Flyt</h2>
92 </br>
93 <img src="images/mqprod/flow01.png"></img>
94 </section>
95
96 <section>
97 <h2>Rettigheter</h2>
98 <p>RabbitMQ implementerer 2 rettighetsnivåer: per <em>vhost</em> og per entitet</p>
99 <p>RabbitMQ (AMQP) definerer 3 typer operasjoner:</p>
100 <ul>
101 <li><p><em>configure</em> - opprette / slette entiteter eller endre deres oppførsel</p></li>
102 <li><p><em>write</em> - skrive melding til en entitet</p></li>
103 <li><p><em>read</em> - lese melding fra entitet</p></li>
104 </ul>
105 </section>
106
107 <section>
108 <h2>Rettigheter og brukere</h2>
109 <p>RabbitMQ bruker <em>regular expressions</em> til å definere rettigheter</p>
110 <ul>
111 <li><p><small><em>rabbitmqctl add_user cerebrum &lt;passord&gt;</em></small></p></li>
112 <li><p><small><em>rabbitmqctl add_user uio_ad_microservice &lt;passord&gt;</em></small></p></li>
113 <li><p><small><em>rabbitmqctl set_permissions -p /no/uio/integration cerebrum "^$" "^ex_.*" "^$"</em></small></p></li>
114 <li><p><small><em>rabbitmqctl set_permissions -p /no/uio/integration uio_ad_microservice "^q_ad_ms_.*" "^q_ad_ms_.*" "^(ex_messages|q_ad_ms_.*)$"</em></small></p></li>
115 </ul>
116 </section>
117
118 <section>
119 <h2><em>Routing keys</em> i <em>topic exchange</em></h2>
120 <p><em>Routing key</em> settes av sender som en del av meldingen og blir inspisert av brokeren dersom meldingen sendes til en <em>topic exchange</em>.</p>
121 <p>Strukturen til en topic / message routing key er:</p>
122 <p><small>&lt;kilde&gt;.&lt;type&gt;.&lt;objekt&gt;.&lt;hendelse&gt;</small></p>
123 <p>F.eks.:</p>
124 <p><small>cerebrum.event.person.delete</small></p>
125 </section>
126
127 <section>
128 <h2>Protokoller og porter</h2>
129 <p>"AMQP 0.9.1 prioritert siden det er protokollen som mapper best mot RabbitMQs funksjonalitet. Vi har også noe erfaring med bruk av denne."</p>
130 <p>RabbitMQ lytter for AMQP0.9.1 på SSL port <em>5671</em>.</p>
131 <br/>
132 <p>Andre protokoller og tjenester for RabbitMQ:</p>
133 <ul>
134 <li>RabbitMQ Management (webgrensesnitt) - 15671 (SSL)</li>
135 </ul>
136 </section>
137
138 <section>
139 <h3>Dokumentasjon og lenker</h3>
140 <p>
141 RabbitMQ:
142 </p>
143 <ul>
144 <li>
145 <p>
146 <small>
147 <a href="http://www.rabbitmq.com">http://www.rabbitmq.com</a> - RabbitMQ sin offisielle side
148 </small>
149 </li>
150 <li>
151 <p>
152 <small>
153 <a href="http://www.rabbitmq.com/configure.html">http://www.rabbitmq.com/configure.html</a> - Generell konfigurasjon av RabbitMQ
154 </small>
155 </li>
156 <li>
157 <p>
158 <small>
159 <a href="http://www.rabbitmq.com/management.html">http://www.rabbitmq.com/management.html</a> - Bruk av rabbitmq_management plugin i RabbitMQ
160 </small>
161 </li>
162 <li>
163 <p>
164 <small>
165 <a href="http://www.rabbitmq.com/access-control.html">http://www.rabbitmq.com/access-control.html</a> - Tilgangskontroll i RabbitMQ
166 </small>
167 </li>
168 <li>
169 <p>
170 <small>
171 <a href="http://www.rabbitmq.com/man/rabbitmqctl.1.man.html">http://www.rabbitmq.com/man/rabbitmqctl.1.man.html</a> - rabbitmqctl manual side
172 </small>
173 </li>
174 <li>
175 <p>
176 <small>
177 <a href="http://www.rabbitmq.com/tutorials/amqp-concepts.html">http://www.rabbitmq.com/tutorials/amqp-concepts.html</a> - Generelt om AMQP og forskjellige exchanges
178 </small>
179 </li>
180 </ul>
181 </section>
182
183 <section>
184 <h3>Dokumentasjon og lenker</h3>
185 <p>
186 UiO:
187 </p>
188 <ul>
189 <li>
190 <p>
191 <small>
192 <a href="http://www.usit.uio.no/om/tjenestegrupper/cerebrum/utvikling/dokumentasjon/tools/rabbitmq.html">Installasjon og oppsett av RabbitMQ for Cerebrum utviklere</a>
193 </small>
194 </li>
195 <li>
196 <p>
197 <small>
198 <a href="http://www.usit.uio.no/om/tjenestegrupper/cerebrum/utvikling/aktiviteter/office365-uia/broker/rabbitmq.html">Oppsett av RabbitMQ for Office365 integrasjon mot UiA</a>
199 </small>
200 </li>
201 <li>
202 <p>
203 <small>
204 <a href="https://www.usit.uio.no/om/organisasjon/uav/usitint/interndokumentasjon/integrasjon/broker/utredning-meldingsflyt.html">Utredning: Meldingsflyt, kø-struktur og navngiving</a> (intern)
205 </small>
206 </li>
207 </ul>
208 <p>
209 Bøker:
210 </p>
211 <ul>
212 <li>
213 <p>
214 <small>
215 RabbitMQ in action - Alvaro Videla / Jason J.W. Williams - 2012 - Manning
216 </small>
217 </li>
218 <li>
219 <p>
220 <small>
221 Mastering RabbitMQ - Ayanoglu / Aytas / Nahum - 2015 - PACKT Publishing
222 </small>
223 </li>
224 </section>
225
226 <section>
227 <h1>Q &amp; A</h1>
228 </section>
229
230 </div>
231 </div>
232
233 <script src="lib/js/head.min.js"></script>
234 <script src="js/reveal.js"></script>
235 <script>
236
237 // More info https://github.com/hakimel/reveal.js#configuration
238 Reveal.initialize({
239 controls: true,
240 progress: true,
241 history: true,
242 center: true,
243
244 transition: 'slide', // none/fade/slide/convex/concave/zoom
245
246 // More info https://github.com/hakimel/reveal.js#dependencies
247 dependencies: [
248 { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
249 { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
250 { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
251 { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
252 { src: 'plugin/zoom-js/zoom.js', async: true },
253 { src: 'plugin/notes/notes.js', async: true }
254 ]
255 });
256
257 </script>
258
259 </body>
260</html>