<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.bolbeck.com/blogs/tag/technology/feed" rel="self" type="application/rss+xml"/><title>Bolbeck LLC - Blog #Technology</title><description>Bolbeck LLC - Blog #Technology</description><link>https://www.bolbeck.com/blogs/tag/technology</link><lastBuildDate>Sun, 14 Dec 2025 06:14:19 -0800</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[Navigating the new frontier]]></title><link>https://www.bolbeck.com/blogs/post/lessonsFromAgenticApps</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/AILessons.png"/>Lessons from building a multi-modal agentic AI application]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_t8JlvhIwTbWtLBMPE7oQ-w" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_FZKFztz1Q_-_5hQP0bHEMA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_1aJPBknoSaiv95nVvk8DhQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_wEzSlx9ZTReatLI_0iFQIQ" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center zpheading-align-mobile-center zpheading-align-tablet-center " data-editor="true"><span><span>Lessons from Building and Deploying Agentic AI Apps</span></span></h2></div>
<div data-element-id="elm_jeJeulp6SWSk-321Cx4pIg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center zptext-align-mobile-center zptext-align-tablet-center " data-editor="true"><p><span><span>Building GenAI Agentic based applications feels both familiar and unusual at the same time. While the core principles of software development—APIs, services, and infrastructure—remain, the introduction of agentic AI brings a new set of challenges like probabilistic models, semantic evaluation, and prompt security. These elements introduce a new layer of complexity that can be both exhilarating and perplexing.&nbsp;</span></span></p><p><span><span>Click on the image below to see the slides from the talk</span></span></p></div>
</div><div data-element-id="elm_fu56aPkBS-DvO8sDdx_kyQ" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_fu56aPkBS-DvO8sDdx_kyQ"] .zpimage-container figure img { width: 600px !important ; height: 332px !important ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-original zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/AgenticAIDevelopment_small.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/AILessons.png" size="original" alt="Link to Navigating the new frontier slides"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 03 Apr 2025 00:55:25 -0500</pubDate></item><item><title><![CDATA[Integrating GenAI into your next application]]></title><link>https://www.bolbeck.com/blogs/post/tips_for_genai_apps</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/genAiTips.png"/>Adding GenAI models to your application requires a new set of skills. My talk at AICamp provides tips and tricks on integrating AI into your software development lifecycle]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_uVt4VIymR2iV_nWmTl9d-g" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_3mf9j-0URe2aZSHd5oHwcA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_pZtEybrxSsqvPtsS7C0ZeQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_RD9-RBbjRJe1gtC5HbYx0w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center " data-editor="true">Tips for building applications that use GenAI</h2></div>
<div data-element-id="elm_1OPzfjUxQiyRJalnLFxuOQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p>Applications can leverage GenAI to perform a number of tasks that can e very helpful for the end users. However, integrating GenAI into any application development comes with a number of new challenges and paradigm shifts. In my talk at AICamp Chicago, we discussed several topics on what those challenges are and what are some of the tools and techniques that can help simplify the adoption process. We discussed, among other things:</p><ul><li style="text-align:left;">New AI specific tasks that teams have to add to their development lifecycle</li><li style="text-align:left;">How to tame the input and output of an LLM model</li><li style="text-align:left;">Choosing the correct model</li><li style="text-align:left;">The importance of monitoring models</li><li style="text-align:left;">And so much more!</li></ul></div>
</div><div data-element-id="elm_yXkOpih5L1aVm8bsH57-Wg" data-element-type="image" class="zpelement zpelem-image "><style> @media (min-width: 992px) { [data-element-id="elm_yXkOpih5L1aVm8bsH57-Wg"] .zpimage-container figure img { width: 500px ; height: 280.63px ; } } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="false" data-mobile-image-separate="false" class="zpimage-container zpimage-align-center zpimage-tablet-align-center zpimage-mobile-align-center zpimage-size-medium zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/TipsForGenDev.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/genAiTips.png" size="medium" alt="Cover slide for the &quot;Tips for building applications that use GenAI&quot; talk. Click image to go to slides."/></picture></a><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Click image to see the slides</span></figcaption></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 11 Dec 2024 10:35:21 -0600</pubDate></item><item><title><![CDATA[Managing your microservices with Ortelius]]></title><link>https://www.bolbeck.com/blogs/post/managing-your-microservices-with-ortelius</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/MicroservicesWithOrtelius.png"/>Trouble managing your microservices? Explore how open source Ortelius can help]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_OiV9llwdR8ijBsDWzmAScw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm__4QRBfoiSPCm2bYDvwEy4g" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_CAz-5KcYSUKbMaHVZ5InIw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_luKu-yJFQWW8RinbGKML3w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center " data-editor="true">Tame your microservices with Ortelius</h2></div>
<div data-element-id="elm_3D3EOiqxRt6ObuxtD-cobw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p>Having trouble keeping managing and keeping track of your microservices? Check out my slides from CD Con 2021 earlier this year on how opens source solution Ortelius can help! Click on the image below to open the slides</p></div>
</div><div data-element-id="elm_yhBu7LPh0yLEkHfVzOywAg" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_yhBu7LPh0yLEkHfVzOywAg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-fit zpimage-tablet-fallback-fit zpimage-mobile-fallback-fit "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/Tame%20your%20microservices%20with%20Ortelius.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/MicroservicesWithOrtelius.png" size="fit" style="width:100%;padding:0px;margin:0px;"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sat, 09 Oct 2021 15:38:32 -0500</pubDate></item><item><title><![CDATA[Getting started with microservices]]></title><link>https://www.bolbeck.com/blogs/post/gettingstartedwithmicroservices</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/Screen Shot 2021-10-09 at 3.03.10 PM.png"/>Getting started with microservices? Here a some quick tips and trick to get you going quickly and reliably]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_MgFGd1XATEa_zpduAH1CKw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_LIY-sUr_ShenJdyOOOtDRA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_xs1vyi-mRIqyFV0y-5GWTg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_VtR9j8uaT7qZwj7Hh_GOwA" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_VtR9j8uaT7qZwj7Hh_GOwA"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-center " data-editor="true">Tips and tricks to get started with microservices</h2></div>
<div data-element-id="elm_RMRchr_hR96ZTu4j4WeqBQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_RMRchr_hR96ZTu4j4WeqBQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p>Getting started with microservices? Here a some quick tips and trick to get you going quickly and reliably. These are the slides from my presentation at the 2021 Central Wisconsin IT conference! Click on the image below to see the slides.</p></div>
</div><div data-element-id="elm_4gwGkD9OR19LJ_y8K7C-pQ" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_4gwGkD9OR19LJ_y8K7C-pQ"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/Tips%20and%20tricks%20to%20get%20started%20with%20microservices.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/Screen%20Shot%202021-10-09%20at%203.03.10%20PM.png" size="original" alt="Slides for the tips and tricks to get started with microservices talk"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sat, 09 Oct 2021 15:21:31 -0500</pubDate></item><item><title><![CDATA[Centralized credentials management with Vault]]></title><link>https://www.bolbeck.com/blogs/post/pwdmanagementwithvault</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/stoppasswordinsanity_small.png"/>Deck from my presentation at Hashitalks 2021. Talk discusses on to use Vault to centralize and simplify credentials management of a microservices application running in Kubernetes]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_3T5fdfwnQ2i5MReML_u-fA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_3aNmlq4DRAi3S2Y44rzWcg" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_rZCPmXPBSFeSJ7L8v2vwGQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_RXAhSzQmS7WXDheIaLFBbA" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center " data-editor="true">Stop the (password) insanity!</h2></div>
<div data-element-id="elm_qYT5uSsARnCtH3qqoSNHsQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Slides from my session at Hashitalks 2021</p><p style="text-align:left;">As we build distributed applications and microservices, it is important to have a plan that allows easy, consistent management of applications' credentials. The talk discusses how to use Vault to simplify credentials management of a&nbsp;<span style="color:inherit;text-align:center;">sample&nbsp;</span>microservices application running in Kubernetes. It shows how to achieve our objective without having to modify any of the existing application code.</p><p style="text-align:center;">Click on the image below to open the presentation&nbsp;</p></div>
</div><div data-element-id="elm_eNqF_Pn8o9Xl9yqi4UGX_A" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_eNqF_Pn8o9Xl9yqi4UGX_A"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="size-original" data-size-mobile="size-original" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-large zpimage-tablet-fallback-large zpimage-mobile-fallback-large "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/Stop%20the%20-password-%20insanity.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/stoppasswordinsanity_small.png" size="large" alt="Link to slides for Stop the password insanity!" style="width:1024px;"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 15 Feb 2021 09:54:59 -0600</pubDate></item><item><title><![CDATA[Introduction to Kubernetes]]></title><link>https://www.bolbeck.com/blogs/post/IntroToK8s</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/IntroToK8s.png"/>Slide deck from my presentation at the 2020 Central Wisconsin IT conference. The session discussed how Kubernetes can be used to orchestrate applications]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_loLLGDiSTKWfNAr5r2TnPQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_z4F7sxqbQFSCRwcVyERiHA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_slYA5HElSeKw0s9K4_8FZg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_-zxLxXYuRCGIKSb6SxO95w" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center " data-editor="true">2020 Central Wisconsin IT conference session</h2></div>
<div data-element-id="elm_pOIKxnR_QpGW-WirshRwpw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p><span style="color:inherit;"><span style="font-size:16px;">Kubernetes is one of the hottest technologies currently in the market. It has the ability to orchestrate application by automatically handling common, yet critical, tasks like application deployment, scaling and service discovery.</span></span><br></p><p><span style="font-size:16px;">Click the image below to open the presentation</span></p></div>
</div><div data-element-id="elm_-4YXIRZGUwQsIwalAqWjLg" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_-4YXIRZGUwQsIwalAqWjLg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/Introduction%20to%20K8s.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/IntroToK8s.png" size="original" alt="Introduction to Kubernetes. Click to open the PDF of the presentation"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 05 Oct 2020 17:12:21 -0500</pubDate></item><item><title><![CDATA[Fast track cloud development with JenkinsX]]></title><link>https://www.bolbeck.com/blogs/post/FastTrackDevelWJX</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/FastTrackWJenkins_FrontPage.png"/>Deck from my second talk at DevOps World 2020. The session explained how JenkinsX can help accelerate project startup and development by simplifying many of the tasks required to build cloud applications]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_-nNpHdjbSkiz6e6fr-5dSQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_JLgkSmTgQhmf8Vcg0KVcrw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_s8O4KCB9To6kJPbNkTkMNg" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_tirDK5R5Tymf-ODstrxdzw" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center " data-editor="true">DevOps World 2020 session</h2></div>
<div data-element-id="elm_EuEz3_b3Sz-PLppcxRlpoA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p style="text-align:left;">Slides from my second session at DevOps World 2020:</p><p style="text-align:left;"><span style="font-size:14px;color:inherit;">The cloud has allowed us to create fast, highly available distributed applications. However that has come at the price of application complexity. Developers must now not only create the application, but must also learn to use containers, pipelines and orchestrators. The session explores how JenkinsX can help accelerate project startup and development by simplifying many of the tasks that allow us to build cloud applications</span></p><p><span style="font-size:14px;color:inherit;">Click on the image below to open the presentation</span></p></div>
</div><div data-element-id="elm_ZLNbL3BTqj5mjLFwzujUDA" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_ZLNbL3BTqj5mjLFwzujUDA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/FastTrackWithJenkinsX.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/FastTrackWJenkins_FrontPage.png" size="original" alt="Fast Track cloud development with JenkinsX. Click to open PDF"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 05 Oct 2020 16:35:19 -0500</pubDate></item><item><title><![CDATA[Simplifying your life with Docker, Jenkins and Minikube]]></title><link>https://www.bolbeck.com/blogs/post/Simplifying_your_life_DJM</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/Simplify_FrontPage Small.png"/>Slides from my first session at the DevOps World 2020 conference. Session focused on automating mundane tasks to improve teams' work-life balance]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_L5x-HU38QzOUSDxINOfGeg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_NqZpoJ7PS62qqKL7HFhdig" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_JPyBs2yRT5S4gDTmdVrU1w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_jU0ZXLVLS3eRWuWRgwu3xg" data-element-type="heading" class="zpelement zpelem-heading "><style></style><h2
 class="zpheading zpheading-align-center " data-editor="true">DevOps World 2020 session</h2></div>
