diff options
Diffstat (limited to 'reveal.js')
| -rw-r--r-- | reveal.js/images/mqprod/flow01.png | bin | 0 -> 40772 bytes | |||
| -rw-r--r-- | reveal.js/mqprod.html | 260 |
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 & 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 <passord></em></small></p></li> | ||
| 112 | <li><p><small><em>rabbitmqctl add_user uio_ad_microservice <passord></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><kilde>.<type>.<objekt>.<hendelse></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 & 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> | ||
