<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>appareto.startup | appareto</title>
    <link>/category/appareto.startup/</link>
      <atom:link href="/category/appareto.startup/index.xml" rel="self" type="application/rss+xml" />
    <description>appareto.startup</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>nl-nl</language><copyright>appareto by bridges It</copyright><lastBuildDate>Tue, 21 Sep 2021 00:00:00 +0000</lastBuildDate>
    <image>
      <url>/images/icon_hu0dd4792f4cd0cbf7f048c96fd32a1834_4301_512x512_fill_lanczos_center_2.png</url>
      <title>appareto.startup</title>
      <link>/category/appareto.startup/</link>
    </image>
    
    <item>
      <title>Wekelijkse Sales Rapportage</title>
      <link>/2021/09/21/wekelijkse-sales-rapport-met-appareto-startup/</link>
      <pubDate>Tue, 21 Sep 2021 00:00:00 +0000</pubDate>
      <guid>/2021/09/21/wekelijkse-sales-rapport-met-appareto-startup/</guid>
      <description>
&lt;script src=&#34;/2021/09/21/wekelijkse-sales-rapport-met-appareto-startup/
index.nl_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;div id=&#34;inleiding&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Inleiding&lt;/h2&gt;
&lt;p&gt;Met &lt;a href=&#34;/product/startup&#34;&gt;&lt;span style=&#34;color: #dd3333&#34;&gt;appareto.&lt;/span&gt;&lt;i style=&#39;color: #dd3333&#39; class=&#39;fa fa-star&#39; aria-hidden=&#39;true&#39;&gt;&lt;/i&gt;&lt;span style=&#34;color: #dd3333&#34;&gt;T&lt;/span&gt;&lt;sup style=&#39;color: #dd3333&#39;&gt;up&lt;/sup&gt; virtual appliance&lt;/a&gt; kunnen periodiek geautomatiseerd rapportages gegenereerd worden. Als voorbeeld een wekelijkse update van de top 10 van klanten in voorgaande periode.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;overzicht-architectuur&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Overzicht architectuur&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;images/Screenshot%20from%202021-09-22%2014-02-10.png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;In woorden:&lt;/p&gt;
&lt;ol style=&#34;list-style-type: decimal&#34;&gt;
&lt;li&gt;De &lt;strong&gt;Business&lt;/strong&gt; heeft een aantal wensen m.b.t. de &lt;strong&gt;Sales Rapportage&lt;/strong&gt;, &lt;strong&gt;de Top 10 Klanten&lt;/strong&gt; is er daar één van. Deze willen ze graag wekelijks geautomatiseerd per email toegestuurd krijgen.&lt;/li&gt;
&lt;li&gt;V.w.b. &lt;strong&gt;Applicaties&lt;/strong&gt; is daarvoor een &lt;strong&gt;Orchestration Service&lt;/strong&gt; nodig die periodiek een &lt;strong&gt;Flow&lt;/strong&gt; met een aantal taken opstart: &lt;strong&gt;Filter Customers&lt;/strong&gt; om het voor een deelverzameling van de klanten te doen, bv voor bepaalde regio. &lt;strong&gt;Load Data&lt;/strong&gt; haalt de relevante data uit achterliggende systemen op voor deze klanten waarna &lt;strong&gt;Genereer Rapport&lt;/strong&gt; de data analyseert en het rapport genereert. In de laaste stap &lt;strong&gt;Distribueer Rapport&lt;/strong&gt; wordt het naar een lijst van medewerkers gezonden.&lt;/li&gt;
&lt;li&gt;Concreet is dat binnen de interne &lt;strong&gt;Infrastructuur&lt;/strong&gt; geimplementeerd m.b.v. de &lt;a href=&#34;/product/startup&#34;&gt;&lt;span style=&#34;color: #dd3333&#34;&gt;appareto.&lt;/span&gt;&lt;i style=&#39;color: #dd3333&#39; class=&#39;fa fa-star&#39; aria-hidden=&#39;true&#39;&gt;&lt;/i&gt;&lt;span style=&#34;color: #dd3333&#34;&gt;T&lt;/span&gt;&lt;sup style=&#39;color: #dd3333&#39;&gt;up&lt;/sup&gt; virtual appliance&lt;/a&gt;, meer specifiek wordt er voor dit rapport gebruik gemaakt van &lt;strong&gt;Python&lt;/strong&gt; en &lt;strong&gt;R&lt;/strong&gt; taken die draaien in Docker in het lokale netwerk, maar zo zijn opgezet dat ze ook werken in een &lt;a href=&#34;/services/cloud/&#34;&gt;Cloud&lt;/a&gt; omgeving.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div id=&#34;implementatie-inkijkjes&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Implementatie inkijkjes&lt;/h2&gt;
&lt;div id=&#34;flow-en-taak-definitie&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Flow en Taak definitie&lt;/h3&gt;
&lt;p&gt;Als orchestration component wordt &lt;a href=&#34;https://docs.prefect.io/orchestration/server/overview.html#what-is-prefect-server&#34;&gt;Prefect server&lt;/a&gt; gebruikt. De flow en tasks definieer je in Python. In dit geval gebruiken we ook een &lt;strong&gt;ShellTask&lt;/strong&gt; om m.b.v. een al bestaand R programma een Rmarkdown gebaseerd rapport te genereren. Onderstaand de code gestript van alle “extra’s”:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;images/Screenshot%20from%202021-09-22%2016-25-19.png&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;docker-gerelateerd&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Docker gerelateerd&lt;/h3&gt;
&lt;p&gt;Om de flows portable te houden verpakken we ze als Docker images, dan kunnen ze op het interne netwerk of in de cloud uitgevoerd worden. En naast gebruik in &lt;strong&gt;docker-compose&lt;/strong&gt; zijn ze ook geschikt voor gebruik in &lt;strong&gt;Kubernetes&lt;/strong&gt;. De &lt;strong&gt;Dockerfile&lt;/strong&gt; ziet er ongeveer zo uit:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;images/Screenshot%20from%202021-09-22%2017-36-43.png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;De &lt;strong&gt;docker-compose.yml&lt;/strong&gt; file heeft onderstaande inhoud:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;images/Screenshot%20from%202021-09-22%2016-41-32.png&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;diy&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;DIY&lt;/h2&gt;
&lt;p&gt;Afgezien van klantspecifieke code en &lt;a href=&#34;/product/startup&#34;&gt;&lt;span style=&#34;color: #dd3333&#34;&gt;appareto.&lt;/span&gt;&lt;i style=&#39;color: #dd3333&#39; class=&#39;fa fa-star&#39; aria-hidden=&#39;true&#39;&gt;&lt;/i&gt;&lt;span style=&#34;color: #dd3333&#34;&gt;T&lt;/span&gt;&lt;sup style=&#39;color: #dd3333&#39;&gt;up&lt;/sup&gt; virtual appliance&lt;/a&gt; specifieke componenten kun je bovenstaande m.b.v. de volgende open source componenten ook zelf implementeren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.prefect.io/orchestration/server/overview.html#what-is-prefect-server&#34;&gt;Prefect server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.docker.com/community/open-source&#34;&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.python.org/&#34;&gt;Python&lt;/a&gt;, &lt;a href=&#34;https://pandas.pydata.org/&#34;&gt;Pandas&lt;/a&gt;, &lt;a href=&#34;https://pypi.org/project/psycopg2/&#34;&gt;psycopg2&lt;a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.r-project.org/&#34;&gt;R&lt;/a&gt;, &lt;a href=&#34;https://www.tidyverse.org/&#34;&gt;Tidyverse&lt;/a&gt;, &lt;a href=&#34;https://rmarkdown.rstudio.com/&#34;&gt;R markdown&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description>
    </item>
    
  </channel>
</rss>