<div data-element-id="elm_h7iq170MQqawKu-86Wxmsw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><p>Slides from my DevOps World 2020 session on improving your work-life balance by automating mundane development and deployments tasks using Docker, Jenkins and Minikube. Click on the image below to open the presentation.</p></div>
</div><div data-element-id="elm_hcUVYYkYYJERPQcNaQlpEA" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_hcUVYYkYYJERPQcNaQlpEA"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/Simplifying%20your%20life%20with%20Docker-%20Jenkins%20and%20Minikube.pdf" target="" rel=""><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/Simplify_FrontPage%20Small.png" size="original" alt="Front page of deck. Click to open presentation"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 05 Oct 2020 10:40:56 -0500</pubDate></item><item><title><![CDATA[Microservices Architecture transition readiness]]></title><link>https://www.bolbeck.com/blogs/post/microservicesreadiness</link><description><![CDATA[Microservices have the potential to transform and simplify the building and maintenance of software applications. However,, to achieve the potential benefits, teams must be ready to adopt new paradigms and new concepts. Is your team ready for this new architecture?]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_wfkckbUiQK64ajC1_Px-pg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_PsvBb7SrTtOcr-EgMktH_w" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_24fA51HwSTiFXsnTc-qscQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_ZxLvbPu7SMmV4b8FZOj-gw" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_ZxLvbPu7SMmV4b8FZOj-gw"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-center " data-editor="true"><span style="color:inherit;">&nbsp;Is your team ready for Microservices?</span></h2></div>
<div data-element-id="elm_gDPGrXikC7EJ7UhNClgUcg" data-element-type="imagetext" class="zpelement zpelem-imagetext "><style> [data-element-id="elm_gDPGrXikC7EJ7UhNClgUcg"].zpelem-imagetext{ border-radius:1px; } </style><div data-size-tablet="" data-size-mobile="" data-align="left" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimagetext-container zpimage-with-text-container zpimage-align-left zpimage-size-small zpimage-tablet-fallback-small zpimage-mobile-fallback-small hb-lightbox " data-lightbox-options="
            type:fullscreen,
            theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/teamMeeting.jpg" size="small" alt="Team meeting taking place" data-lightbox="true" style="width:1197px;padding:0px;margin:0px;"/></picture></span></figure><div class="zpimage-text zpimage-text-align-left " data-editor="true"><p><span style="color:inherit;">Over the last few years, microservices have gained popularity as a way to improve team productivity while increasing application maintainability. The rallying cry behind this architecture has been led by internet giants that successfully migrated from a traditional monolithic application to thousands of microservices. But would this architecture benefit your team and make your products more flexible and nimble?</span><br></p></div>
</div></div><div data-element-id="elm_Zlmfn-avSuqttQSgXFUe3w" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_Zlmfn-avSuqttQSgXFUe3w"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;font-size:20px;font-weight:700;">What are microservices?&nbsp;</span><br></p><p><span style="color:inherit;font-size:14px;">While there are several definitions of what exactly is a microservice architecture, the basic high level infrastructure is built around small pieces of code with just one responsibility and that perform a single task. Those individual pieces of code are combined to achieve more complex tasks.&nbsp;</span><span style="font-size:14px;color:inherit;">You can think of it as building blocks. While the individual building blocks cannot do much on their own, they can be used to build grand structures</span></p><p><span style="font-size:16px;color:inherit;"><br></span></p><p><span style="color:inherit;font-size:20px;font-weight:700;">How do microservices compare to traditional applications?</span><span style="font-size:16px;color:inherit;"><br></span></p><p><span style="color:inherit;">Traditional applications are built as a single code base. All the pieces are intertwined into a single package which, at a simplified high level, interacts with an end user on one side and the database on the other. Microservices applications are built using a multitude of small codebases that work together to deliver results to the end user. Each microservice could be connected to its own database to manage its own data, though they do not&nbsp;</span><span style="color:inherit;">need to be. For example, a simple number adding microservice would receive numbers as inputs and return a result without needing a database.</span></p></div>
</div><div data-element-id="elm_bbW3YRtFo4CdGCXkqnJJig" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_bbW3YRtFo4CdGCXkqnJJig"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-medium zpimage-tablet-fallback-medium zpimage-mobile-fallback-medium hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/TraditionalVSMicroservices.png" size="medium" alt="Traditional vs Microservices Architectures" data-lightbox="true" style="width:706px;"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Figure 1 - Comparing architectures</span></figcaption></figure></div>
</div><div data-element-id="elm_VIGCr1p9YzPPrkEfe6hlbQ" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_VIGCr1p9YzPPrkEfe6hlbQ"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span>The clear advantages and reasons why microservices are becoming so popular are:</span></p><p><span style="color:inherit;"></span></p><ul><li><p><span><strong><span>Maintainability</span></strong><span>: Maintaining small pieces of code with few, if any, dependencies is simpler than maintaining a large code base with lots of dependencies</span></span></p></li><li><p><span><strong><span>Reusability</span></strong><span>: Microservices are small pieces of code with a single purpose in life and can easily be reused in other projects</span></span></p></li><li><p><span><strong><span>Modularity</span></strong><span>: Since each service is independent of the rest of the application, it can de be upgraded and deployed independently </span></span></p></li><li><p><span><strong><span>Fault isolation</span></strong><span>: Properly designed microservices isolate issues from the rest of the application</span></span></p></li><li><p><span><strong><span>Scalability</span></strong><span>: Microservices are scaled independently without scaling the whole application</span></span></p></li><li><p><span><strong><span>Cost</span></strong><span>: As a corollary to the scalability of microservices, scaling small microservices&nbsp;requires less resources than scaling the whole application. This translates&nbsp;to lower costs, especially in the world of cloud computing, where costs are based on resource usage.</span></span></p></li></ul><div><br></div><div><div><span style="color:inherit;font-size:20px;font-weight:700;">Understanding microservices complexities</span></div></div><div><div><span style="color:inherit;font-size:14px;">Having explored microservices architecture and its potential benefits, how do you ensure that your team can quickly capitalize on these benefits? Unfortunately, a number of projects have attempted to move to this new paradigm only to waste months of work and thousands of dollars only to end up with a more complicated and&nbsp;</span><span style="color:inherit;">less manageable system. To avoid this, there are a number of concepts your team should understand to ensure they are properly prepared for the change.</span></div></div><div><span style="color:inherit;"><br></span></div><div><div><div><div><span style="color:inherit;font-size:16px;font-weight:700;">Modularity comes at a price</span><span style="color:inherit;"><br></span></div></div></div></div><div><span style="color:inherit;"><p>Managing usage of hundreds of microservices requires a very structured approach to services design, documentation and API versioning </p><ul><li><span style="font-size:14px;"><span style="font-weight:600;">Dependencies</span>: Service dependencies should be minimized. The architecture's advantages disappear as number of dependencies increase and each service can no longer be managed independently. Reusability, fault isolation and independent scalability benefits vanish as well</span></li><li><span style="font-size:14px;"><span style="font-weight:600;">Boundaries</span>: The ability to reuse services and combine them to build applications are great advantages of this architecture. But this can quickly devolve into an unmanageable mesh of interconnected services, where no one truly understands which services are being used where. This puts significant stress when trying to debug issues, upgrade services or even trace the lifecycle of data in an application. Instead, design your microservices to be naturally grouped by logical context boundaries (e.g. customer services, product services, etc...). Intercommunication within a boundary could occur normally while communication outside the boundary would be done using an intermediary, potentially a pub/sub queue for example</span></li></ul><div><br></div></span></div></div>
</div><div data-element-id="elm_z-R1wbFftXjAAQf6s03cDg" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_z-R1wbFftXjAAQf6s03cDg"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/MicroserviceInterconnection.png" size="original" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Figure 2 - Bounded microservices context design</span></figcaption></figure></div>
</div><div data-element-id="elm_o7LpQ1Hlss8Oc1SBwRUH1Q" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_o7LpQ1Hlss8Oc1SBwRUH1Q"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="font-size:16px;color:inherit;font-weight:700;">Increased architecture complexity</span><br></p><p><span>While individual microservices are significantly less complex than a traditional application, the overall architecture of an application increases significantly in mainly two ways:</span></p><p><span style="color:inherit;"></span></p><ul><li><p><span><strong><span>Number of moving parts:</span></strong><span> Beyond the large number of microservices that need to be maintained, additional software modules are required to allow the microservices to work and perform reliably. In our simple high level overview in figure 1, we introduced a reverse proxy (to allow simple external communication with the external world) and queues (to allow messaging between services). But that is only the tip of the iceberg. We could also introduce logging/monitoring agents, API gateways, secret management and multiple databases among other things.</span></span></p></li><li><p><span><strong><span>Network traffic:</span></strong><span> In a traditional architecture, applications move data internally and unless the application itself fails, data is guaranteed to be processed. With microservices, that guarantee no longer exists. Communication between microservices is dependent on a network transport across potentially multiple network nodes. Since networks introduce both latency and failures, it is important for the microservices to be built with additional resiliency and the ability to withstand unreachable downstream services. Items like circuit breakers, retries and timeout management become critical for the application to function properly and manage errors gracefully</span></span></p></li></ul><div><br></div><div><div><span style="color:inherit;font-weight:700;"><span style="font-size:16px;">Debugging and monitoring</span></span><br></div></div><div><span style="color:inherit;"><p>In traditional applications, debugging/monitoring is straightforward and developers are intimately familiar with these processes. However, with microservices, debugging/monitoring workflows change significantly.</p><ul><li><p><strong>Debugging</strong>: When and error takes place in a distributed application, it is not as simple as attaching the debugger and stepping through the code: First you need to determine where the in the chain of microservice calls the fault occurred. Then, you need to bring up all the microservices involved in processing the relevant information. Finally you need to trace the data through each of those processes until you finally determine the root cause of the issue. </p></li><li><p><strong>Logging and Monitoring</strong>: In this new paradigm, it is no longer possible to have a single logging and monitoring point built into the application. Instead, each microservice writes its own logs and has different monitoring needs. Thus, the needs arises for external log aggregators and monitors.</p></li></ul><div><br></div><div><div><div><span style="color:inherit;font-size:20px;font-weight:700;">Preparing your team to move to Microservices</span><br></div></div></div><div><div><span style="color:inherit;"><p>As discussed above, there are significant differences between developing and maintaining a traditional monolith application and a microservices application. As you prepare to move your team into a microservices infrastructure it is important to ensure the team members are ready to make the switch.</p><ul><li><p><strong>Time:</strong> Do not underestimate the time requirements to get the team up to speed. Proper training and exposure to the new paradigm is very important to the project's success. There is a steep learning curve required before they can be as productive as they were in a traditional setting. Team members need to have enough time to switch their mindset to this new paradigm or they will eventually fall back to what they know and the project will end up with a large number of tightly coupled microservices which are hard to maintain and almost impossible to upgrade</p></li><li><p><strong>Need:</strong> Evaluate whether you really need a microservices architecture. The project needs to be big enough to warrant moving to this new methodology. Small to medium projects will probably not benefit as much because any gains from the new architecture will probably be wiped out by the increase in architecture complexity. Alternatively, check if the application components can be reused in other projects. In that scenario, microservices may indeed be the way to go</p></li><li><p><strong>Design:</strong> Schedule extra time to design the first set of microservices, ensure they are decoupled and self standing. Also, while the name microservices implies that services should be potentially as small as a function, this does not have to be the case. Study your environment, requirements and business needs. Would it be better to just make mini-services? Or services that are just bounded by a business function (eg: customers service, products service instead of customer kpi service or product inventory service). </p></li><li><p><strong>Automation:</strong> Embrace CI/CD and automation. Without automation to create/update your infrastructure and code base (everything as code), managing a large ecosystem quickly gets out hand. </p></li><li><p><strong>Tooling:</strong> Research and evaluate tools already available that could simplify your path. There is a large ecosystem of tools aimed squarely at the management of distributed applications. Below is a small sample of what is a rich and plentiful ecosystem. Which tools you use depends on your requirements&nbsp;</p></li></ul></span></div></div></span></div></div>
</div><div data-element-id="elm_gEh8jbam-igHUXETmhjTAw" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_gEh8jbam-igHUXETmhjTAw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original hb-lightbox " data-lightbox-options="
                type:fullscreen,
                theme:dark"><figure role="none" class="zpimage-data-ref"><span class="zpimage-anchor" role="link" tabindex="0" aria-label="Open Lightbox" style="cursor:pointer;"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/MicrosystemToolset.png" size="original" alt="List of cloud services that help develop and manage microservices" data-lightbox="true"/></picture></span><figcaption class="zpimage-caption zpimage-caption-align-center"><span class="zpimage-caption-content">Figure 3 - Distributed systems ecosystem tools sample</span></figcaption></figure></div>
</div><div data-element-id="elm_0LmL26hjjMbVNC8w6Ngltw" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_0LmL26hjjMbVNC8w6Ngltw"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-left " data-editor="true"><p><span style="color:inherit;font-size:14px;">Microservices architecture opens a world of possibilities when it comes to large distributed systems. It provides a number of significant advantages over traditional monolith architecture. However, like most things in life, it does come with some significant baggage. While this is not a silver bullet, it is a compelling new tool in the software development arsenal.&nbsp;</span><br></p></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 24 Feb 2020 15:42:43 -0600</pubDate></item><item><title><![CDATA[Getting started with Containers]]></title><link>https://www.bolbeck.com/blogs/post/ContainersDemoSlides</link><description><![CDATA[<img align="left" hspace="5" src="https://www.bolbeck.com/images/PreaenterBadge Small.png"/>Last week I presented at the Central Wisconsin IT conference. The topic of the talk was 'Using containers to accelerate projects'. Great audience and excellent discussions!]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_7u7JFalyRCey_c1VeH6yqg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_UKn2ohvwSRKj2E0R1dVvIw" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_PH_38_2sSCW1MaU2PpacFw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_v6t-FIs2TFaWsqVFkWdH6Q" data-element-type="heading" class="zpelement zpelem-heading "><style> [data-element-id="elm_v6t-FIs2TFaWsqVFkWdH6Q"].zpelem-heading { border-radius:1px; } </style><h2
 class="zpheading zpheading-align-center " data-editor="true">Using containers to accelerate your projects</h2></div>
<div data-element-id="elm_G2bTNB3YRPiA527n2xlcrg" data-element-type="text" class="zpelement zpelem-text "><style> [data-element-id="elm_G2bTNB3YRPiA527n2xlcrg"].zpelem-text { border-radius:1px; } </style><div class="zptext zptext-align-center " data-editor="true"><p><span style="color:inherit;">It was fun presenting at the Central Wisconsin IT conference over the weekend! I illustrated how containers improve productivity and enhance project ROI. </span><span style="color:inherit;">Great audience and excellent discussions! Click on the image below to get the slides for the presentation.</span><br></p></div>
</div><div data-element-id="elm_bmPpIouzNucVBpWlAOaHnw" data-element-type="image" class="zpelement zpelem-image "><style> [data-element-id="elm_bmPpIouzNucVBpWlAOaHnw"].zpelem-image { border-radius:1px; } </style><div data-caption-color="" data-size-tablet="" data-size-mobile="" data-align="center" data-tablet-image-separate="" data-mobile-image-separate="" class="zpimage-container zpimage-align-center zpimage-size-original zpimage-tablet-fallback-original zpimage-mobile-fallback-original "><figure role="none" class="zpimage-data-ref"><a class="zpimage-anchor" href="/files/Containers%20Demo.pdf" target="" rel="nofollow"><picture><img class="zpimage zpimage-style-none zpimage-space-none " src="/images/PreaenterBadge%20Small.png" size="original" alt="Presenter badge for the Central Wisconsin IT Conference"/></picture></a></figure></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 14 Oct 2019 15:40:08 -0500</pubDate></item></channel></rss>