<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Microservices on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/microservices/</link><description>Recent content in Microservices on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 14 Jul 2026 15:17:31 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/microservices/index.xml" rel="self" type="application/rss+xml"/><item><title>What's New In The June 2026 Azul Payara Release?</title><link>https://foojayio.github.io/website/today/whats-new-in-the-june-2026-azul-payara-release/</link><pubDate>Wed, 24 Jun 2026 11:28:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/whats-new-in-the-june-2026-azul-payara-release/</guid><description>&lt;p&gt;The June 2026 cycle ships the first regular monthly release of the Payara 7 line, plus a critical security fix that lands across every supported branch. Azul Payara 7.1.0 continues the Jakarta EE 11 line that went generally available in May, and is joined by Azul Payara Community 7.2026.6, Azul Payara 6.39.0, Azul Payara 5.88.0, and Azul Payara 4.1.2.191.56.&lt;/p&gt;
&lt;p&gt;A single security fix, backported from Payara 7 down to Payara 4, runs through every release in this cycle. Two supported lines, 5.88.0 and 6.39.0, also carry a behaviour change to the server &amp;ldquo;ready&amp;rdquo; signal that a minority of deployments will want to read before upgrading.&lt;/p&gt;</description></item><item><title>Quarkus Unpacked: Insights from the Foojay Podcast</title><link>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</link><pubDate>Tue, 23 Jun 2026 12:36:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</guid><description>&lt;figure class="alignleft is-resized"&gt;
 &lt;img decoding="async" src="3-Quarkus-Unpacked-2-2.jpeg" alt="Quarkus: A Runtime and Framework for Cloud-Native Java" style="width:300px"&gt;
&lt;/figure&gt;
&lt;p&gt;I recently had the pleasure of joining the &lt;a href="https://www.youtube.com/watch?v=_nJCTTrnZkE" target="_blank" rel="noopener noreferrer"&gt;Foojay podcast&lt;/a&gt;
 to talk about Quarkus in depth. The conversation covered a lot of ground, from what makes Quarkus different to the practical trade-offs between JVM and native mode. This post captures the key questions and answers from that discussion, lightly edited for readability.{#_quarkus_unpacked_insights_from_the_foojay_podcast}&lt;/p&gt;
&lt;p&gt;If you have been following this blog series, note that the third installment on building your own stack with Quarkus is coming next. Consider this a bonus entry that distills the podcast conversation into a format you can read, reference, and share.&lt;/p&gt;</description></item><item><title>Jakarta EE is Ready for AI – Five Talks from OCX26 That Prove It</title><link>https://foojayio.github.io/website/today/jakarta-ee-is-ready-for-ai-but-dont-just-take-my-word-for-it/</link><pubDate>Tue, 02 Jun 2026 11:41:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/jakarta-ee-is-ready-for-ai-but-dont-just-take-my-word-for-it/</guid><description>&lt;p&gt;Back in April I had the pleasure of attending Open Community Experience 2026 in Brussels - the Eclipse Foundation&amp;rsquo;s flagship open source conference. It&amp;rsquo;s always good to be in a room (or a few rooms 😉 ) with people who really care about the technology they work with. Several of my colleagues and friends were speaking - watching them present work they&amp;rsquo;ve spent serious time on is one of the better parts of this community.&lt;/p&gt;</description></item><item><title>AWS Nitro and CPU Graviton Meets Unikernels</title><link>https://foojayio.github.io/website/today/aws-nitro-and-cpu-graviton-meets-unikernels/</link><pubDate>Fri, 10 Apr 2026 16:26:25 +0000</pubDate><guid>https://foojayio.github.io/website/today/aws-nitro-and-cpu-graviton-meets-unikernels/</guid><description>&lt;h2 id="h2-0-aws-nitro-and-cpu-graviton-meets-unikernels-java-and-quarkus-on-arm64-aws-graviton-with-nanos-unikernel"&gt;AWS Nitro and CPU Graviton Meets Unikernels: Java and Quarkus on ARM64 AWS Graviton with Nanos Unikernel&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://github.com/user-attachments/assets/2c957ea8-2c6b-4caa-86f8-5adeb9e8bedc" alt="image" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="h2-1-java-and-jakarta-ee-truly-meet-unikernels"&gt;Java and Jakarta EE Truly Meet Unikernels&lt;/h2&gt;
&lt;p&gt;The key message of this article is simple and strong:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;any Java or Jakarta EE application is already ready&lt;/strong&gt; to benefit from the advantages of unikernels.&lt;/p&gt;
&lt;p&gt;Java and Jakarta EE, including modern frameworks such as Quarkus, can immediately take advantage of the unikernel model &lt;strong&gt;without waiting for new languages, new runtimes, or radical rewrites&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Spring Boot Actuator Health for MicroProfile Developers</title><link>https://foojayio.github.io/website/today/spring-boot-actuator-health-for-microprofile-developers/</link><pubDate>Thu, 26 Mar 2026 09:30:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-actuator-health-for-microprofile-developers/</guid><description>&lt;p&gt;If you worked with MicroProfile Health, you already understand the value of exposing application health information through standardized endpoints. You know about liveness, readiness and startup probes. You implemented the HealthCheck interface and annotated your procedures with @Liveness, @Readiness and @Startup. Spring Boot Actuator follows a similar philosophy but takes a different architectural approach. This post will help you map your MicroProfile Health knowledge to Spring&amp;rsquo;s world.&lt;/p&gt;
&lt;h2 id="h2-0-the-conceptual-bridgethe-conceptual-bridge"&gt;The Conceptual BridgeThe Conceptual Bridge&lt;/h2&gt;
&lt;p&gt;At its core, Spring Boot Actuator serves the same purpose as MicroProfile Health: it provides a mechanism for validating the availability and status of your application in containerized environments. Both specifications recognize that modern cloud platforms like Kubernetes need machine-readable health information to make decisions about pod lifecycle management.&lt;/p&gt;</description></item><item><title>Introducing the BoxLang Spring Boot Starter: Dynamic JVM Templating for Spring</title><link>https://foojayio.github.io/website/today/introducing-the-boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/</link><pubDate>Thu, 19 Mar 2026 14:20:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/introducing-the-boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/introducing-the-boxlang-spring-boot-starter-dynamic-jvm-templating-for-spring/boxlang-spring-boot-release-700x467.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Spring Boot developers know the pain of evaluating view technologies. Thymeleaf is great &amp;mdash; until you need more expressiveness. FreeMarker is powerful &amp;mdash; until the syntax fights you. What if you could write templates in a dynamic JVM language that gives you the full power of the platform, feels natural, and requires zero setup to integrate?&lt;/p&gt;
&lt;p&gt;Meet the &lt;strong&gt;BoxLang Spring Boot Starter.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Drop one dependency into your Spring Boot 3 app and start writing dynamic &lt;code&gt;.bxm&lt;/code&gt; templates powered by BoxLang &amp;mdash; a modern, expressive JVM language. Zero configuration. Full web scopes. 100% Java interoperable. Not only that, you get full access to BoxLang&amp;rsquo;s framework capabilities so you can integrate tons of features into your Spring Boot applications:&lt;/p&gt;</description></item><item><title>JC-AI Newsletter #13</title><link>https://foojayio.github.io/website/today/jc-ai-newsletter-13/</link><pubDate>Thu, 05 Feb 2026 21:12:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/jc-ai-newsletter-13/</guid><description>&lt;p&gt;Two weeks have passed, and it is time to present a new collection of readings that may shape developments, utilization or ideas in the field of artificial intelligence in 2026.&lt;/p&gt;
&lt;p&gt;While significant activity characterizes the AI field, many unresolved research, design, and implementation challenges continue to impact progress. Future advancement depends heavily on understanding the nature of these challenges to approach probabilistic problems from the appropriate directions. This JC-AI newsletter features insightful interviews with key figures in the field, enabling readers to ask the right questions and compare visions of an &amp;lsquo;uncertain future&amp;rsquo; against current capabilities to maintain a grounded perspective.&lt;/p&gt;</description></item><item><title>BoxLang 1.10.0: Functional Arrays, Elegant Loops &amp; Distributed Locking</title><link>https://foojayio.github.io/website/today/boxlang-1-10-0-functional-arrays-elegant-loops-distributed-locking/</link><pubDate>Wed, 04 Feb 2026 10:46:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/boxlang-1-10-0-functional-arrays-elegant-loops-distributed-locking/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/boxlang-1-10-0-functional-arrays-elegant-loops-distributed-locking/boxlang-v1.10.0-700x467.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re excited to announce &lt;strong&gt;BoxLang 1.10.0&lt;/strong&gt;, a feature-packed release that brings powerful functional programming capabilities, elegant loop syntax, and enterprise-grade distributed locking to the BoxLang runtime. This release represents a significant leap forward in developer productivity and application scalability.&lt;/p&gt;
&lt;h2 id="h2-0-what-s-new"&gt;🎯 What&amp;rsquo;s New&lt;/h2&gt;
&lt;h3 id="h3-1-nine-new-array-methods-for-functional-programming"&gt;Nine New Array Methods for Functional Programming&lt;/h3&gt;
&lt;p&gt;BoxLang 1.10.0 introduces nine powerful array methods that bring modern functional programming patterns to your collections. These methods enable cleaner, more expressive code while reducing the need for verbose iteration patterns.&lt;/p&gt;</description></item><item><title>Enterprise Java in Practice</title><link>https://foojayio.github.io/website/today/enterprise-java-in-practice-fragmentation-platforms-and-real-world-trade-offs/</link><pubDate>Thu, 29 Jan 2026 10:11:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/enterprise-java-in-practice-fragmentation-platforms-and-real-world-trade-offs/</guid><description>&lt;p&gt;Enterprise Java has matured into one of the most stable and widely adopted ecosystems in software development. Yet for many teams, the biggest challenges no longer come from the language itself, but from the complexity of the environments built around it.&lt;/p&gt;
&lt;p&gt;Modern enterprise Java teams are dealing with a mix of legacy Java EE applications, Jakarta EE runtimes, microservices, container platforms, cloud-native deployments, and increasingly sophisticated DevOps pipelines. The result is an ecosystem that is powerful, but often fragmented across frameworks, runtimes, tooling, and operational models.&lt;/p&gt;</description></item><item><title>Not a Lucid Web3 Dream Anymore: x402, ERC-8004, A2A, and The Next Wave of AI Commerce</title><link>https://foojayio.github.io/website/today/not-a-lucid-web3-dream-anymore-x402-erc-8004-a2a-and-the-next-wave-of-ai-commerce/</link><pubDate>Fri, 09 Jan 2026 16:05:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/not-a-lucid-web3-dream-anymore-x402-erc-8004-a2a-and-the-next-wave-of-ai-commerce/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/not-a-lucid-web3-dream-anymore-x402-erc-8004-a2a-and-the-next-wave-of-ai-commerce/daydreams-scaled.jpg" alt="DayDreams" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This article is for technically savvy readers, especially developers, protocol designers, and product teams working with AI agents, APIs, or crypto rails, who want a clear view of how these areas connect.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;It explains how x402, ERC-8004, and agent discovery layers turn APIs and agents into small usage-based businesses, and what that means for real systems over the next 1&amp;ndash;3 years.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3 id="h3-0-vocabulary-for-this-article"&gt;Vocabulary for this article&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;In this article, I use the term &lt;em&gt;micro business&lt;/em&gt; for a very small overall business, and &lt;em&gt;nano business&lt;/em&gt; for a single x402-priced endpoint or agent that earns on its own from per-call payments in stablecoins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AP2 (Agent Payment Protocol):&lt;/strong&gt; AP2 defines how agents pay each other. It standardizes how a service quotes a price, how payment is confirmed, and how both sides record what was bought, so payments fit directly into automated agent workflows. In practice, it is a protocol that lets one machine pay another machine for work, without a human in the loop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A2A (Agent-to-Agent communication):&lt;/strong&gt; A2A covers how agents talk, pass context, and coordinate work. It lets agents call each other, exchange structured messages, and chain tasks instead of acting as isolated scripts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;x402:&lt;/strong&gt; x402 is an HTTP-based payment protocol for APIs. A server responds with status &lt;code&gt;402 Payment Required&lt;/code&gt;, the price, and a payment route, and the client pays by using stablecoins on-chain and then retries the request to get the result.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ERC-8004 (8004):&lt;/strong&gt; ERC-8004 standard is an on-chain registry for agents. It gives each agent an identity and a place to store reputation data, so other agents and tools can decide whom to trust and which services to call.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="h2-1-foreword"&gt;Foreword&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;x402&lt;/strong&gt; and &lt;strong&gt;ERC-8004&lt;/strong&gt; .&lt;/p&gt;</description></item><item><title>Optimizing Java for the Cloud-Native Era with Quarkus</title><link>https://foojayio.github.io/website/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</link><pubDate>Tue, 06 Jan 2026 21:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</guid><description>&lt;p&gt;This article explores how Quarkus can help organizations reduce costs, streamline development, and modernize their Java applications for today&amp;rsquo;s cloud-native environments. It outlines the real-world benefits of adopting Quarkus and highlights how its core features address the performance and scalability challenges commonly associated with traditional Java frameworks.&lt;/p&gt;
&lt;p&gt;Quarkus is already being adopted across industries. One example is Orange, a global telecom provider that selected Quarkus to support its 5G API initiative, and benefited from fast startup times, a lightweight footprint, and seamless integration with Kubernetes.&lt;/p&gt;</description></item><item><title>Java and Jakarta EE and the Evolution of the Cloud with Nanos Unikernel</title><link>https://foojayio.github.io/website/today/java-jakarta-ee-and-the-evolution-of-the-cloud-with-nanos-unikernel/</link><pubDate>Tue, 06 Jan 2026 20:51:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-jakarta-ee-and-the-evolution-of-the-cloud-with-nanos-unikernel/</guid><description>&lt;p&gt;The evolution of the Java and Jakarta Enterprise ecosystem is converging toward an increasingly simple, efficient, and scalable architecture that improves security, delivers higher performance, and reduces hardware and infrastructure costs.&lt;/p&gt;
&lt;p&gt;For years, Kubernetes has been considered the de‑facto standard for modernizing Java applications in a cloud‑native direction. However, Kubernetes is not the only way to achieve scalability, continuous upgrades, and isolation. An alternative approach &amp;mdash; often underestimated &amp;mdash; is to leverage the &lt;strong&gt;hypervisors already included and fully managed by major cloud providers&lt;/strong&gt; , using &lt;strong&gt;Unikernel&lt;/strong&gt; images based on &lt;a href="https://nanovms.com" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Nanos&lt;/strong&gt;&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Scalable Enterprise Java for the Cloud</title><link>https://foojayio.github.io/website/today/scalable-enterprise-java-for-the-cloud/</link><pubDate>Thu, 18 Dec 2025 11:41:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/scalable-enterprise-java-for-the-cloud/</guid><description>&lt;p&gt;We&amp;rsquo;re excited to introduce &lt;a href="https://payara.fish/resource/scalable-enterprise-java-for-the-cloud/" title="*Scalable Enterprise Java for the Cloud*," target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Scalable Enterprise Java for the Cloud&lt;/em&gt;,&lt;/a&gt;
 a new free eBook created through a close collaboration between &lt;a href="https://payara.fish/" title="Payara" target="_blank" rel="noopener noreferrer"&gt;Payara&lt;/a&gt;
, Java Champion &lt;a href="https://otaviojava.com/" title="Otavio Santana" target="_blank" rel="noopener noreferrer"&gt;Otavio Santana&lt;/a&gt;
, and the Oracle NoSQL team Dario Vega &amp;amp; Michael Brey. This project brings together different parts of the Java ecosystem with a shared goal, helping developers build modern, cloud-native enterprise applications using open standards.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://payara.fish/resource/scalable-enterprise-java-for-the-cloud/" title="**Download the free eBook here**" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;Download the free eBook here&lt;/strong&gt;&lt;/a&gt;
 (no form fill necessary).&lt;/p&gt;</description></item><item><title>Spring Boot 4 - OpenTelemetry Guide</title><link>https://foojayio.github.io/website/today/spring-boot-4-opentelemetry-explained/</link><pubDate>Wed, 10 Dec 2025 09:09:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-4-opentelemetry-explained/</guid><description>&lt;p&gt;In my previous &lt;a href="https://foojayio.github.io/website/today/preparing-for-spring-framework-7-and-spring-boot-4/"&gt;article&lt;/a&gt;
, I outlined a comprehensive list of features introduced in Spring Framework 7 and Spring Boot 4.&lt;/p&gt;
&lt;p&gt;In this series of articles, we will explore these features in detail using a pragmatic approach. In this second article, I will dive deep into integration of Observability framework i.e., &lt;em&gt;&lt;strong&gt;OpenTelemetry with SpringBoot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As an architect and developer, when I engage in system design&amp;mdash;whether it involves monolithic architecture, microservices, or contemporary cloud-native applications&amp;mdash;I have made the integration of &lt;strong&gt;observability&lt;/strong&gt; patterns utilizing &lt;strong&gt;open-telemetry&lt;/strong&gt; tools a standard practice. Through observability, we can monitor application behavior via &lt;strong&gt;metrics, logs, and traces&lt;/strong&gt; that we trigger&lt;/p&gt;</description></item><item><title>Micrometer &amp; Prometheus in Spring Boot: Kafka Burger Orders</title><link>https://foojayio.github.io/website/today/micrometer-prometheus-in-spring-boot-kafka-burger-orders/</link><pubDate>Fri, 14 Nov 2025 10:13:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/micrometer-prometheus-in-spring-boot-kafka-burger-orders/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/eSreg0xPGqo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;
&lt;p&gt;👨‍💻 GitHub: &lt;a href="https://github.com/vinny59200/dukeburger" target="_blank" rel="noopener noreferrer"&gt;https://github.com/vinny59200/dukeburger&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;🔵⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪&lt;/p&gt;
&lt;p&gt;This guide shows how to use &lt;strong&gt;Micrometer and Prometheus in Spring Boot&lt;/strong&gt; to track a custom metric for a Kafka-driven Burger Orders app. You&amp;rsquo;ll post a burger order to a REST endpoint, publish it to Kafka, consume the topic, and increment a counter for all &amp;ldquo;DukeBurger&amp;rdquo; orders. Copy the snippets, run, and you&amp;rsquo;ll see your metric on &lt;code&gt;/actuator/prometheus&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Monolith vs Microservices in 2025</title><link>https://foojayio.github.io/website/today/monolith-vs-microservices-2025/</link><pubDate>Mon, 04 Aug 2025 13:45:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/monolith-vs-microservices-2025/</guid><description>&lt;p&gt;In recent years, the tech world has been buzzing with debates about architecture choices. However, 2025 offers a more balanced perspective.&lt;/p&gt;
&lt;p&gt;Simplicity, developer experience, and maintainability are reshaping how teams design software.&lt;/p&gt;
&lt;p&gt;From Infrastructure as Code (IaC) to &amp;ldquo;vibecoding&amp;rdquo; culture, and from startups to enterprises, many rethink their position on the monolith vs microservices 2025 spectrum.&lt;/p&gt;
&lt;p&gt;So, what has actually changed?&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;🔵⚪⚪⚪⚪⚪&lt;/p&gt;
&lt;h2 id="h2-0-terraform-and-iac-changing-architecture-with-confidence"&gt;🔁 Terraform and IaC: Changing Architecture with Confidence&lt;/h2&gt;
&lt;h3 id="h3-1-how-infrastructure-as-code-helps-teams-adapt-architecture-efficiently"&gt;How Infrastructure as Code helps teams adapt architecture efficiently&lt;/h3&gt;
&lt;p&gt;Infrastructure as Code tools like Terraform make architecture changes easier. Nevertheless, the process is not effortless.&lt;/p&gt;</description></item><item><title>Spring Cloud Stream for Real-Time Event-Driven Systems</title><link>https://foojayio.github.io/website/today/spring-cloud-stream-event-driven-architecture-part-1/</link><pubDate>Mon, 21 Jul 2025 13:33:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-cloud-stream-event-driven-architecture-part-1/</guid><description>&lt;p&gt;&lt;strong&gt;Envision operating a successful e-commerce platform where every moment is crucial. Customers make purchases, adjust inventory levels, process payments, and dispatch shipping alerts&amp;mdash;all in real time. In the background, microservices diligently function to guarantee seamless operations. However, how do these services interact effectively, particularly during peak traffic occurrences such as flash sales or holiday shopping events?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An efficient method to execute this use case involves utilizing Spring Cloud Stream (SCS) as the messaging infrastructure. SCS facilitates seamless interaction among microservices, enhancing the system&amp;rsquo;s responsiveness and scalability. A significant benefit of SCS is that it provides an abstraction layer, allowing developers to transition between messaging technologies such as Kafka or RabbitMQ or Pulsar or Amazon Kinesis without altering their fundamental business logic.&lt;/p&gt;</description></item><item><title>Spring Cloud Stream: Demystifying Event-Driven Architecture</title><link>https://foojayio.github.io/website/today/spring-cloud-stream-demystifying-event-driven-architecture/</link><pubDate>Fri, 28 Feb 2025 08:34:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-cloud-stream-demystifying-event-driven-architecture/</guid><description>&lt;p&gt;&lt;em&gt;Consider a bustling restaurant environment. The kitchen receives a flood of orders, waitstaff dart between tables, and patrons anxiously glance at their watches. Each time a waiter takes an order, he or she must verify it with the kitchen and wait for the kitchen to prepare the meal before attending to another table. This cumbersome method hampers efficiency, leaving the restaurant unable to meet customer demand.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Now envision an alternative situation. Instead of enduring delays, waitstaff enter orders into a centralized system, prompting the kitchen to begin meal preparation immediately upon receipt. As soon as the kitchen prepares the food, waiters receive instant notifications, enabling them to serve customers promptly without any delays. This exemplifies event-driven architecture: a fluid, real-time system where they exchange information asynchronously, promoting scalability and quick responsiveness.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Event-Driven Architecture and Change Data Capture Made Easy</title><link>https://foojayio.github.io/website/today/event-driven-architecture-and-change-data-capture-made-easy/</link><pubDate>Tue, 18 Feb 2025 16:44:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/event-driven-architecture-and-change-data-capture-made-easy/</guid><description>&lt;p&gt;Hello again! In this article (Part 1), we will discuss two common ways to build modern &lt;a href="https://mezocode.com/microservice-journey-part-2-design-principles-for-well-crafted-architecture/" target="_blank" rel="noopener noreferrer"&gt;software systems&lt;/a&gt;
: &lt;strong&gt;Event-Driven Architecture (EDA) and Change Data Capture (CDC)&lt;/strong&gt;. They serve different purposes but can work well together in some situations.&lt;/p&gt;
&lt;p&gt;we&amp;rsquo;ll explain &lt;strong&gt;EDA&lt;/strong&gt; and &lt;strong&gt;CDC&lt;/strong&gt;, discuss their use cases, and explain when to use them and when not to. Using plain language and relatable examples, we&amp;rsquo;ll also explore how they work together.&lt;/p&gt;</description></item><item><title>Warp: the new CRaC engine</title><link>https://foojayio.github.io/website/today/warp-the-new-crac-engine/</link><pubDate>Wed, 18 Dec 2024 16:04:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/warp-the-new-crac-engine/</guid><description>&lt;p&gt;&lt;strong&gt;Many regular Foojay readers are already familiar with project CRaC - a technology that can checkpoint (suspend) running Java application into a snapshot image and later restore it to the already warmed-up state. The most common motivation for this is significantly faster startup than if the application (and JVM) started normally. Traditionally this was supported by CRIU (Checkpoint and Restore in Userspace), coming with the burden of root privileges required for execution. Since Azul Zulu October 2024 release, this pain-point can be gone: meet Warp.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Run a Java Lambda Function From a Docker image</title><link>https://foojayio.github.io/website/today/run-a-java-lambda-function-from-a-docker-image/</link><pubDate>Wed, 11 Dec 2024 16:16:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/run-a-java-lambda-function-from-a-docker-image/</guid><description>&lt;p&gt;&lt;strong&gt;Have you ever wanted to deploy a Java Serverless function, but package it with a Docker Image? That is possible now with AWS new Container support. This guide will show you how to try it yourself, step by step!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Hello Lambda Function project contains an AWS Lambda maven application with &lt;a href="https://github.com/aws/aws-sdk-java-v2" target="_blank" rel="noopener noreferrer"&gt;AWS Java SDK 2.x&lt;/a&gt;
 dependencies.&lt;/p&gt;
&lt;p&gt;Here follows instructions from AWS Document on building &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/java-image.html#java-image-instructions" target="_blank" rel="noopener noreferrer"&gt;Lambda for Java&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;The sample code seen below can be found in my GitHub repository: &lt;a href="https://github.com/charlfasching/hello-lambda" target="_blank" rel="noopener noreferrer"&gt;hello-lambda&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>GlassFish is rolling forward. What’s New?</title><link>https://foojayio.github.io/website/today/glassfish-is-rolling-forward-whats-new/</link><pubDate>Tue, 26 Nov 2024 15:11:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/glassfish-is-rolling-forward-whats-new/</guid><description>&lt;p&gt;&lt;strong&gt;The Evolution Continues. GlassFish, which used to be a popular application server, free to use and reliable, is evolving again. If you&amp;rsquo;ve been holding onto your old GlassFish instances, there&amp;rsquo;s good news&amp;mdash;things have gotten a lot more exciting recently.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since we created the OmniFish company and started improving GlassFish in 2022 (read about that story in &lt;a href="https://omnifish.ee/2022/06/28/oh-what-did-you-do-to-glassfish/" target="_blank" rel="noopener noreferrer"&gt;Oh, What Did You Do to GlassFish?!&lt;/a&gt;
), a lot has happened around GlassFish. We joined the Eclipse GlassFish project and &lt;a href="https://blogs.eclipse.org/post/tanja-obradovic/welcome-omnifish-jakarta-ee-working-group" target="_blank" rel="noopener noreferrer"&gt;joined the Jakarta EE Working Group&lt;/a&gt;
 as well.&lt;/p&gt;</description></item><item><title>Get recognized for your cloud-native Java development skills</title><link>https://foojayio.github.io/website/today/get-recognized-for-your-cloud-native-java-development-skills-with-this-new-badge/</link><pubDate>Thu, 29 Aug 2024 16:08:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/get-recognized-for-your-cloud-native-java-development-skills-with-this-new-badge/</guid><description>&lt;p&gt;&lt;strong&gt;In a world where in-demand skills are critical for job success, security, and progression, it&amp;rsquo;s vital that we, as developers, ensure we are showcasing our skills to the wider world. This can include qualifications, courses, and badges, all of which help us to advertise our skills and highlight our professional experiences and expertise.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So, to help make this easier (and free!) for Java developers, the Open Liberty team created the first-ever Liberty badge: &lt;a href="https://ibm.biz/FooJayLibertyDeveloperEssentialsBadge" title="Liberty Developer Essentials" target="_blank" rel="noopener noreferrer"&gt;Liberty Developer Essentials&lt;/a&gt;
!&lt;/p&gt;</description></item><item><title>Creating 12-factor cloud-native Java apps with open source</title><link>https://foojayio.github.io/website/today/creating-cloud-native-java-applications-with-the-12-factor-app-methodology/</link><pubDate>Fri, 23 Aug 2024 05:30:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-cloud-native-java-applications-with-the-12-factor-app-methodology/</guid><description>&lt;p&gt;&lt;strong&gt;Learn how you could create cloud-native Java apps that are portable, scalable, and reliable with the 12 factor app methodology and open source Java frameworks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Created in 2012, the 12-factor app methodology was designed to provide a set of guidelines for helping developers and organizations to design and build cloud-native applications. We&amp;rsquo;ll explore how you can take advantage of each of these 12 factors to create applications, utilizing open source technologies, that thrive in the cloud.&lt;/p&gt;</description></item><item><title>Run AI-enabled JakartaEE/MicroProfile apps with LangChain4j</title><link>https://foojayio.github.io/website/today/run-ai-enabled-jakarta-ee-and-microprofile-applications-with-langchain4j-and-open-liberty/</link><pubDate>Mon, 12 Aug 2024 22:14:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/run-ai-enabled-jakarta-ee-and-microprofile-applications-with-langchain4j-and-open-liberty/</guid><description>&lt;p&gt;&lt;strong&gt;Artificial Intelligence (AI) is an exciting and disruptive field that is already transforming businesses, and even entire industries, by enabling automation, improving decision-making and unlocking new insights from data.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the rise in large language models (LLMs) such as ChatGPT, there is a significant shift in the performance of AI and its potential to drive enterprise value. So, how will this impact on software development and the creation of cloud-native Java applications for enterprises?&lt;/p&gt;</description></item><item><title>Identify Dependencies in Codebases During Microservice Migration</title><link>https://foojayio.github.io/website/today/how-to-identify-dependencies-in-your-codebase-during-microservices-migration/</link><pubDate>Fri, 07 Jun 2024 07:17:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-identify-dependencies-in-your-codebase-during-microservices-migration/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Migration from a monolithic architecture to microservices presents challenges, particularly in identifying and managing dependencies within the codebase. By analyzing the application&amp;rsquo;s training data, we can uncover the seams and threads that bind the application together, discovering a safer, more iterative path to refactor our code.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Collecting tracing data to understand code dependencies&lt;/li&gt;
&lt;li&gt;Using Digma Analytic Insights to identify dependencies in your codebase:&lt;/li&gt;
&lt;li&gt;Code Nexus Point Insight&lt;/li&gt;
&lt;li&gt;Top Usage Insight&lt;/li&gt;
&lt;li&gt;Discovering Dead Code&lt;/li&gt;
&lt;li&gt;Duration Breakdown Insight&lt;/li&gt;
&lt;li&gt;Conclusion: Identifying Dependencies in Your Codebase During Microservices Migration&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Migration from a monolithic architecture to microservices can be crucial for scalability, flexibility, and development velocity. However, this transformation has challenges, particularly when trying to identify and manage dependencies within the codebase. Many teams optimistically embark on an application-wide modernization epic, thinking of making short work of refactoring their codebase to be more modular. Unfortunately, many of these initiatives quickly lose the initial momentum, as it becomes apparent that untangling the Gordian monolith knot is proving to be an uphill struggle.&lt;/p&gt;</description></item><item><title>Foojay Podcast #51: Persistence, Evolving your Career, Jakarta EE, GlassFish, Messaging via Telegram</title><link>https://foojayio.github.io/website/today/foojay-podcast-51/</link><pubDate>Mon, 03 Jun 2024 08:03:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-51/</guid><description>&lt;p&gt;This is part 3 of the JCON interviews.&lt;/p&gt;
&lt;p&gt;Frank meets Otavio Santana, who recently wrote the book &amp;ldquo;Mastering the Java Virtual Machine.&amp;rdquo; At JCON, he talked about the persistence layer and how you can evolve your career.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll also learn more about Jakarta EE, GlassFish, and a PET project with messaging via Telegram.&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/7-lhQld4KVc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Exploring Cost-Effective Solutions for Stateful Rest Services</title><link>https://foojayio.github.io/website/today/exploring-cost-effective-solutions-for-stateful-rest-services/</link><pubDate>Mon, 27 May 2024 13:13:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/exploring-cost-effective-solutions-for-stateful-rest-services/</guid><description>&lt;h2 id="h2-0-a-case-study-with-ibm-cloud-code-engine-eclipsestore-and-ibm-cloud-object-storage"&gt;A Case Study with IBM Cloud Code Engine, EclipseStore, and IBM Cloud Object Storage&lt;/h2&gt;
&lt;p&gt;In the dynamic realm of cloud computing, finding cost-effective solutions for stateful rest services that don&amp;rsquo;t necessarily require scaling can be a nuanced challenge.&lt;/p&gt;
&lt;p&gt;In this article, we&amp;rsquo;ll take a pragmatic look at a use case leveraging &lt;a href="https://www.ibm.com/products/code-engine" title="IBM Cloud Code Engine" target="_blank" rel="noopener noreferrer"&gt;IBM Cloud Code Engine&lt;/a&gt;
, &lt;a href="https://eclipsestore.io/" title="EclipseStore" target="_blank" rel="noopener noreferrer"&gt;EclipseStore&lt;/a&gt;
, and &lt;a href="https://www.ibm.com/products/cloud-object-storage" title="IBM Cloud Object Storage (COS)" target="_blank" rel="noopener noreferrer"&gt;IBM Cloud Object Storage (COS)&lt;/a&gt;
. The goal is to shed light on how this can be a practical and economical alternative, particularly when scalability is not a primary concern.&lt;/p&gt;</description></item><item><title>Calling Microservices in Java: Part 1</title><link>https://foojayio.github.io/website/today/calling-microservices-in-java/</link><pubDate>Fri, 17 May 2024 19:41:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/calling-microservices-in-java/</guid><description>&lt;p&gt;&lt;strong&gt;When building applications that need to call other parts of the system (&lt;a href="https://mezocode.com/microservices-soa-introduction-part1/" title="microservices" target="_blank" rel="noopener noreferrer"&gt;microservices&lt;/a&gt;
), Java programmers have access to a variety of tools and techniques that they can use for their development tasks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This article guides you through different ways of calling Microservices in Java, from basic methods to more advanced ones, and will share tips on best practices and common mistakes.&lt;/p&gt;
&lt;h3 id="h3-0-1-basic-http-requests-with-httpurlconnection"&gt;1. Basic HTTP Requests with HttpURLConnection&lt;/h3&gt;
&lt;p&gt;The simplest way to calling a microservice in Java is using the &lt;code&gt;HttpURLConnection&lt;/code&gt; class. This lets your application send HTTP requests and receive responses directly.&lt;/p&gt;</description></item><item><title>A Modern Approach to Middleware with Chronicle</title><link>https://foojayio.github.io/website/today/a-modern-approach-to-middleware-with-chronicle/</link><pubDate>Fri, 17 May 2024 09:46:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/a-modern-approach-to-middleware-with-chronicle/</guid><description>&lt;p&gt;&lt;strong&gt;Financial institutions today face significant challenges in updating their legacy middleware systems which are crucial for supporting millions of lines of code serving critical business functions. Prior to multicast support in modern switching hardware that became prevalent in the early 2000s, message middleware was largely done via proprietary protocols that converged onto TCP/IP. IBM&amp;rsquo;s Websphere MQ was a leader in this space.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Point to point middleware based on TCP/IP requires extra processing power and network bandwidth proportional to the number of consumers, and unreliable or slow consumers can negatively impact performance of the publisher. To combat these challenges, software vendors utilized IP multicast to create messaging platforms that supported topic based publish/subscribe networks.&lt;/p&gt;</description></item><item><title>The High Availability Features of Microservices using Chronicle Services</title><link>https://foojayio.github.io/website/today/the-high-availability-features-of-microservices-using-chronicle-services/</link><pubDate>Thu, 25 Apr 2024 13:36:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-high-availability-features-of-microservices-using-chronicle-services/</guid><description>&lt;p&gt;&lt;strong&gt;In low-latency microservices, ensuring system resilience without compromising performance is vital.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This article explores how &lt;a href="https://chronicle.software/services/" title="Chronicle Services" target="_blank" rel="noopener noreferrer"&gt;Chronicle Services&lt;/a&gt;
, a Java-based framework optimised for low-latency microservices, meets these critical requirements by integrating HA, performance, and data persistence.&lt;/p&gt;
&lt;h2 id="h2-0-stateful-and-stateless-services"&gt;Stateful and Stateless Services&lt;/h2&gt;
&lt;p&gt;A &lt;a href="https://chronicle.software/services/" title="Chronicle Service" target="_blank" rel="noopener noreferrer"&gt;Chronicle Service&lt;/a&gt;
 application consists of a number of processing units known as Services, which interact with each other using events posted on &lt;a href="https://chronicle.software/queue-enterprise/" title="Chronicle Queues" target="_blank" rel="noopener noreferrer"&gt;Chronicle Queues&lt;/a&gt;
. The Chronicle Queue is an extremely fast shared memory inter-process communication; it also has an enterprise version that facilitates replication of queues over the network.&lt;/p&gt;</description></item><item><title>Spring Framework – Internals of RestClient</title><link>https://foojayio.github.io/website/today/spring-internals-of-restclient/</link><pubDate>Mon, 25 Mar 2024 11:32:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-internals-of-restclient/</guid><description>&lt;p&gt;&lt;strong&gt;As a developer and architect, my constant pursuit is to achieve simplicity and elegance when constructing resilient and intricate enterprise applications. With my affinity for the Spring Framework, I have witnessed firsthand the simplicity and modernization it brings to the Spring Ecosystem.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This framework enables the creation of complex enterprise applications in a more streamlined and refined manner, boasting a sophisticated diffusion and transformer architecture.&lt;/p&gt;
&lt;img fetchpriority="high" decoding="async" class="size-medium wp-image-103465" src="RestClient_1-700x394.jpg" alt="Spring RestClient" width="700" height="394"&gt;
&lt;p&gt;Spring RestClient&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;&lt;a href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes#restclient-support" title="Spring Boot 3.2" target="_blank" rel="noopener noreferrer"&gt;Spring Boot 3.2&lt;/a&gt;
 launched and introduced a range of captivating functionalities. Notably, the release includes the RestClient feature, which offers a contemporary approach to developing REST endpoints.&lt;/p&gt;</description></item><item><title>Microservices Design Principles</title><link>https://foojayio.github.io/website/today/microservices-design-principles-for-well-crafted-architecture/</link><pubDate>Wed, 06 Mar 2024 10:48:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/microservices-design-principles-for-well-crafted-architecture/</guid><description>&lt;h4 id="introduction-to-microservices-design-principles"&gt;Introduction to Microservices Design Principles&lt;/h4&gt;
&lt;p&gt;Welcome back to the second part of our Microservice Journey series! In this edition, we will delve into the core principles of microservice design principles, including the important topics of coupling and cohesion in Object-Oriented Programming (OOP).&lt;/p&gt;
&lt;p&gt;This innovative approach to software system development prioritizes modularity and scalability, and understanding coupling and cohesion is essential for improving coding skills and designing architecture.&lt;/p&gt;
&lt;p&gt;If you missed the first part, you can catch up here: &lt;a href="https://foojayio.github.io/website/today/evolution-of-microservices-from-soa-to-modern-architecture/" title="The Evolution of Microservices with SOA"&gt;The Evolution of Microservices with SOA&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Evolution of Microservices &amp; SOA -- the Architectural Landscape</title><link>https://foojayio.github.io/website/today/evolution-of-microservices-from-soa-to-modern-architecture/</link><pubDate>Fri, 09 Feb 2024 09:30:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/evolution-of-microservices-from-soa-to-modern-architecture/</guid><description>&lt;h4 id="the-evolution-of-microservices-with-soa-navigating-the-architectural-landscape-"&gt;The Evolution of Microservices with SOA: Navigating the Architectural Landscape 🗺️&lt;/h4&gt;
&lt;p&gt;Microservices represent a paradigm shift in the way we construct distributed systems. This comprehensive guide dives into the heart of microservices and service-oriented architecture (SOA), comparing their roles in current development ecosystems.&lt;/p&gt;
&lt;p&gt;By understanding the evolution and the modern application of microservices, developers can harness their full potential for creating flexible, scalable, and resilient applications. 🚀&lt;/p&gt;
&lt;h4 id="microservices-and-soa-a-comprehensive-guide-"&gt;Microservices and SOA: A Comprehensive Guide 📚&lt;/h4&gt;
&lt;p&gt;Microservices and service-oriented architecture (SOA) are two popular architectural styles for building distributed systems. Both approaches share the goal of breaking down a large, complex system into smaller, more manageable components. However, there are some key differences between the two approaches. 🤔&lt;/p&gt;</description></item><item><title>Microservices Architecture: Navigating the Buzz</title><link>https://foojayio.github.io/website/today/microservices-architecture-navigating-the-buzz/</link><pubDate>Wed, 24 Jan 2024 20:05:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/microservices-architecture-navigating-the-buzz/</guid><description>&lt;p&gt;Lately I&amp;rsquo;ve been exploring what all the talk around &amp;lsquo;&lt;a href="https://semaphoreci.com/blog/microservice-architecture" title="microservices architecture" target="_blank" rel="noopener noreferrer"&gt;microservices architecture&lt;/a&gt;
&amp;rsquo; is really about. From it popping up in every other social media debate to it increasingly becoming a must-have skill on job listings, what is it that has caused this strong divide between the proponents of the traditional monolithic approach and those who have embraced the microservices paradigm.&lt;/p&gt;
&lt;p&gt;In this article I&amp;rsquo;m here to break it down for you as I outline the benefits, some common challenges, and offer some insights from microservices experts for those considering this approach.&lt;/p&gt;</description></item><item><title>When Should we Move to Microservices?</title><link>https://foojayio.github.io/website/today/when-should-we-move-to-microservices/</link><pubDate>Thu, 28 Dec 2023 14:08:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/when-should-we-move-to-microservices/</guid><description>&lt;p&gt;&lt;strong&gt;Sometime ago I wrote about &lt;a href="https://debugagent.com/is-it-time-to-go-back-to-the-monolith" target="_blank" rel="noopener noreferrer"&gt;modular Monoliths and the value of modern Monolithic architecture&lt;/a&gt;
. One of the more interesting discussions that came out of that post (and &lt;a href="https://www.youtube.com/watch?v=NWu7AJJlLM8" target="_blank" rel="noopener noreferrer"&gt;video&lt;/a&gt;
) is the inverse discussion: when is it right to still pick Microservices?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Like any design choice, the answer is subjective and depends on many things. But there are still general rules of thumb and global metrics we can use.&lt;/p&gt;
&lt;p&gt;Before we get into these problems, we need to understand what it means to have a Microservice architecture. Then we can gauge the benefit and price of having such an architecture.&lt;/p&gt;</description></item><item><title>Foojay Podcast #38: Java in the Cloud</title><link>https://foojayio.github.io/website/today/foojay-podcast-38/</link><pubDate>Mon, 25 Dec 2023 12:02:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-38/</guid><description>&lt;p&gt;Java was born in 1995, when the internet as we know it today didn&amp;rsquo;t exist yet.&lt;/p&gt;
&lt;p&gt;Cloud servers, Docker, Kubernetes, distributed systems, scaling up and down&amp;hellip; these things are now part of our daily job, but Java wasn&amp;rsquo;t originally designed for it.&lt;/p&gt;
&lt;p&gt;In this episode, we want to learn if the recent evolutions in OpenJDK, and ongoing related projects, will make Java a full Cloud member.&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xU4rKnzkSpo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Chopping the monolith in a smarter way</title><link>https://foojayio.github.io/website/today/chopping-the-monolith-in-a-smarter-way/</link><pubDate>Thu, 07 Dec 2023 07:40:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/chopping-the-monolith-in-a-smarter-way/</guid><description>&lt;p&gt;&lt;strong&gt;In my previous post &lt;a href="https://foojayio.github.io/website/today/chopping-monolith/"&gt;Chopping the Monolith&lt;/a&gt;
, I explained that some parts of a monolith are pretty stable and only the fast-changing parts are worth being &amp;ldquo;chopped.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I turned the post into a talk and presented it at several conferences. I think it&amp;rsquo;s pretty well received; I believe it&amp;rsquo;s because most developers understand, or have direct experience, that microservices are not a good fit for traditional organizations, as per &lt;a href="https://en.wikipedia.org/wiki/Conway%27s_law" target="_blank" rel="noopener noreferrer"&gt;Conway&amp;rsquo;s Law&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Strategies for Managing State in Chronicle Services</title><link>https://foojayio.github.io/website/today/strategies-for-managing-state-in-chronicle-services/</link><pubDate>Fri, 01 Dec 2023 08:41:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/strategies-for-managing-state-in-chronicle-services/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In distributed, microservice-based applications, the management of state is one of the most important, yet difficult aspects of design.&lt;/p&gt;
&lt;p&gt;Ensuring the accuracy and consistency of state without introducing excessive complexity that affects performance or flexibility to support evolving requirements requires careful thought.&lt;/p&gt;
&lt;p&gt;This article discusses issues around state management and shows how the &lt;a href="https://chronicle.software/services/" title="Chronicle Services" target="_blank" rel="noopener noreferrer"&gt;Chronicle Services&lt;/a&gt;
 framework provides support to deal with these in ways that maintain a resilient and high performing microservices architecture.&lt;/p&gt;</description></item><item><title>Preserving Software Continuity: Empowering Failover Strategies for Uninterrupted Operations</title><link>https://foojayio.github.io/website/today/preserving-software-continuity/</link><pubDate>Thu, 16 Nov 2023 07:53:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/preserving-software-continuity/</guid><description>&lt;p&gt;In today&amp;rsquo;s ever-changing and fast-paced digital landscape, maintaining uninterrupted business continuity is of utmost importance.&lt;/p&gt;
&lt;p&gt;Enter &lt;a href="https://chronicle.software/services/" title="Chronicle Service" target="_blank" rel="noopener noreferrer"&gt;Chronicle Services&lt;/a&gt;
, a robust mechanism dedicated to upholding application integrity even in the face of service disruptions.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s examine the world of failover strategies and explore how they safeguard software continuity.&lt;/p&gt;
&lt;h3 id="h3-0-stateless-vs-stateful-services"&gt;Stateless vs. Stateful Services&lt;/h3&gt;
&lt;p&gt;It&amp;rsquo;s important to appreciate the difference between stateless and stateful services. Your choice of failover approach is highly influenced by this understanding, especially if the aim is to resume services seamlessly from where they were interrupted.&lt;/p&gt;</description></item><item><title>Patterns For The Design Of Microservices – Part 3</title><link>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-3/</link><pubDate>Thu, 16 Nov 2023 04:35:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-3/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-1/" title="part1"&gt;part1&lt;/a&gt;
, &lt;a href="https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-2/" title="part2"&gt;part2&lt;/a&gt;
, we discussed several design patterns that aid in the development of microservices.&lt;/p&gt;
&lt;p&gt;This blog post will cover the subsequent design patterns.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Observability Patterns&lt;/li&gt;
&lt;li&gt;Cross-cutting Concern Patterns&lt;/li&gt;
&lt;/ul&gt;
&lt;img fetchpriority="high" decoding="async" class="size-medium wp-image-103034" src="MSPatternsOne-700x394.png" alt="Microservice Architecture" width="700" height="394"&gt;
&lt;p&gt;Microservice Architecture Patterns&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Undoubtedly, the logging mechanism benefits troubleshooting issues that arise when executing operations or transactions on multiple deployed microservices.&lt;/p&gt;
&lt;p&gt;We can further categorize the observability patterns into six distinct patterns.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Log Aggregation&lt;/li&gt;
&lt;li&gt;Application Metrics&lt;/li&gt;
&lt;li&gt;Audit Logging&lt;/li&gt;
&lt;li&gt;Distrubuted Tracing&lt;/li&gt;
&lt;li&gt;Exception Tracking&lt;/li&gt;
&lt;li&gt;Health Check API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the subsequent segment, we will discuss each topic separately.&lt;/p&gt;</description></item><item><title>Patterns For The Design Of Microservices – Part 2</title><link>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-2/</link><pubDate>Mon, 30 Oct 2023 08:58:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-2/</guid><description>&lt;p&gt;In the &lt;a href="https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-1/" title="previous article"&gt;previous article&lt;/a&gt;
, we discussed some of the design patterns employed in the creation of microservices. In this subsequent article, we will delve into the remaining patterns that are commonly utilized in the realm of microservices.&lt;/p&gt;
&lt;img fetchpriority="high" decoding="async" class="size-medium wp-image-102866" src="MSPatterns-700x394.png" alt="Microservice Architecture" width="700" height="394"&gt;
&lt;p&gt;Database Patterns&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;There are seven distinct patterns that further categorize the data management.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Database per Service&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shared Database&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Saga Pattern&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command-Query Responsiblity Segregation (CQRS)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Composition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domain Event&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event Sourcing&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the next section, let&amp;rsquo;s discuss each pattern individually.&lt;/p&gt;</description></item><item><title>Patterns For The Design of Microservices</title><link>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-1/</link><pubDate>Wed, 11 Oct 2023 06:11:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-1/</guid><description>&lt;p&gt;Design patterns plays a pivotal role in designing and solving the commonly occurring problems in software application. It is guiding principle or template to the solve any designing problems.&lt;/p&gt;
&lt;p&gt;It applies to the Microservices architectural style as well. These patterns provide a structured approach to designing and implementing Microservice architectures, ensuring &lt;strong&gt;scalability&lt;/strong&gt; , &lt;strong&gt;maintainability&lt;/strong&gt; , and &lt;strong&gt;reusability&lt;/strong&gt;. By adhering to these design patterns, developers can proficiently tackle the common challenges encountered during Microservices development.&lt;/p&gt;</description></item><item><title>Book Review: Get Your Hands Dirty on Clean Architecture</title><link>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/</link><pubDate>Sat, 23 Sep 2023 12:00:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/</guid><description>&lt;p&gt;&lt;strong&gt;I recently completed reading &amp;ldquo;Get Your Hands Dirty on Clean Architecture&amp;rdquo; authored by Tom Hombergs and I deem it an indispensable resource for developers aspiring to produce clean code and implement the Hexagonal Architecture. Consequently, I have resolved to compose a review to aid numerous individuals who harbor a fervent interest in technology!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; Get Your Hands Dirty on Clean Architecture&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; Tom Hombergs&lt;br&gt;
&lt;strong&gt;Genre:&lt;/strong&gt; Technical, Software Architecture&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/GetYourHandsDirtyOnCleanArchitecture.jpg" alt="CleanArchitecture" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In the constantly changing realm of software development, architectural principles hold a crucial position in determining the triumph and sustainability of a project. The book authored by Tom Hombergs, titled &amp;ldquo;Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java,&amp;rdquo; is an exceptional guide that illuminates the importance of clean architecture, while also offering practical perspectives on its implementation through the Java programming language.&lt;/p&gt;</description></item><item><title>Building Real-Time Applications to Process Wikimedia Streams</title><link>https://foojayio.github.io/website/today/building-real-time-applications-to-process-wikimedia-streams-using-kafka-and-hazelcast/</link><pubDate>Fri, 15 Sep 2023 14:33:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/building-real-time-applications-to-process-wikimedia-streams-using-kafka-and-hazelcast/</guid><description>&lt;p&gt;&lt;strong&gt;In this tutorial, developers, solution architects, and data engineers can learn how to build high-performance, scalable, and fault-tolerant applications that react to real-time data using Kafka and Hazelcast.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We will be using Wikimedia as a real-time data source. Wikimedia provides various streams and APIs (Application Programming Interfaces) to access real-time data about edits and changes made to their projects.&lt;/p&gt;
&lt;p&gt;For example, this source provides a continuous stream of updates on recent changes, such as new edits or additions to Wikipedia articles. Developers and solution architects often use such streams to monitor and analyze the activity on Wikimedia projects in real-time or to build applications that rely on this data, like this tutorial.&lt;/p&gt;</description></item><item><title>How we developed the Eclipse OpenJ9 CRIU Support for fast Java start-up</title><link>https://foojayio.github.io/website/today/how-we-developed-the-eclipse-openj9-criu-support-for-fast-java-startup/</link><pubDate>Wed, 19 Jul 2023 15:33:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-we-developed-the-eclipse-openj9-criu-support-for-fast-java-startup/</guid><description>&lt;p&gt;&lt;strong&gt;Checkpointing and restoring the JVM makes applications run faster because all the startup work is done before deployment. This means that in serverless cloud applications, the end-user of the application perceives no delay when the application starts. You can try it out now with your own apps on Open Liberty with Eclipse OpenJ9. But if you want to know more, here&amp;rsquo;s how we tackled the technical challenges of developing the Eclipse OpenJ9 CRIU Support.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 10: Service Discovery with Eureka</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-10-service-discovery-with-eureka/</link><pubDate>Thu, 13 Jul 2023 06:39:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-10-service-discovery-with-eureka/</guid><description>&lt;p&gt;Gaining complexity in a microservices system certainly isn&amp;rsquo;t for the faint of heart (though neither is complexity in monoliths!).&lt;/p&gt;
&lt;p&gt;When there are many services that need to communicate with one another, we might need to coordinate multiple services communicating with multiple other services.&lt;/p&gt;
&lt;p&gt;We also might code for varying environments such as local, development server, or the cloud.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How do services know where to find one another?&lt;/li&gt;
&lt;li&gt;How can we avoid problems when a service is unavailable?&lt;/li&gt;
&lt;li&gt;How do we handle requests when we scale up or down certain parts of our system?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is where something like Spring Cloud Netflix Eureka comes into play.&lt;/p&gt;</description></item><item><title>Foojay Podcast #26: The Future of Source Control and CI/CD</title><link>https://foojayio.github.io/website/today/foojay-podcast-26/</link><pubDate>Mon, 26 Jun 2023 08:35:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-26/</guid><description>&lt;p&gt;As developers, we like to automate the boring parts of our job. This automation includes the source control system, build pipelines, and code analysis tools.&lt;/p&gt;
&lt;p&gt;In recent decades, we have seen evolutions from CVS to Subversion to Git. Is this the endpoint? Did we find the holy grail in version control? Or what evolutions are waiting for us?&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s find out together with these fantastic guests&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This is the final episode of season 2 of the Foojay Podcast. See you in September for the start of our new season with more JUGs, the launch of Java 21, and much more!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Foojay Podcast #23: Java Profiling and Performance</title><link>https://foojayio.github.io/website/today/foojay-podcast-23/</link><pubDate>Mon, 22 May 2023 10:23:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-23/</guid><description>&lt;p&gt;How do you get the maximum performance out of your Java application?&lt;/p&gt;
&lt;p&gt;And how to use profiling to find the bottlenecks?&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s learn all about it in this podcast, with Heinz Kabutz, Marcus Lagergren, Chris Newland, and Frank Delporte!&lt;/p&gt;
&lt;p&gt;Java profiling is a crucial technique for measuring and improving the performance of applications.&lt;/p&gt;
&lt;p&gt;It helps identify bottlenecks, memory leaks, and other application performance issues.&lt;/p&gt;
&lt;p&gt;There are various challenges with using Java profiling, and the need for profiling depends on the complexity of the application and the performance requirements.&lt;/p&gt;</description></item><item><title>Managing Data Residency: Concepts &amp; Theory</title><link>https://foojayio.github.io/website/today/managing-data-residency-concepts-theory/</link><pubDate>Tue, 16 May 2023 09:18:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/managing-data-residency-concepts-theory/</guid><description>&lt;p&gt;Cloud computing has opened a Pandora&amp;rsquo;s Box of many original issues compared to sound old on-premise systems. I believe that chief among them is &lt;strong&gt;Data Residency&lt;/strong&gt;, or Data Location.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Data localization or data residency law requires data about a nation&amp;rsquo;s citizens or residents to be collected, processed, and/or stored inside the country, often before being transferred internationally. Such data is usually transferred only after meeting local privacy or data protection laws, such as giving the user notice of how the information will be used and obtaining their consent.&lt;/p&gt;</description></item><item><title>Developer vs. ChatGPT Part I: Writing a Spring Boot Microservice</title><link>https://foojayio.github.io/website/today/java-developer-vs-chatgpt-part-i-writing-a-spring-boot-microservice/</link><pubDate>Thu, 27 Apr 2023 15:25:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-developer-vs-chatgpt-part-i-writing-a-spring-boot-microservice/</guid><description>&lt;h3 id="h3-0-we-pit-a-seasoned-java-developer-against-the-all-knowing-generative-ai-to-find-out-once-and-for-all-can-an-ai-generate-a-java-microservice-end-to-end"&gt;We pit a seasoned Java developer against the all-knowing generative AI to find out once and for all: Can an AI generate a Java microservice end-to-end?&lt;/h3&gt;
&lt;p&gt;There&amp;rsquo;s a lot of buzz around Generative AI tools for code generation. It&amp;rsquo;s no secret that the future of developer productivity goes alongside tools such as &lt;a href="https://github.com/features/copilot" target="_blank" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;
 and &lt;a href="https://openai.com/blog/chatgpt" target="_blank" rel="noopener noreferrer"&gt;OpenAI&amp;rsquo;s ChatGPT&lt;/a&gt;
 to enable us, developers, to produce code better and faster. These tools can learn from our existing code and suggest new code based on the desired functionality, most importantly, they can even write documentation and tests!&lt;/p&gt;</description></item><item><title>How to Automatically Create Microservices Architecture Diagrams</title><link>https://foojayio.github.io/website/today/automatically-creating-microservices-architecture-diagrams/</link><pubDate>Thu, 20 Apr 2023 08:01:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/automatically-creating-microservices-architecture-diagrams/</guid><description>&lt;p&gt;In application development, microservices is an architectural style where larger applications are structured as a collection of smaller, independent, yet interconnected services.&lt;/p&gt;
&lt;p&gt;While this allows for highly maintainable and testable applications (as each service can be maintained independent of the larger application), the problem with this method is the inherent complexity of interactions between microservices.&lt;/p&gt;
&lt;p&gt;It can be difficult for developers and team members to visualise how these microservices are connected to each other. We have been looking for ways to produce architectural diagrams that illustrate these interactions.&lt;/p&gt;</description></item><item><title>Event Driven Hello World Program</title><link>https://foojayio.github.io/website/today/event-driven-hello-world-program/</link><pubDate>Thu, 02 Mar 2023 16:34:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/event-driven-hello-world-program/</guid><description>&lt;p&gt;&lt;strong&gt;Event-driven microservices&lt;/strong&gt; can be straightforward to describe before they are implemented, tested and maintained.&lt;/p&gt;
&lt;p&gt;They are also highly responsive to new information in real time, with latencies in Java of below 10 microseconds 99.99% of the time depending on the functionality of the small independently deployable microservice.&lt;/p&gt;
&lt;p&gt;In this introductory article, we use an example &lt;a href="https://chronicle.software/how-to-develop-event-driven-architectures/" title="event-driven" target="_blank" rel="noopener noreferrer"&gt;event-driven&lt;/a&gt;
&lt;a href="https://en.wikipedia.org/wiki/%22Hello,_World!%22_program" title=" Hello World" target="_blank" rel="noopener noreferrer"&gt;Hello World&lt;/a&gt;
 program (a programming paradigm where the program flow is determined by events) to step through &lt;a href="https://chronicle.software/how-bdd-works-well-with-eda/" title="behaviour-driven development" target="_blank" rel="noopener noreferrer"&gt;behaviour-driven development&lt;/a&gt;
, where we describe the behaviour the business needs first as test data, and writing a very simple &lt;a href="https://en.wikipedia.org/wiki/Microservices" title="microservice" target="_blank" rel="noopener noreferrer"&gt;microservice&lt;/a&gt;
 which turns input events like this:&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 9: Docker compose all the things</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-9-docker-compose-all-the-things/</link><pubDate>Sun, 26 Feb 2023 10:02:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-9-docker-compose-all-the-things/</guid><description>&lt;p&gt;Our microservices project contains quite a few pieces now.&lt;/p&gt;
&lt;p&gt;We have two databases, three API services, a user-view service for books, and a service to host our configuration.&lt;/p&gt;
&lt;p&gt;With so many pieces to manage, it would be nice to have something that orchestrates the individual services into a system, such as Docker Compose.&lt;/p&gt;
&lt;p&gt;Back in our &lt;a href="https://foojayio.github.io/website/today/journeys-in-java-level-5-building-an-empire-of-microservices/"&gt;Level 5&lt;/a&gt;
 rendition, we did exactly this for our smaller version of the project.&lt;/p&gt;
&lt;p&gt;Now that we have expanded our services, we need to add those new pieces into the existing Docker Compose management umbrella.&lt;/p&gt;</description></item><item><title>The evolution of APIs: From RESTful to Event-Driven</title><link>https://foojayio.github.io/website/today/the-evolution-of-apis-from-restful-to-event-driven/</link><pubDate>Thu, 23 Feb 2023 08:23:25 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-evolution-of-apis-from-restful-to-event-driven/</guid><description>&lt;h2 id="h2-0-history-of-services-and-apis"&gt;History of Services and APIs&lt;/h2&gt;
&lt;p&gt;Enterprise application landscapes consist of inter-connected and inter-related applications.&lt;/p&gt;
&lt;p&gt;The world of application integrations has been constantly evolving over several years.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/the-evolution-of-apis-from-restful-to-event-driven/evol_APIs-700x284.png" alt="Evolution of APIs" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Over time, we&amp;rsquo;ve observed a trend towards more modular and data model-focused integration components, and an increased emphasis on real-time processing.&lt;/p&gt;
&lt;p&gt;Beginning with EJBs in the 90s, progressing to Webservices and Service-Oriented Architecture (SOA) in the early 2000s, and finally evolving to domain-specific microservices, we are seeing a continual progression towards more efficient and effective integration solutions.&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 8: Add MongoDB to Spring Cloud Config</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-8-add-mongodb-to-spring-cloud-config/</link><pubDate>Thu, 09 Feb 2023 16:56:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-8-add-mongodb-to-spring-cloud-config/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/journeys-in-java-level-7-externalize-microservice-configuration/"&gt;our last article&lt;/a&gt;
, we used Spring Cloud Config to provide database credentials to a microservice application connecting to a cloud-hosted Neo4j database. This post will backport this concept to our existing MongoDB database instance and its related microservices.&lt;/p&gt;
&lt;p&gt;We will add our MongoDB credentials to the config server, so that it will be the central place for both our Neo4j and MongoDB database access. However, each service only has access to the credentials that it needs to operate, which provides some level of security through &amp;ldquo;separation of concerns&amp;rdquo; (versus universal access).&lt;/p&gt;</description></item><item><title>How to Run a Java Application with CRaC in a Docker Container</title><link>https://foojayio.github.io/website/today/how-to-run-a-java-application-with-crac-in-a-docker-container/</link><pubDate>Wed, 01 Feb 2023 09:41:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-run-a-java-application-with-crac-in-a-docker-container/</guid><description>&lt;p&gt;CRaC (Coordinated Restore at Checkpoint) is &lt;a href="https://openjdk.org/projects/crac/" target="_blank" rel="noopener noreferrer"&gt;an OpenJDK project&lt;/a&gt;
 that was &lt;a href="https://www.azul.com/blog/aws-snapstart-builds-momentum-for-the-crac-api/" target="_blank" rel="noopener noreferrer"&gt;developed by Azul&lt;/a&gt;
 to solve the problem of &amp;ldquo;slow&amp;rdquo; startup times of the Java Virtual Machine in a microservice environment.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The most up-to-date guidelines can be found on &amp;ldquo;&lt;a href="https://docs.azul.com/core/crac/crac-guidelines.html#running-crac-in-a-virtualized-environment-docker" target="_blank" rel="noopener noreferrer"&gt;Coordinated Restore at Checkpoint Usage Guidelines&lt;/a&gt;
&amp;rdquo; in the Azul Docs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When the JVM runs your application code, it does things like interpreting, compiling and optimizing code to make your application run as fast as possible under the given workload. This is great but can take some time and especially when you run short lived microservices you don&amp;rsquo;t want to wait until the JVM has produced the most optimized code.&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 7: Externalize Microservice Configuration</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-7-externalize-microservice-configuration/</link><pubDate>Mon, 30 Jan 2023 15:43:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-7-externalize-microservice-configuration/</guid><description>&lt;p&gt;Our decided next step for this project takes us in a new direction by adding externalized configuration for our applications.&lt;/p&gt;
&lt;p&gt;We already saw how to do something similar with &lt;a href="https://jmhreif.com/blog/microservices-level5/" target="_blank" rel="noopener noreferrer"&gt;MongoDB database credentials in Docker Compose&lt;/a&gt;
 to access a local database container, but what do we do when the database is hosted on public cloud or contains sensitive data?&lt;/p&gt;
&lt;p&gt;We probably don&amp;rsquo;t want to publish our credentials anywhere or even prevent accidental publishing.&lt;/p&gt;</description></item><item><title>Spring Boot Annotation Reference-01/b</title><link>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-b/</link><pubDate>Fri, 06 Jan 2023 09:54:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-b/</guid><description>&lt;p&gt;&lt;strong&gt;In the second part of my article series on Spring Boot Annotations, we focus on REST and Spring Stereotype Annotations.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In continuation of &lt;a href="https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-a/"&gt;part 01/a of this article&lt;/a&gt;
, let&amp;rsquo;s continue our Spring Boot Annotations journey.&lt;/p&gt;
&lt;p&gt;What percentage (depth and extent) of Spring Boot Annotations do you think you really know? This includes annotations in all their glory and the power that they bring via all of their options. I am sure whatever your answer may be, you will appreciate this quote from Albert Einstein: &amp;ldquo;The more I learn, the more I realize how much I don&amp;rsquo;t know.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Spring Modulith: Have We Reached Modularity Maturity?</title><link>https://foojayio.github.io/website/today/spring-modulith-modularity-maturity/</link><pubDate>Thu, 29 Dec 2022 07:07:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-modulith-modularity-maturity/</guid><description>&lt;p&gt;One of the main reasons to design microservices is that they enforce &lt;a href="https://martinfowler.com/articles/microservice-trade-offs.html#boundaries" target="_blank" rel="noopener noreferrer"&gt;strong module boundaries&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;However, the cons of microservices are so huge that it&amp;rsquo;s like chopping off your right hand to learn to write with the left one; there are more manageable (and less painful!) ways to achieve the same result.&lt;/p&gt;
&lt;p&gt;Even since the microservices craze started, some cooler heads have prevailed.&lt;/p&gt;
&lt;p&gt;In particular, &lt;a href="https://twitter.com/odrotbohm" target="_blank" rel="noopener noreferrer"&gt;Oliver Drotbohm&lt;/a&gt;
, a developer on the Spring framework, has been a long-time proponent of the &lt;a href="https://github.com/moduliths/moduliths" target="_blank" rel="noopener noreferrer"&gt;moduliths&lt;/a&gt;
 alternative.&lt;/p&gt;</description></item><item><title>Spring Boot Annotation Reference - 01/a</title><link>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-a/</link><pubDate>Thu, 22 Dec 2022 09:57:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-a/</guid><description>&lt;p&gt;In 2018, I was introduced to the topic of Microservices and Spring Boot via a formal training, during my brief stint as a Senior Architect in Manila, Philippines.&lt;/p&gt;
&lt;p&gt;Though I had worked on a &amp;lsquo;similar architecture&amp;rsquo; way back in 2007-&amp;lsquo;08 while working as a Software Engineer at Symantec - I found the idea of the Uber JAR really exciting. Also, since it will now be enforced via the most popular framework brings in more possibilities.&lt;/p&gt;</description></item><item><title>EJB support in Piranha via CDI</title><link>https://foojayio.github.io/website/today/ejb-support-in-piranha-via-cdi/</link><pubDate>Tue, 15 Nov 2022 14:14:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/ejb-support-in-piranha-via-cdi/</guid><description>&lt;p&gt;Enterprise Beans was once the face of Java EE, but as we &lt;a href="https://foojayio.github.io/website/today/the-future-of-ejb/"&gt;discussed in the previous article&lt;/a&gt;
, is currently de-emphasised in Jakarta EE.&lt;/p&gt;
&lt;p&gt;However, since there&amp;rsquo;s so much existing code using Enterprise Beans, a certain level of support is still desired.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://piranha.cloud" target="_blank" rel="noopener noreferrer"&gt;Piranha Cloud&lt;/a&gt;
, a relatively new runtime supporting Jakarta EE, takes a somewhat novel approach to Enterprise Beans. Instead of implementing a separate container, Piranha Cloud, via the OmniBeans project, maps Enterprise Beans annotations to equivalent functionality in CDI itself, or to technologies in Jakarta EE leveraging CDI (such as Jakarta Transactions).&lt;/p&gt;</description></item><item><title>Low Latency Crypto Trading Systems with Java and Chronicle</title><link>https://foojayio.github.io/website/today/low-latency-crypto-trading-systems-using-java-and-chronicle-services/</link><pubDate>Tue, 18 Oct 2022 14:59:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/low-latency-crypto-trading-systems-using-java-and-chronicle-services/</guid><description>&lt;p&gt;Cryptocurrency trading is an emerging market with its own rules.&lt;/p&gt;
&lt;p&gt;However, when it comes to the need for low-latency &lt;a href="https://en.wikipedia.org/wiki/Arbitrage" title="arbitrage" target="_blank" rel="noopener noreferrer"&gt;arbitrage&lt;/a&gt;
, that is, being able to react rapidly to changing market prices and placing orders ahead of the competition, there are lessons we can learn from optimizing classic trading systems.&lt;/p&gt;
&lt;p&gt;Chronicle Software has a successful track record of designing low-latency trading products. This background enables it to provide optimum performance solutions for Crypto trading systems.&lt;/p&gt;</description></item><item><title>MicroProfile Config for Java SE</title><link>https://foojayio.github.io/website/today/microprofile-config-for-java-se/</link><pubDate>Thu, 13 Oct 2022 16:10:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/microprofile-config-for-java-se/</guid><description>&lt;p&gt;The &lt;a href="https://microprofile.io/microprofile-config/" target="_blank" rel="noopener noreferrer"&gt;MicroProfile Config&lt;/a&gt;
 specification is one of those attempts to create a specification around application configuration for the Java Enterprise world. In the past, there were already some other attempts within Java EE to define this specification for Java EE, but they were never finalised.&lt;/p&gt;
&lt;p&gt;Currently, another attempt is in progress with Jakarta EE Config but since MicroProfile is closely related to Jakarta EE, it is the best available solution today. That is the reason why almost all Jakarta EE runtimes also support MicroProfile Config and the other specifications of the MicroProfile umbrella.&lt;/p&gt;</description></item><item><title>Unified Event-Driven Architecture for the Cloud Native Enterprise</title><link>https://foojayio.github.io/website/today/unified-event-driven-architecture-for-the-cloud-native-enterprise/</link><pubDate>Thu, 06 Oct 2022 19:58:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/unified-event-driven-architecture-for-the-cloud-native-enterprise/</guid><description>&lt;p&gt;CTOs and enterprise architects have long recognized the importance of event-driven architectures (EDA). While once considered purely a technology concern, the foresight of organizations that have invested in EDA has become readily apparent as the world has shifted around us. In the past decade, we&amp;rsquo;ve witnessed changes in nearly every aspect of our technological worlds, and the vast majority of those have been affected in some way by a move toward event-driven, real-time processing.&lt;/p&gt;</description></item><item><title>Starting Docker Desktop with Spring Boot</title><link>https://foojayio.github.io/website/today/starting-docker-desktop-with-spring-boot/</link><pubDate>Fri, 30 Sep 2022 05:37:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/starting-docker-desktop-with-spring-boot/</guid><description>&lt;br /&gt;
&lt;p&gt;I came across Docker Desktop for the first time about three years ago, when I was working as a Principal Architect (Strategic R &amp;amp; D) on the Microservices Reference Architecture for a product development organization.&lt;/p&gt;
&lt;p&gt;At that time, when I was working on my corporate laptop - It became a tedious task to configure virtualization and settings to get it to work. Once I got it running smoothly, I realized that the memory requirements required to run it is quite high. At times, I found it tough to use my laptop for daily development with it running. It was also because I was working on microservices and had almost 6+ spring boot applications running.&lt;/p&gt;</description></item><item><title>Reclaiming Persistent Volumes in Kubernetes</title><link>https://foojayio.github.io/website/today/reclaiming-persistent-volumes-in-kubernetes/</link><pubDate>Wed, 28 Sep 2022 09:55:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/reclaiming-persistent-volumes-in-kubernetes/</guid><description>&lt;p&gt;&lt;a href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt;
 is a widely used open-source container management platform for running stateless, containerized applications at scale. In recent years, Kubernetes has been extended to also support stateful workloads, including databases and key-value stores.{#43de}&lt;/p&gt;
&lt;p&gt;There are three important API resources when it comes to managing stateful applications in Kubernetes:{#8e8a}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/" target="_blank" rel="noopener noreferrer"&gt;StatefulSet&lt;/a&gt;
 (STS)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes/" target="_blank" rel="noopener noreferrer"&gt;PersistentVolume&lt;/a&gt;
 (PV)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/concepts/storage/storage-classes/" target="_blank" rel="noopener noreferrer"&gt;PersistentVolumeClaim&lt;/a&gt;
 (PVC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;STSs schedule stateful pods, which can claim PVs through PVCs and mount them as volumes. Once a PV is claimed by an STS replica, Kubernetes will make sure that the volume stays with the replica, even if the pod gets rescheduled.{#e855}&lt;/p&gt;</description></item><item><title>What is MicroProfile?</title><link>https://foojayio.github.io/website/today/what-is-microprofile/</link><pubDate>Thu, 22 Sep 2022 09:03:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/what-is-microprofile/</guid><description>&lt;p&gt;The Java programming language can be enhanced with specifications. An specification is a baseline platform definition - a framework - to guide concrete implementations.&lt;/p&gt;
&lt;p&gt;One of these specifications is called MicroProfile.&lt;/p&gt;
&lt;p&gt;But what is MicroProfile specification, what is it used for and why might you need it?&lt;/p&gt;
&lt;p&gt;This article explains all!&lt;/p&gt;
&lt;h2 id="h2-0-what-is-microprofile"&gt;What Is MicroProfile?&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://microprofile.io/" target="_blank" rel="noopener noreferrer"&gt;MicroProfile&lt;/a&gt;
 specification is a set of Enterprise Java APIs and technologies, designed to help with the challenge of building microservices architectures in Java.&lt;/p&gt;</description></item><item><title>Multi-cluster Cassandra with Google Kubernetes Engine (Pt. 2)</title><link>https://foojayio.github.io/website/today/multi-cluster-cassandra-deployment-with-google-kubernetes-engine-pt-2/</link><pubDate>Thu, 08 Sep 2022 17:20:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/multi-cluster-cassandra-deployment-with-google-kubernetes-engine-pt-2/</guid><description>&lt;p&gt;This is the second in a series of posts examining patterns for using K8ssandra to create Cassandra clusters with different deployment topologies.&lt;/p&gt;
&lt;p&gt;In the &lt;a href="https://k8ssandra.io/blog/tutorials/deploy-a-multi-datacenter-apache-cassandra-cluster-in-kubernetes/" target="_blank" rel="noopener noreferrer"&gt;first article&lt;/a&gt;
 in this series, we looked at how you could create a Cassandra cluster with two datacenters in a single cloud region, using separate Kubernetes namespaces in order to isolate workloads. For example, you might want to create a secondary Cassandra datacenter to isolate a read-heavy analytics workload from the datacenter supporting your main application.&lt;/p&gt;</description></item><item><title>Running your Database on OpenShift and CodeReady Containers</title><link>https://foojayio.github.io/website/today/running-your-database-on-openshift-and-codeready-containers/</link><pubDate>Tue, 06 Sep 2022 09:43:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/running-your-database-on-openshift-and-codeready-containers/</guid><description>&lt;p&gt;Let&amp;rsquo;s take an introductory run-through of setting up your database on OpenShift, using your own hardware and RedHat&amp;rsquo;s CodeReady Containers.&lt;/p&gt;
&lt;p&gt;CodeReady Containers is a great way to run OpenShift K8s locally, ideal for development and testing. The steps in this blog post will require a machine, laptop or desktop, of decent capability; preferably quad CPUs and 16GB+ RAM.&lt;/p&gt;
&lt;h2 id="h2-0-download-and-install-redhat-s-codeready-containers"&gt;Download and Install RedHat&amp;rsquo;s CodeReady Containers&lt;/h2&gt;
&lt;p&gt;Download and install RedHat&amp;rsquo;s CodeReady Containers as described in &lt;a href="https://developers.redhat.com/blog/2019/09/05/red-hat-openshift-4-on-your-laptop-introducing-red-hat-codeready-containers" target="_blank" rel="noopener noreferrer"&gt;Red Hat OpenShift 4 on your laptop: Introducing Red Hat CodeReady Containers&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Can Java/Jakarta EE do Microservices?</title><link>https://foojayio.github.io/website/today/can-java-jakarta-ee-do-microservices/</link><pubDate>Thu, 01 Sep 2022 12:43:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/can-java-jakarta-ee-do-microservices/</guid><description>&lt;p&gt;In this myth-busting webinar, Steve Millidge (founder of &lt;a href="https://www.payara.fish/dismiss-the-myths/" target="_blank" rel="noopener noreferrer"&gt;Payara&lt;/a&gt;
), demonstrates that Java/Jakarta EE can do microservices.&lt;/p&gt;
&lt;p&gt;In this video, Steve explains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What are microservices?&lt;/li&gt;
&lt;li&gt;How JAX-RS API makes it easy to develop applications that use the REST architecture&lt;/li&gt;
&lt;li&gt;Deployment models for microservices&lt;/li&gt;
&lt;li&gt;How to use MicroProfile with &lt;a href="https://jakarta.ee/" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;12 factor apps with Jakarta EE&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;ve been hearing that Java/Jakarta EE is only for monolithic architecture, watch this video to see why that&amp;rsquo;s not true and how you can continue using your existing development skills to modernize your application development with microservices.&lt;/p&gt;</description></item><item><title>Google Remote Procedure Call (gRPC) Example in Payara Server</title><link>https://foojayio.github.io/website/today/google-remote-procedure-call-grpc-example-in-payara-server/</link><pubDate>Thu, 25 Aug 2022 10:09:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/google-remote-procedure-call-grpc-example-in-payara-server/</guid><description>&lt;p&gt;Google Remote Procedure Call, or gRPC, is an open source Remote Procedure Call (RPC) framework focused on high performance and is portable to any environment.&lt;/p&gt;
&lt;p&gt;It is an alternative to REST, deemed by many as more efficient.&lt;/p&gt;
&lt;p&gt;After one of our customers requested it, the extension became available in our April 2022 Payara Community and Enterprise releases: 5.2022.2 and 5.38.0.&lt;/p&gt;
&lt;p&gt;After providing a brief overview of the gRPC extension in Payara in our &lt;a href="https://blog.payara.fish/whats-new-in-the-april-2022-payara-platform-release" target="_blank" rel="noopener noreferrer"&gt;April release blog,&lt;/a&gt;
 here we provide more technical details about how to use it in Payara Community, where you will build the module yourself and place it in the modules directory.&lt;/p&gt;</description></item><item><title>Backend-for-Frontend: The Demo</title><link>https://foojayio.github.io/website/today/backend-for-frontend-the-demo/</link><pubDate>Mon, 15 Aug 2022 18:29:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/backend-for-frontend-the-demo/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/backend-for-front-end/"&gt;one of my earlier posts&lt;/a&gt;
, I described the Backend-for-Frontend pattern.&lt;/p&gt;
&lt;p&gt;In short, it offers a single facade over multiple backend parts.&lt;/p&gt;
&lt;p&gt;Moreover, it provides each client type, &lt;em&gt;e.g.,&lt;/em&gt; desktop or mobile, exactly the data that it needs and not more in the format required by this client type.&lt;/p&gt;
&lt;h2 id="h2-0-the-use-case"&gt;The use-case&lt;/h2&gt;
&lt;p&gt;Imagine the following use-case.&lt;/p&gt;
&lt;p&gt;In an e-commerce shop, the home page should display multiple &lt;em&gt;unrelated&lt;/em&gt; data at once.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Products: The business could configure which items are shown on the home page. They could be generic, &amp;ldquo;hero&amp;rdquo; products, or personalized, products that the customer ordered previously.&lt;/li&gt;
&lt;li&gt;News: Again, the newsfeed could be generic or personalized.&lt;/li&gt;
&lt;li&gt;Profile-related information&lt;/li&gt;
&lt;li&gt;Cart content&lt;/li&gt;
&lt;li&gt;Non-business related information, such as build number, build timestamp, version, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Depending on the client, we want more or less data. For example, on a client with limited display size, we probably want to limit a product to its name and its image. On the other hand, on desktop, we are happy to display both the above, plus a catch phrase (or a more catchy - and longer - name) and the full description.&lt;/p&gt;</description></item><item><title>Deploy a Multi-Datacenter Cassandra Cluster in Kubernetes</title><link>https://foojayio.github.io/website/today/deploy-a-multi-datacenter-apache-cassandra-cluster-in-kubernetes-pt-1/</link><pubDate>Wed, 10 Aug 2022 08:27:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/deploy-a-multi-datacenter-apache-cassandra-cluster-in-kubernetes-pt-1/</guid><description>&lt;p&gt;The &lt;a href="https://k8ssandra.io/get-started/" target="_blank" rel="noopener noreferrer"&gt;Get Started&lt;/a&gt;
 examples on the K8ssandra site are primarily concerned with spinning up a single Apache Cassandra datacenter in a single Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;However, there are many situations that can benefit from other deployment options.&lt;/p&gt;
&lt;p&gt;In this series of articles, we&amp;rsquo;ll examine different deployment patterns and show how to implement them using K8ssandra.&lt;/p&gt;
&lt;h2 id="h-flexible-topologies-with-cassandra"&gt;Flexible topologies with Cassandra&lt;/h2&gt;
&lt;p&gt;From its earliest days, Cassandra has included the ability to assign nodes to datacenters and racks. A rack was originally conceived as mapping to a single rack of servers connected to shared resources, like power, network, and cooling.&lt;/p&gt;</description></item><item><title>Write Your Own Service Discovery Client for Apache APISIX</title><link>https://foojayio.github.io/website/today/service-discovery-client-apache-apisix/</link><pubDate>Mon, 01 Aug 2022 10:27:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/service-discovery-client-apache-apisix/</guid><description>&lt;p&gt;API Gateways in general, and &lt;a href="https://apisix.apache.org/" target="_blank" rel="noopener noreferrer"&gt;Apache APISIX&lt;/a&gt;
 in particular, provide a single entry point into one&amp;rsquo;s information system.&lt;/p&gt;
&lt;p&gt;This architecture allows for managing load balancing and failover over similar nodes.&lt;/p&gt;
&lt;p&gt;For example, here&amp;rsquo;s how you can create a route balanced over two nodes in Apache APISIX:&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="bash"&gt;curl http://localhost:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -i -d '{
 "uri": "/*",
 "upstream": {
 "type": "roundrobin",
 "nodes": {
 "192.168.0.1:80": 1, # 1
 "192.168.0.2:80": 1 # 1
 }
 }
}'&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;Every request has a 50/50 chance of being sent to either node&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It worked for a long time, but in this day and age, nodes are probably not pets but cattle: they come, and they go. Hence, it&amp;rsquo;s essential to dynamically update the nodes list when it happens.&lt;/p&gt;</description></item><item><title>Discussing Backend For Front-end</title><link>https://foojayio.github.io/website/today/backend-for-front-end/</link><pubDate>Mon, 25 Jul 2022 14:49:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/backend-for-front-end/</guid><description>&lt;p&gt;In the good old days, applications were simple. A browser sent a request to a webapp endpoint; the latter fetched data from a database and returned the response.&lt;/p&gt;
&lt;p&gt;The rise of mobile clients and integrations with other apps upset this simplicity. I want to discuss one solution to handle the complexity in this post.&lt;/p&gt;
&lt;h2 id="h2-0-the-increased-complexity-of-system-architecture"&gt;The increased complexity of system architecture&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s first model the above simple architecture.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/backend-for-front-end/webapp.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Mobile clients changed this approach. The display area of mobile clients is smaller: just smaller for tablets and much smaller for phones.&lt;/p&gt;</description></item><item><title>Kubernetes and the Data Centre: Is Full Scale Migration Possible?</title><link>https://foojayio.github.io/website/today/kubernetes-and-the-data-centre-is-full-scale-migration-possible/</link><pubDate>Thu, 21 Jul 2022 13:48:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/kubernetes-and-the-data-centre-is-full-scale-migration-possible/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/kubernetes-and-the-data-centre-is-full-scale-migration-possible/kubernetes-genric-169jpeg_51633.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Data centres used to be exactly that - the centres of our data worlds, where all information, files and records would be kept and controlled.&lt;/p&gt;
&lt;p&gt;Today, that is no longer the case. More companies are moving to cloud services, whether this is dialling down on their traditional on-premises environments or never setting them up in the first place.&lt;/p&gt;
&lt;p&gt;This is not to say that data centres will be wholly abandoned for cloud, but the mix will continue to evolve and be very different to today. Gartner &lt;a href="https://www.gartner.com/smarterwithgartner/the-everywhere-enterprise-a-gartner-qa-with-david-cappuccio/" target="_blank" rel="noopener noreferrer"&gt;predicts&lt;/a&gt;
 that by 2025, 85% of infrastructure strategies will take a more hybrid approach, integrating on-premises, colocation, cloud and edge delivery options, compared with 20% in 2020.&lt;/p&gt;</description></item><item><title>Why a Cloud-Native Database Must Run on K8s</title><link>https://foojayio.github.io/website/today/why-a-cloud-native-database-must-run-on-k8s/</link><pubDate>Tue, 19 Jul 2022 17:44:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-a-cloud-native-database-must-run-on-k8s/</guid><description>&lt;p&gt;We&amp;rsquo;ve been talking about migrating workloads to the cloud for a long time, but a look at the application portfolios of many IT organizations demonstrates that there&amp;rsquo;s still a lot of work to be done. In many cases, challenges with persisting and moving data in clouds continue to be the key limiting factor slowing cloud adoption, despite the fact that databases in the cloud have been available for years.&lt;/p&gt;
&lt;p&gt;For this reason, there has been a surge of recent interest in data infrastructure that is designed to take maximum advantage of the benefits that cloud computing provides. A &lt;a href="https://k8ssandra.io/blog/2021/03/23/the-search-for-a-cloud-native-database/" target="_blank" rel="noopener noreferrer"&gt;cloud-native database&lt;/a&gt;
 is one that achieves the goals of scalability, elasticity, resiliency, observability and automation; the &lt;a href="https://k8ssandra.io/" target="_blank" rel="noopener noreferrer"&gt;K8ssandra&lt;/a&gt;
 project is a great example. It packages Apache &lt;a href="https://containerjournal.com/?s=Cassandra" target="_blank" rel="noopener noreferrer"&gt;Cassandra&lt;/a&gt;
 and supporting tools into a production-ready Kubernetes deployment.&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 6: Build a Neo4j Microservice</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-6-build-a-neo4j-microservice/</link><pubDate>Wed, 13 Jul 2022 15:13:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-6-build-a-neo4j-microservice/</guid><description>&lt;p&gt;For our next adventure in Java microservices, we want to expand our system for book review data.&lt;/p&gt;
&lt;p&gt;While books and authors are well-suited for a document database such as MongoDB, once you add reviews to the mix, the importance of the relationships makes this project better suited for a graph database.&lt;/p&gt;
&lt;p&gt;This way, we can utilize relationships between the different entities to improve analysis based on the structure of the connections.&lt;/p&gt;</description></item><item><title>Available Now - gRPC for Apache Cassandra</title><link>https://foojayio.github.io/website/today/available-now-grpc-for-apache-cassandra/</link><pubDate>Thu, 07 Jul 2022 07:38:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/available-now-grpc-for-apache-cassandra/</guid><description>&lt;p&gt;&lt;strong&gt;Build microservices easily with the NoSQL standard database&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are like most developers, you are embracing applications built using microservices and a NoSQL database. There are many good reasons: faster time to market, lower total cost of ownership, better performance, less downtime, and easy scalability.&lt;/p&gt;
&lt;p&gt;Creating cloud-native applications is hard because microservices are often written in different languages, database drivers have a maintenance burden, or familiar HTTP APIs lack the performance needed.&lt;/p&gt;</description></item><item><title>K8ssandra ramps up security features to match Kubernetes’ best practices</title><link>https://foojayio.github.io/website/today/k8ssandra-ramps-up-security-features-to-match-kubernetes-best-practices/</link><pubDate>Thu, 23 Jun 2022 19:54:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/k8ssandra-ramps-up-security-features-to-match-kubernetes-best-practices/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/k8ssandra-ramps-up-security-features-to-match-kubernetes-best-practices/1_qz4yqblkLUoJDL3t8xrsSg-1024x478.jpeg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;New security features are coming to the open-source data platform: K8ssandra. The goal? To align even more with the security best practices of Kubernetes. Here&amp;rsquo;s an introduction to the platform&amp;rsquo;s security mission and an update on current initiatives.&lt;/em&gt;{#e3b8}&lt;/p&gt;
&lt;p&gt;The security defaults applied by &lt;a href="https://k8ssandra.io/" target="_blank" rel="noopener noreferrer"&gt;K8ssandra&lt;/a&gt;
 are about to get even more aligned with&lt;a href="https://kubernetes.io/docs/concepts/security/overview/" target="_blank" rel="noopener noreferrer"&gt;Kubernetes&amp;rsquo; security practices&lt;/a&gt;
. In an upcoming release of K8ssandra, pod and container security configurations give users full customization capabilities and default values out of the box.{#c373}&lt;/p&gt;</description></item><item><title>Managing Distributed Applications in Kubernetes Using Cilium and Istio with Helm and Operator for Deployment</title><link>https://foojayio.github.io/website/today/managing-distributed-applications-in-kubernetes-using-cilium-and-istio-with-helm-and-operator-for-deployment/</link><pubDate>Tue, 07 Jun 2022 14:51:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/managing-distributed-applications-in-kubernetes-using-cilium-and-istio-with-helm-and-operator-for-deployment/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/managing-distributed-applications-in-kubernetes-using-cilium-and-istio-with-helm-and-operator-for-deployment/1_i26lEM7Wl5JA7FIMlhtKNA-1024x576.jpeg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post will show you the benefits of managing your distributed applications with Kubernetes in cross-cloud, multi-cloud, and hybrid cloud scenarios using Cilium and Istio with Helm and Operator for deployment.&lt;/em&gt;{#6864}&lt;/p&gt;
&lt;p&gt;In our recent post on &lt;a href="https://thenewstack.io/taking-your-database-beyond-a-single-kubernetes-cluster/" target="_blank" rel="noopener noreferrer"&gt;The New Stack&lt;/a&gt;
, we showed you how you can leverage &lt;a href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt;
 (K8s) and &lt;a href="https://cassandra.apache.org/_/index.html" target="_blank" rel="noopener noreferrer"&gt;Apache Cassandra&lt;/a&gt;
TM to manage distributed applications at scale, with thousands of nodes across both on-premises and in the cloud. In that example, we used &lt;a href="https://k8ssandra.io/" target="_blank" rel="noopener noreferrer"&gt;K8ssandra&lt;/a&gt;
 and &lt;a href="https://cloud.google.com/" target="_blank" rel="noopener noreferrer"&gt;Google Cloud Platform&lt;/a&gt;
 (GCP) to illustrate some of the challenges you might expect to encounter as you grow into a multi-cloud environment, upgrade to another K8s version, or begin working with different distributions and complimentary tooling. In this post, we&amp;rsquo;ll explore a few alternative approaches to using K8s to help you more easily manage distributed applications.{#fec3}&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 5: Building an Empire of Microservices</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-5-building-an-empire-of-microservices/</link><pubDate>Thu, 02 Jun 2022 05:08:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-5-building-an-empire-of-microservices/</guid><description>&lt;p&gt;We continue building our microservices system by adding a coordination layer to handle spinning multiple services up and down.&lt;/p&gt;
&lt;p&gt;In previous articles, we grew from two Spring Boot applications to three applications + a database container.&lt;/p&gt;
&lt;p&gt;As we continue to scale and broaden our system, we will need something to coordinate service and ensure consistent communication (avoid human error).&lt;/p&gt;
&lt;p&gt;We will do this through &lt;a href="https://docs.docker.com/compose/" target="_blank" rel="noopener noreferrer"&gt;&lt;code&gt;docker-compose&lt;/code&gt;&lt;/a&gt;
, an orchestration tool that manages containerized applications.&lt;/p&gt;</description></item><item><title>Book Review: Monolith to Microservices (Part 2)</title><link>https://foojayio.github.io/website/today/book-review-monolith-to-microservices-part-2/</link><pubDate>Wed, 25 May 2022 09:09:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-monolith-to-microservices-part-2/</guid><description>&lt;p&gt;This is the second article &lt;a href="https://foojayio.github.io/website/today/book-review-monolith-to-microservices-part-1/"&gt;of the first one I wrote the other day&lt;/a&gt;
, &amp;ldquo;&lt;a href="https://www.amazon.ca/Monolith-Microservices-Evolutionary-Patterns-Transform/dp/1492047848" target="_blank" rel="noopener noreferrer"&gt;Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith&lt;/a&gt;
&amp;rdquo; by Sam Newman.&lt;/p&gt;
&lt;p&gt;In this article, I will summarize chapter two.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/book-review-monolith-to-microservices-part-2/monolith-to-microservice.jpeg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-chapter-2-planning-to-migration"&gt;&lt;strong&gt;Chapter #2: Planning to Migration&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;In this chapter, the book discusses the goal and mindset. When we are looking for a Microservices, what should be our goal.&lt;/p&gt;
&lt;p&gt;It argues that our goal shouldn&amp;rsquo;t be the Microservices. Something worked for Netflix or Amazon, which means it will work for me as well. This thought process has a major flaw. It makes you fall into a cargo cult mentality.&lt;/p&gt;</description></item><item><title>Chopping the Monolith: The Demo</title><link>https://foojayio.github.io/website/today/chopping-monolith-demo/</link><pubDate>Mon, 23 May 2022 12:53:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/chopping-monolith-demo/</guid><description>&lt;p&gt;In my previous blog post &lt;a href="https://foojayio.github.io/website/today/chopping-monolith/"&gt;Chopping the Monolith&lt;/a&gt;
, I explained my stance on microservices and why it shouldn&amp;rsquo;t be your golden standard.&lt;/p&gt;
&lt;p&gt;However, I admitted that some parts of the codebase were less stable than others and had to change more frequently.&lt;/p&gt;
&lt;p&gt;I proposed &amp;ldquo;chopping&amp;rdquo; these few parts to cope with this requirement while keeping the monolith intact.&lt;/p&gt;
&lt;p&gt;As Linus Torvalds once wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Talk is cheap, show me the code!&lt;/p&gt;</description></item><item><title>Why Developers Should Use Apache Pulsar</title><link>https://foojayio.github.io/website/today/why-developers-should-use-apache-pulsar/</link><pubDate>Thu, 19 May 2022 15:10:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-developers-should-use-apache-pulsar/</guid><description>&lt;p&gt;Apache Pulsar is an open source streaming platform that addresses some important limitations in Kafka, particularly for cloud-native applications.&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/why-developers-should-use-apache-pulsar/data_explosion_proliferation_transmission_data_streams_volume_velocity_by_spainter_vfx_gettyimages-896319676_cso_2400x1600-100852889-large-1024x683.jpg" alt="" loading="lazy"&gt;
 SPainter VFX / Getty Images&lt;/p&gt;
&lt;p&gt;If you are building applications today, you are probably familiar with the microservices model: Rather than building big monolithic applications, we break services down into isolated components that we can independently update or change over time.&lt;/p&gt;
&lt;p&gt;Microservices deployments then can use a message bus to decouple and manage the communication between services, which makes it easier to replay requests, handle errors, and deal with load spikes and rapid increases in requests while maintaining the serialized order.&lt;/p&gt;</description></item><item><title>Let's Compile Java Code in the Cloud!</title><link>https://foojayio.github.io/website/today/lets-compile-java-code-in-the-cloud/</link><pubDate>Wed, 18 May 2022 12:03:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/lets-compile-java-code-in-the-cloud/</guid><description>&lt;p&gt;Across the industry, companies are trying to rein in runaway cloud costs by squeezing more carrying capacity out of the instances they run in the cloud.&lt;/p&gt;
&lt;p&gt;Especially in the Java space, developers are trying to fit workloads into smaller and smaller instances and utilize server resources with maximum efficiency.&lt;/p&gt;
&lt;p&gt;Relying on elastic horizontal scaling to deal with spikes in traffic means that Java workloads must start fast and stay fast.&lt;/p&gt;</description></item><item><title>Book Review: Monolith to Microservices (Part 1)</title><link>https://foojayio.github.io/website/today/book-review-monolith-to-microservices-part-1/</link><pubDate>Wed, 18 May 2022 07:43:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-monolith-to-microservices-part-1/</guid><description>&lt;p&gt;I have just finished reading &lt;a href="https://www.amazon.ca/Monolith-Microservices-Evolutionary-Patterns-Transform/dp/1492047848" target="_blank" rel="noopener noreferrer"&gt;&amp;ldquo;Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith&lt;/a&gt;
&amp;rdquo; by Sam Newman.&lt;/p&gt;
&lt;img fetchpriority="high" decoding="async" class="alignnone size-medium wp-image-55937" src="monolith-to-microservice-388x510.jpeg" alt="" width="388" height="510"&gt;
&lt;br /&gt;
&lt;p&gt;This book is undoubtedly great. It explains the critical aspects applicable when moving away from a monolith to a microservices architecture.&lt;/p&gt;
&lt;p&gt;In this article, I will try to summarize some of the key elements from the book that impacted me.&lt;/p&gt;
&lt;p&gt;This book contains five chapters, each of which has a great deal of context and explanation.&lt;/p&gt;</description></item><item><title>5 More Reasons to Choose Apache Pulsar Over Apache Kafka</title><link>https://foojayio.github.io/website/today/5-more-reasons-to-choose-apache-pulsar-over-apache-kafka/</link><pubDate>Thu, 05 May 2022 18:11:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/5-more-reasons-to-choose-apache-pulsar-over-apache-kafka/</guid><description>&lt;p&gt;&lt;em&gt;Author&amp;rsquo;s note: I originally published this blog post in 2019, while I was CEO of Kesque, a real-time messaging service built on&lt;/em&gt; &lt;a href="https://pulsar.apache.org/" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Apache Pulsar&lt;/em&gt;&lt;/a&gt;
&lt;em&gt;, the cloud-native distributed messaging and streaming platform. It&amp;rsquo;s a follow-up to an earlier post, &amp;ldquo;&lt;/em&gt; &lt;a href="https://datastax.medium.com/7-reasons-to-choose-apache-pulsar-over-apache-kafka-cb111087eadb" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;7 Reasons to Choose Apache Pulsar over Apache Kafka&lt;/em&gt;&lt;/a&gt;
&lt;em&gt;.&amp;rdquo; A lot of big changes have happened since these two posts went live, including Kesque&amp;rsquo;s&lt;/em&gt; &lt;a href="https://www.datastax.com/press-release/datastax-delivers-scale-out-enterprise-event-streaming-modern-data-apps" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;acquisition&lt;/em&gt;&lt;/a&gt;
&lt;em&gt;, in January 2021, by DataStax. The reasons to choose Pulsar, however, haven&amp;rsquo;t changed.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Bring Streaming to Apache Cassandra with Apache Pulsar</title><link>https://foojayio.github.io/website/today/bring-streaming-to-apache-cassandra-with-apache-pulsar/</link><pubDate>Thu, 05 May 2022 18:10:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/bring-streaming-to-apache-cassandra-with-apache-pulsar/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/bring-streaming-to-apache-cassandra-with-apache-pulsar/1_4VRCkVXi6RRfK4pwrJkPjw-1024x506.jpeg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Twitch, YouTube, Instagram, Facebook &amp;mdash; virtually every major brand nowadays uses live streaming to connect and engage their audience.{#2544}&lt;/p&gt;
&lt;p&gt;For enterprises and developers &lt;a href="https://datastax.medium.com/build-your-first-app-with-javascript-node-js-and-datastax-astra-db-573abc238583" target="_blank" rel="noopener noreferrer"&gt;building cloud-native applications&lt;/a&gt;
, this growing trend creates a need for streaming technologies that can reliably handle the rush of massive amounts of data, while also being flexible and easy to manage for developers.{#2544}&lt;/p&gt;
&lt;p&gt;One such technology is &lt;a href="https://pulsar.apache.org/" target="_blank" rel="noopener noreferrer"&gt;Apache Pulsar&lt;/a&gt;
&lt;a href="https://cassandra.apache.org/_/index.html" target="_blank" rel="noopener noreferrer"&gt;®&lt;/a&gt;
 &amp;mdash; an open-source, distributed messaging and streaming platform that&amp;rsquo;s easy to deploy, simple to scale, and packed with developer-friendly APIs.{#8b5a}&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 4: Building an Empire of Microservices</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-4-building-an-empire-of-microservices/</link><pubDate>Wed, 27 Apr 2022 07:22:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-4-building-an-empire-of-microservices/</guid><description>&lt;p&gt;This article is the fourth iteration in a series of posts about building microservices in Java.&lt;/p&gt;
&lt;p&gt;The initial post started with a single string message passed between two locally-running applications, and we are gradually adding services and functionality along the way.&lt;/p&gt;
&lt;p&gt;In this level 4 instalment, we will add a new service that will manage book authors. It will call a database containing a data domain of books and retrieve authors and their information. This will entail creating a new, separate service from our previously written service1 and service2.&lt;/p&gt;</description></item><item><title>Chopping the Monolith: Foojay.io Today</title><link>https://foojayio.github.io/website/today/chopping-monolith/</link><pubDate>Mon, 25 Apr 2022 19:06:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/chopping-monolith/</guid><description>&lt;p&gt;If you attend conferences or read technical articles, you could think that microservices are the correct and only way to build a system at the moment.&lt;/p&gt;
&lt;p&gt;Despite some pushback from cooler heads, the default architecture is microservices.&lt;/p&gt;
&lt;p&gt;In this post, I&amp;rsquo;d like to argue why it&amp;rsquo;s wrong.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll first get back to the origin of microservices and the fundamental reason to use them.&lt;/p&gt;
&lt;p&gt;Then, I&amp;rsquo;ll describe why microservices don&amp;rsquo;t fit most organizations&amp;rsquo; structures.&lt;/p&gt;</description></item><item><title>Full Stream Ahead: Astra Streaming, Powered by Apache Pulsar</title><link>https://foojayio.github.io/website/today/full-stream-ahead-astra-streaming-powered-by-apache-pulsar/</link><pubDate>Thu, 24 Mar 2022 09:22:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/full-stream-ahead-astra-streaming-powered-by-apache-pulsar/</guid><description>&lt;p&gt;With a serverless architecture, multi-region geo replication, and Apache Cassandra&amp;rsquo;s legendary performance, &lt;a href="https://astra.datastax.com" target="_blank" rel="noopener noreferrer"&gt;DataStax Astra DB&lt;/a&gt;
 makes it easy for developers and enterprises to start small with their applications and grow them to infinite scale without constant performance tuning and optimization exercises.&lt;/p&gt;
&lt;p&gt;However, cloud app developers also face significant challenge`s beyond data at rest. Modern data apps require high-scale streaming technologies that can deliver the reactive engagement at the point of interaction that end users have come to expect. That&amp;rsquo;s why today, we&amp;rsquo;re excited to announce that these capabilities have been added to DataStax Astra.&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 3: Building an Empire of Microservices</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-3-building-an-empire-of-microservices/</link><pubDate>Fri, 04 Mar 2022 16:23:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-3-building-an-empire-of-microservices/</guid><description>&lt;p&gt;We are still in the beginning stages of building microservices with Java, but we have already seen how to send and receive communications between two Spring Boot applications. In the &lt;a href="https://jmhreif.com/blog/microservices-level1/" target="_blank" rel="noopener noreferrer"&gt;first blog post&lt;/a&gt;
 of this series, our two applications transmitted a message string of &lt;code&gt;&amp;quot;Hello, World!&amp;quot;&lt;/code&gt;. In the &lt;a href="https://jmhreif.com/blog/microservices-level2/" target="_blank" rel="noopener noreferrer"&gt;second blog post&lt;/a&gt;
, we took it one step further by embedding a MongoDB database into our &lt;code&gt;service1&lt;/code&gt;, added a data domain (books) with four pre-populated entries, and transmitted the &lt;code&gt;Book&lt;/code&gt; information between the two applications.&lt;/p&gt;</description></item><item><title>The Serverless Database You Really Want</title><link>https://foojayio.github.io/website/today/the-serverless-database-you-really-want/</link><pubDate>Thu, 03 Mar 2022 20:43:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-serverless-database-you-really-want/</guid><description>&lt;p&gt;The dreaded part of every site reliability engineer&amp;rsquo;s (SRE) job eventually: capacity planning. You know, the dance between all the stakeholders when deploying your applications. Did engineering really simulate the right load and do we understand how the application scales? Did product managers accurately estimate the amount of usage? Did we make architectural decisions that will keep us from meeting our SLA goals? And then the question that everyone will have to answer eventually: how much is this going to cost? This forces SREs to assume the roles of engineer, accountant and fortune teller.&lt;/p&gt;</description></item><item><title>Why Pulsar Beats Kafka for a Scalable, Distributed Data Architecture</title><link>https://foojayio.github.io/website/today/why-pulsar-beats-kafka-for-a-scalable-distributed-data-architecture/</link><pubDate>Thu, 03 Mar 2022 14:10:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-pulsar-beats-kafka-for-a-scalable-distributed-data-architecture/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/why-pulsar-beats-kafka-for-a-scalable-distributed-data-architecture/shutterstock_1009002379-350x233-1.jpg" alt="" loading="lazy"&gt;
 © Shutterstock / Jurik Peter&lt;/p&gt;
&lt;p&gt;The leading open source event streaming platforms are Apache Kafka and Apache Pulsar. For enterprise architects and application developers, choosing the right event streaming approach is critical, as these technologies will help their apps scale up around data to support operations in production.&lt;/p&gt;
&lt;p&gt;Everyone wants results faster. We want applications that know what we want, even before we know ourselves. We want systems that constantly check for fraud or security issues to protect our data. We want applications that are smart enough to react and change plans when faced with the unexpected. And we want those services to be continuously available.&lt;/p&gt;</description></item><item><title>OSS Debugging Toolkits for Kubernetes</title><link>https://foojayio.github.io/website/today/introducing-koolkits-debugging-toolkits-for-kubernetes/</link><pubDate>Mon, 28 Feb 2022 12:27:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/introducing-koolkits-debugging-toolkits-for-kubernetes/</guid><description>&lt;p&gt;KoolKits (&lt;strong&gt;K&lt;/strong&gt; ubernetes t&lt;strong&gt;oolkits&lt;/strong&gt;) are highly-opinionated, language-specific, batteries-included debug container images for Kubernetes. In practice, they&amp;rsquo;re what you would&amp;rsquo;ve installed on your production pods if you were stuck during a tough debug session in an unfamiliar shell.&lt;/p&gt;
&lt;p&gt;To briefly give some background, note that these container images are intended for use with the new &lt;a href="https://kubernetes.io/docs/tasks/debug-application-cluster/debug-running-pod/#ephemeral-container" target="_blank" rel="noopener noreferrer"&gt;kubectl debug feature&lt;/a&gt;
, which spins up &lt;a href="https://kubernetes.io/docs/concepts/workloads/pods/ephemeral-containers/" target="_blank" rel="noopener noreferrer"&gt;Ephemeral containers&lt;/a&gt;
 for interactive troubleshooting. A KoolKit will be pulled by kubectl debug, spun up as a container in your pod, and have the ability to access the same process namespace as your original container.&lt;/p&gt;</description></item><item><title>Save Hours on your Setup of K8ssandra with the New Config Builder</title><link>https://foojayio.github.io/website/today/save-hours-on-your-setup-of-k8ssandra-with-the-new-config-builder/</link><pubDate>Thu, 24 Feb 2022 19:36:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/save-hours-on-your-setup-of-k8ssandra-with-the-new-config-builder/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Setting up K8ssandra in your workflow just got a whole lot easier. With the new Config Builder you can be running Apache Cassandra® on Kubernetes in a matter of minutes.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The purpose of K8ssandra is to make it easy to run Apache Cassandra® on Kubernetes. We recently took another big step in that direction by releasing the &lt;a href="https://dtsx.io/3pIiPcR" target="_blank" rel="noopener noreferrer"&gt;K8ssandra config builder&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Even if you&amp;rsquo;ve created thousands of nodes or integrated K8ssandra in your stack, you&amp;rsquo;ll probably want to give the config builder a try. Walk through the interactive wizard defining the shape of your cluster, resource requirements, and toggle features to fit your needs. This is great for smoothing out the on-ramp for a production ready environment of K8ssandra.&lt;/p&gt;</description></item><item><title>Why we decided to build a K8ssandra Operator - Part 4</title><link>https://foojayio.github.io/website/today/why-we-decided-to-build-a-k8ssandra-operator-part-4/</link><pubDate>Tue, 22 Feb 2022 17:04:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-we-decided-to-build-a-k8ssandra-operator-part-4/</guid><description>&lt;p&gt;In the &lt;a href="https://k8ssandra.io/blog/other/why_k8ssandra_operator_part_1/" target="_blank" rel="noopener noreferrer"&gt;first&lt;/a&gt;
, &lt;a href="https://k8ssandra.io/blog/articles/why-k8ssandra-operator-part-2/" target="_blank" rel="noopener noreferrer"&gt;second&lt;/a&gt;
, and &lt;a href="https://k8ssandra.io/blog/articles/why-we-decided-to-build-a-k8ssandra-operator-part-3/" target="_blank" rel="noopener noreferrer"&gt;third&lt;/a&gt;
 posts in this series, we&amp;rsquo;ve shared conversations with K8ssandra core team members on our journey to build a Kubernetes operator for K8ssandra. We&amp;rsquo;ve discussed the virtues of the Helm package manager versus Kubernetes operators for deploying and managing infrastructure in Kubernetes and some of our implementation choices for the operator.&lt;/p&gt;
&lt;p&gt;In this final post of the series, we pick up from the previous post with a discussion of how we decided to structure our projects in GitHub, how we test the K8ssandra operator, and our hopes for how the operator will expand the K8ssandra developer community.&lt;/p&gt;</description></item><item><title>The Critical Role Streaming Plays in a Data Stack</title><link>https://foojayio.github.io/website/today/the-critical-role-streaming-plays-in-a-data-stack/</link><pubDate>Fri, 18 Feb 2022 17:20:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-critical-role-streaming-plays-in-a-data-stack/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/the-critical-role-streaming-plays-in-a-data-stack/streaming-data-Depositphotos_5_tn-300x210-1.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Why Apache Pulsar is the right choice for multi-datacenter, geo-distributed deployments.&lt;/p&gt;
&lt;p&gt;Building applications today requires companies and teams to be familiar with data flows (including streaming data flows) and how to transform them into compelling user experiences. Data fuels companies&amp;rsquo; ability to understand their customers, move faster than competitors, and provide compelling products that the market wants. According to &lt;a href="https://www.datastax.com/resources/report/the-state-of-the-data-race-2021" target="_blank" rel="noopener noreferrer"&gt;research&lt;/a&gt;
 by DataStax and Clearpath Strategies, almost all companies (96%) now have a formal strategy for how they will work with data, but only 38% think they&amp;rsquo;re doing a good job using data in their applications.&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 2: Building an Empire of Microservices</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-2-building-an-empire-of-microservices/</link><pubDate>Wed, 16 Feb 2022 15:29:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-2-building-an-empire-of-microservices/</guid><description>&lt;p&gt;&lt;strong&gt;Let&amp;rsquo;s dive into the world of microservices find out the complexities, best practices, and troubles. I will share all my learnings, as well!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In my &lt;a href="https://jmhreif.com/blog/microservices-level1/" target="_blank" rel="noopener noreferrer"&gt;last blog post&lt;/a&gt;
, we began building microservices in Java with two Spring Boot applications, passing a &amp;ldquo;Hello, World!&amp;rdquo; string from one application to the other. We focused on reduced complexity, minimum previous knowledge, and few components. Next, we can slowly add pieces that simulate microservices projects in the real world.&lt;/p&gt;</description></item><item><title>Cassandra Database Migration to Kubernetes with Zero Downtime</title><link>https://foojayio.github.io/website/today/cassandra-database-migration-to-kubernetes-with-zero-downtime/</link><pubDate>Tue, 15 Feb 2022 15:22:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/cassandra-database-migration-to-kubernetes-with-zero-downtime/</guid><description>&lt;p&gt;K8ssandra is a cloud-native distribution of the Apache Cassandra® database that runs on Kubernetes, with a suite of tools to ease and automate operational tasks. In this post, we&amp;rsquo;ll walk you through a database migration from a Cassandra cluster running in AWS EC2 to a K8ssandra cluster running in Kubernetes on AWS EKS, with zero downtime.&lt;/p&gt;
&lt;p&gt;As an Apache Cassandra user, your expectation should be that migrating to K8ssandra would happen without downtime. To make that happen with &amp;ldquo;classic&amp;rdquo; clusters running on virtual machines or bare metal instances, you will use the datacenter (DC) switch technique which is commonly used in the Cassandra community to transfer clusters to different hardware or environments. The good news is that it&amp;rsquo;s not very different for clusters running in Kubernetes as most Container Network Interfaces (CNI) will provide routable pod IPs.&lt;/p&gt;</description></item><item><title>Building Scalable Streaming Applications with DataStax Astra Streaming</title><link>https://foojayio.github.io/website/today/building-scalable-streaming-applications-with-datastax-astra-streaming/</link><pubDate>Wed, 09 Feb 2022 19:09:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/building-scalable-streaming-applications-with-datastax-astra-streaming/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/building-scalable-streaming-applications-with-datastax-astra-streaming/0_Yj9vaj0to8ZAf9NJ-1-1024x682.jpeg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post introduces developers to&lt;/em&gt; &lt;a href="https://astra.dev/3SZLxE1" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;DataStax Astra Streaming&lt;/em&gt;&lt;/a&gt;
&lt;em&gt;with a step-by-step tutorial that illustrates how it can be used to easily build scalable, streaming applications.&lt;/em&gt;{#39ae}&lt;/p&gt;
&lt;p&gt;&lt;a href="https://astra.dev/3SZLxE1" target="_blank" rel="noopener noreferrer"&gt;Astra Streaming&lt;/a&gt;
 enables developers to build streaming applications on top of an elastically scalable, multi-cloud messaging and event streaming platform powered by &lt;a href="https://pulsar.apache.org/" target="_blank" rel="noopener noreferrer"&gt;Apache Pulsar&lt;/a&gt;
. &lt;a href="https://astra.dev/3SZLxE1" target="_blank" rel="noopener noreferrer"&gt;DataStax Astra Streaming&lt;/a&gt;
 is currently in beta, and we&amp;rsquo;ll be releasing a full demo soon. In the meantime, this article will walk you through a short demo that will provide a great starting point for familiarizing yourself with this powerful new streaming service.{#a6cf}&lt;/p&gt;</description></item><item><title>Deploying to Multiple Kubernetes Clusters with the K8ssandra Operator</title><link>https://foojayio.github.io/website/today/deploying-to-multiple-kubernetes-clusters-with-the-k8ssandra-operator/</link><pubDate>Fri, 04 Feb 2022 22:10:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/deploying-to-multiple-kubernetes-clusters-with-the-k8ssandra-operator/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/deploying-to-multiple-kubernetes-clusters-with-the-k8ssandra-operator/0_cYkNr7XdB-MsJiu5-1024x674.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;We built the new K8ssandra Operator to simplify deploying multiple Apache Cassandra data centers in different regions and across multiple Kubernetes (K8s) clusters. We&amp;rsquo;re not at the finish line just yet, but we&amp;rsquo;ve hit the first major milestone. Now, it&amp;rsquo;s easier than ever to run Apache Cassandra® across multiple K8s clusters in multiple regions with the K8ssandraCluster!&lt;/p&gt;
&lt;p&gt;The K8ssandraCluster is a new custom resource for K8ssandra that covers all the bases necessary for installing a production-ready, multi-cluster K8ssandra deployment. Head over to the &lt;a href="https://medium.com/building-the-open-data-stack/deploying-to-multiple-kubernetes-clusters-with-the-k8ssandra-operator-f7562bee1841" target="_blank" rel="noopener noreferrer"&gt;DataStax Tech blog&lt;/a&gt;
 to learn more about how to specify your remote clusters with the K8ssandraCluster, its deployment architecture, and what&amp;rsquo;s coming next in our continued development of the K8ssandra operator.&lt;/p&gt;</description></item><item><title>Backing up K8ssandra with MinIO</title><link>https://foojayio.github.io/website/today/backing-up-k8ssandra-with-minio-2/</link><pubDate>Thu, 03 Feb 2022 22:50:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/backing-up-k8ssandra-with-minio-2/</guid><description>&lt;p&gt;K8ssandra includes Medusa for Apache Cassandra® to handle backup and restore for your Cassandra nodes. Recently Medusa was upgraded to introduce support for all S3 compatible backends, including &lt;a href="https://min.io/" target="_blank" rel="noopener noreferrer"&gt;MinIO&lt;/a&gt;
, the popular k8s-native object storage suite. Let&amp;rsquo;s see how to set up K8ssandra and MinIO to backup Cassandra in just a few steps.&lt;/p&gt;
&lt;h2 id="deploy-minio"&gt;Deploy MinIO&lt;/h2&gt;
&lt;p&gt;Similar to K8ssandra, MinIO can be simply deployed through Helm.&lt;/p&gt;
&lt;p&gt;First, add the MinIO repository to your local list:&lt;/p&gt;</description></item><item><title>Four Reasons Why Apache Pulsar is Essential to the Modern Data Stack</title><link>https://foojayio.github.io/website/today/four-reasons-why-apache-pulsar-is-essential-to-the-modern-data-stack/</link><pubDate>Tue, 01 Feb 2022 22:14:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/four-reasons-why-apache-pulsar-is-essential-to-the-modern-data-stack/</guid><description>&lt;p&gt;Messaging has been on DataStax&amp;rsquo;s radar for several years. A significant motivator for this is the increasing popularity of microservices-based architectures. Briefly, microservices architectures use a message bus to decouple communication between services and to simplify replay, error handling, and load spikes.
&lt;img src="https://foojayio.github.io/website/today/four-reasons-why-apache-pulsar-is-essential-to-the-modern-data-stack/0_GwQl23TRbFCO-uVu-1024x379.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;With Apache Cassandra™ and DataStax Astra Cassandra-as-a-service, developers and architects have a database ecosystem that is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Based on open source&lt;/li&gt;
&lt;li&gt;Well-suited for hybrid- and multi-cloud deployments&lt;/li&gt;
&lt;li&gt;Available in a cloud-native, consumption-priced service&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is no current messaging solution that satisfies these requirements, so we&amp;rsquo;re building one. We started by evaluating the most popular option, Apache Kafka. We found that it came up short in four areas:&lt;/p&gt;</description></item><item><title>Unboxing K8ssandra: The Data Layer For Your Kubernetes-Powered Applications</title><link>https://foojayio.github.io/website/today/unboxing-k8ssandra-the-data-layer-for-your-kubernetes-powered-applications/</link><pubDate>Tue, 01 Feb 2022 17:51:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/unboxing-k8ssandra-the-data-layer-for-your-kubernetes-powered-applications/</guid><description>&lt;h4 id="a-complimentary-live-webinar-sponsored-by-datastax"&gt;A Complimentary Live Webinar, Sponsored by DataStax&lt;/h4&gt;
&lt;p&gt;Kubernetes made it easy to deploy and scale out your cloud-native applications. With &lt;a href="https://k8ssandra.io/" target="_blank" rel="noopener noreferrer"&gt;K8ssandra&lt;/a&gt;
, you can now scale application data with the same simplicity and high availability. Join us as we unbox K8ssandra a cloud native data layer for Kubernetes and explore how you can deploy it alongside your applications.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.k8ssandra.io/install/" target="_blank" rel="noopener noreferrer"&gt;Install k8ssandra&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Authenticate with &lt;a href="https://stargate.io/" target="_blank" rel="noopener noreferrer"&gt;Stargate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Query your data via a convenient API (REST, document, or graphql)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not familiar with Cassandra? &lt;a href="https://astra.dev/3f8QkAl" target="_blank" rel="noopener noreferrer"&gt;Astra DB&lt;/a&gt;
 is a great (free) place to learn without any of the infrastructure setup, or management headaches.&lt;/p&gt;</description></item><item><title>Journeys in Java, Level 1: Building an Empire of Microservices</title><link>https://foojayio.github.io/website/today/journeys-in-java-level-1-building-an-empire-of-microservices/</link><pubDate>Fri, 28 Jan 2022 14:21:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/journeys-in-java-level-1-building-an-empire-of-microservices/</guid><description>&lt;p&gt;Microservices have been used and deployed in businesses and projects for awhile, and there is plenty of content available for architecting them into a system. For my next project, I want to dive into the world of microservices and begin building my own little virtual empire from different kinds of services to find out the complexities, best practices, power, and trouble that comes with them. I will share all my learnings along the way, as well.&lt;/p&gt;</description></item><item><title>Taking Your Database Beyond a Single Kubernetes Cluster</title><link>https://foojayio.github.io/website/today/taking-your-database-beyond-a-single-kubernetes-cluster/</link><pubDate>Wed, 19 Jan 2022 10:31:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/taking-your-database-beyond-a-single-kubernetes-cluster/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/taking-your-database-beyond-a-single-kubernetes-cluster/0_ntxtNVffHhl99weW-1-1024x535.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;By &lt;a href="https://www.linkedin.com/in/bradfordcp/" target="_blank" rel="noopener noreferrer"&gt;Christopher Bradford&lt;/a&gt;
 and &lt;a href="https://www.linkedin.com/in/ty-morton-2b55b82/" target="_blank" rel="noopener noreferrer"&gt;Ty Morton&lt;/a&gt;
{#31db}&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Global applications need a data layer that is as distributed as the users they serve. &lt;a href="https://cassandra.apache.org/_/index.html" target="_blank" rel="noopener noreferrer"&gt;Apache Cassandra&lt;/a&gt;
 has risen to this challenge, handling data needs for the likes of Apple, Netflix and Sony. Traditionally, managing data layers for a distributed application was handled with dedicated teams to manage the deployment and operations of thousands of nodes &amp;mdash; both on-premises and in the cloud.&lt;/p&gt;</description></item><item><title>Kubernetes and Apache Cassandra: What Works (and What Doesn’t)</title><link>https://foojayio.github.io/website/today/kubernetes-and-apache-cassandra-what-works-and-what-doesnt/</link><pubDate>Fri, 14 Jan 2022 16:30:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/kubernetes-and-apache-cassandra-what-works-and-what-doesnt/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/kubernetes-and-apache-cassandra-what-works-and-what-doesnt/K15a-AdobeStock_459893049-1536x922-1-1024x615.jpeg" alt="" loading="lazy"&gt;
 &amp;ldquo;I need it now and I need it reliable&amp;rdquo;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ndash; ANYONE WHO HASN&amp;rsquo;T DEPLOYED APPLICATION INFRASTRUCTURE&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you&amp;rsquo;re on the receiving end of this statement, we understand you here in the &lt;a href="https://dtsx.io/3uZHFqS" target="_blank" rel="noopener noreferrer"&gt;K8ssandra community&lt;/a&gt;
. Although we do have reason for hope. Recent &lt;a href="https://dok.community/dokc-2021-report/" target="_blank" rel="noopener noreferrer"&gt;surveys&lt;/a&gt;
 have shown that &lt;a href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt;
 (K8s) is growing in popularity, not only because it&amp;rsquo;s powerful technology, but because it actually delivers on reducing the toil of deployment.&lt;/p&gt;</description></item><item><title>How to Put a Database in Kubernetes?</title><link>https://foojayio.github.io/website/today/how-to-put-a-database-in-kubernetes/</link><pubDate>Thu, 13 Jan 2022 09:18:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-put-a-database-in-kubernetes/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/how-to-put-a-database-in-kubernetes/0_aX8FjIfXNHJhbSWU.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Learn the key steps of deploying databases and stateful workloads in Kubernetes and meet the cloud-native technologies, like K8ssandra, that can streamline Apache Cassandra for K8s.&lt;/strong&gt;{#95cc}&lt;/p&gt;
&lt;p&gt;The idea of running a stateful workload in Kubernetes (K8s) can be intimidating, especially if you haven&amp;rsquo;t done it before. How do you deploy a database? Where is the actual storage? How is the storage mapped to the database or the application using it?{#6cde}&lt;/p&gt;</description></item><item><title>Monitoring Spring Boot Applications (Part 1)</title><link>https://foojayio.github.io/website/today/monitoring-spring-boot-applications-part-1/</link><pubDate>Wed, 12 Jan 2022 16:34:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/monitoring-spring-boot-applications-part-1/</guid><description>&lt;blockquote&gt;
&lt;p&gt;In part 1 of this series, we will learn about JDK Flight Recorder and how we can use it to monitor a Spring Boot application.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="h3-0-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Application monitoring is one thing that we as developers cannot overlook. It doesn&amp;rsquo;t matter if you run a monolith or microservices application because application monitoring is a must for production workloads to know what&amp;rsquo;s happening with your application. If you are using Spring Boot, there are different ways to monitor an application. The most popular way to monitor a Spring Boot application is to enable the &lt;a href="https://github.com/spring-projects/spring-boot/tree/v2.6.0/spring-boot-project/spring-boot-actuator" target="_blank" rel="noopener noreferrer"&gt;spring-boot-actuator&lt;/a&gt;
 module to achieve the desired result.&lt;/p&gt;</description></item><item><title>A Tentative Comparison of Fault Tolerance Libraries on the JVM</title><link>https://foojayio.github.io/website/today/comparison-fault-tolerance-libraries/</link><pubDate>Tue, 11 Jan 2022 09:31:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/comparison-fault-tolerance-libraries/</guid><description>&lt;p&gt;If you&amp;rsquo;re implementing microservices or not, chances are that you&amp;rsquo;re calling HTTP endpoints. With HTTP calls, a lot of things can go wrong.&lt;/p&gt;
&lt;p&gt;Experienced developers plan for this and design beyond just the happy path. In general, fault tolerance encompasses the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Retry&lt;/li&gt;
&lt;li&gt;Timeout&lt;/li&gt;
&lt;li&gt;Circuit Breaker&lt;/li&gt;
&lt;li&gt;Fallback&lt;/li&gt;
&lt;li&gt;Rate Limiter to avoid server-side 429 responses&lt;/li&gt;
&lt;li&gt;Bulkhead: Rate Limiter limits the number of calls in a determined timeframe, while Bulkhead limits the number of concurrent calls&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A couple of libraries implement these features on the JVM. In this post, we will look at Microprofile Fault Tolerance, &lt;a href="https://failsafe.dev/" target="_blank" rel="noopener noreferrer"&gt;Failsafe&lt;/a&gt;
 and Resilience4J.&lt;/p&gt;</description></item><item><title>Requirements for Running K8ssandra for Development</title><link>https://foojayio.github.io/website/today/requirements-for-running-k8ssandra-for-development/</link><pubDate>Thu, 06 Jan 2022 12:15:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/requirements-for-running-k8ssandra-for-development/</guid><description>&lt;br /&gt;
&lt;p&gt;The K8ssandra &lt;a href="https://k8ssandra.io/get-started/" target="_blank" rel="noopener noreferrer"&gt;Quick start&lt;/a&gt;
 is a excellent guide for doing a full installation of K8ssandra on a dev laptop and trying out the various components of the K8ssandra stack. While this is a great way to get your first hands-on experience with K8ssandra, let&amp;rsquo;s state the obvious: running K8ssandra locally on a dev laptop is not aimed at performance. In this blog post, we will start Apache Cassandra® locally then explain how to run benchmarks to help evaluate what level of performance (especially throughput) you can expect from a dev laptop deployment.&lt;/p&gt;</description></item><item><title>Why K8ssandra?</title><link>https://foojayio.github.io/website/today/why-k8ssandra/</link><pubDate>Thu, 06 Jan 2022 12:10:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-k8ssandra/</guid><description>&lt;h2 id="the-problem-scalable-data-persistence-for-cloud-native-applications"&gt;The problem: scalable data persistence for cloud-native applications&lt;/h2&gt;
&lt;p&gt;The past decade and a half has brought tremendous change in how we in the software industry think about building and delivering internet applications. With the launch of Amazon Web Services (AWS) in 2006, companies of any size could access cloud computing infrastructure. The burst of creativity that followed gave birth to concepts like &lt;a href="http://pzf.fremantle.org/2010/05/cloud-native.html" target="_blank" rel="noopener noreferrer"&gt;cloud-native&lt;/a&gt;
 in 2010, and methodologies such as the &lt;a href="https://12factor.net/" target="_blank" rel="noopener noreferrer"&gt;twelve-factor app&lt;/a&gt;
 in 2011.&lt;/p&gt;</description></item><item><title>Simplify Migrating from Kafka to Pulsar with Kafka Connect Support</title><link>https://foojayio.github.io/website/today/simplify-migrating-from-kafka-to-pulsar-with-kafka-connect-support/</link><pubDate>Wed, 05 Jan 2022 11:30:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/simplify-migrating-from-kafka-to-pulsar-with-kafka-connect-support/</guid><description>&lt;p&gt;Large-scale implementations of any system, such as the event-streaming platform Apache Kafka, often involve customizations and tools and plugins developed in-house. When it&amp;rsquo;s time to transition from one system to another, the task can become complicated, drawn-out, and error-prone. Often the benefits of an alternative system (which can include &lt;a href="https://gigaom.com/report/the-cost-savings-of-replacing-kafka-with-pulsar/" target="_blank" rel="noopener noreferrer"&gt;significant cost savings&lt;/a&gt;
 and other efficiencies) are outweighed by the risks and costs of migration. As a result, an organization can end up locked into a suboptimal situation, footing a bigger bill than necessary and missing out on modern features that help move the business forward faster.&lt;/p&gt;</description></item><item><title>Building Stateful Microservices in the Cloud Native World</title><link>https://foojayio.github.io/website/today/different-approaches-to-building-stateful-microservices-in-the-cloud-native-world/</link><pubDate>Tue, 04 Jan 2022 09:34:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/different-approaches-to-building-stateful-microservices-in-the-cloud-native-world/</guid><description>&lt;p&gt;&lt;img src="https://www.javaadvent.com/content/uploads/2021/11/pexels-photo-164170.jpeg" alt="Snow-capped mountains and landscape with clouds" loading="lazy"&gt;
Cloud Native computing is all about working with stateless data and serverless systems. But we all live in a stateful world, in which data flows through systems interconnected with one another through complex networks.&lt;/p&gt;
&lt;p&gt;So how can systems be able to manage and track the flow of data in a coherent fashion and in a stateless world?&lt;/p&gt;
&lt;h3 id="h3-0-navigating-the-maze-of-cloud-related-terminologies"&gt;Navigating the maze of cloud related terminologies&lt;/h3&gt;
&lt;p&gt;We will first iron out a few terminologies that some folks appear to be using almost interchangeably in the current cloud computing era:&lt;/p&gt;</description></item><item><title>New Survey Finds Data on Kubernetes Is No Longer a Pipe Dream</title><link>https://foojayio.github.io/website/today/new-survey-finds-data-on-kubernetes-is-no-longer-a-pipe-dream/</link><pubDate>Thu, 30 Dec 2021 15:52:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-survey-finds-data-on-kubernetes-is-no-longer-a-pipe-dream/</guid><description>&lt;p&gt;For people that work in infrastructure and application development, the pace of change is quick. Finish one project and it&amp;rsquo;s on to the next. Each iteration requires an evaluation asking if the right technology is being used and if it provides a new advantage. Kubernetes has been on the fast track of continuous evaluation. New projects and methodologies are continuously emerging and it can be hard to keep up. Then there is the question of running stateful services. The Data on Kubernetes community has &lt;a href="https://dok.community/dokc-2021-report/" target="_blank" rel="noopener noreferrer"&gt;released a report&lt;/a&gt;
 titled &amp;ldquo;Data on Kubernetes 2021&amp;rdquo; to give us a snapshot of where our industry sits with stateful workloads. Over 500 executives and tech leaders were asked some very direct and insightful questions about how they use Kubernetes. It turns out that there were a lot of surprising finds. Some that I would have never predicted. Let&amp;rsquo;s dig into some of the highlights that stood out to me.&lt;/p&gt;</description></item><item><title>7 Reasons to Choose Apache Pulsar over Apache Kafka</title><link>https://foojayio.github.io/website/today/7-reasons-to-choose-apache-pulsar-over-apache-kafka/</link><pubDate>Wed, 15 Dec 2021 10:03:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/7-reasons-to-choose-apache-pulsar-over-apache-kafka/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;I wrote an earlier version of this article in 2019, while I was CEO of Kesque, a real-time messaging service built on&lt;/strong&gt;&lt;/em&gt; &lt;a href="https://pulsar.apache.org/" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;&lt;strong&gt;Apache Pulsar&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;
&lt;em&gt;&lt;strong&gt;, the cloud-native distributed messaging and streaming platform. A lot of big changes have happened in the interim; perhaps the most significant of these is the fact that the company I founded in early 2019 was&lt;/strong&gt;&lt;/em&gt; &lt;a href="https://www.datastax.com/press-release/datastax-delivers-scale-out-enterprise-event-streaming-modern-data-apps" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;&lt;strong&gt;acquired&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;
&lt;em&gt;&lt;strong&gt;, in January, by DataStax. One thing that hasn&amp;rsquo;t changed, however, is the rationale behind our choice of Apache Pulsar.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Fast JMS for Apache Pulsar: Blazing Performance</title><link>https://foojayio.github.io/website/today/fast-jms-for-apache-pulsar-modernize-and-reduce-costs-with-blazing-performance/</link><pubDate>Fri, 10 Dec 2021 08:54:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/fast-jms-for-apache-pulsar-modernize-and-reduce-costs-with-blazing-performance/</guid><description>&lt;p&gt;DataStax recently announced the availability of &lt;a href="https://github.com/datastax/pulsar-jms" target="_blank" rel="noopener noreferrer"&gt;Fast JMS for Apache Pulsar&lt;/a&gt;
, a JMS 2.0 API. By combining the industry-standard Java Messaging Service (JMS) API with the cloud-native and horizontally scalable Apache Pulsar™ streaming platform, DataStax is providing a powerful way to modernize your JMS infrastructure, improve performance, and reduce costs. Fast JMS is open source and is included in DataStax&amp;rsquo;s Luna Streaming Enterprise support of Apache Pulsar.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-jms"&gt;What is JMS?&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Jakarta_Messaging" target="_blank" rel="noopener noreferrer"&gt;Java Message Service&lt;/a&gt;
 (JMS), or &lt;a href="https://jakarta.ee/specifications/messaging/" target="_blank" rel="noopener noreferrer"&gt;Jakarta Messaging&lt;/a&gt;
 as it is now known, is a standard messaging API that is part of the Java Enterprise Edition (now &lt;a href="https://jakarta.ee/" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE&lt;/a&gt;
) ecosystem. It defines how to create, send, receive, and read messages between loosely coupled producers and consumers.&lt;/p&gt;</description></item><item><title>Why a Serverless Data API Might be Your Next Database</title><link>https://foojayio.github.io/website/today/why-a-serverless-data-api-might-be-your-next-database/</link><pubDate>Wed, 01 Dec 2021 14:53:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-a-serverless-data-api-might-be-your-next-database/</guid><description>&lt;p&gt;App development stacks have been improving so rapidly and effectively that today there are a number of easy, straightforward paths to push code to production, on the cloud platform of your choice. But what use are applications without the data that users interact with? Persistent data is such an indispensable piece of the IT puzzle that it&amp;rsquo;s perhaps the reason the other pieces even exist.&lt;/p&gt;
&lt;p&gt;Enter cloud and internet scale requirements, essentially mandating that back-end services must be independently scalable / modular subsystems to succeed. Traditionally, this requirement has been difficult in the extreme for stateful systems. No doubt, database as-a-service (DBaaS) has made provisioning, operations, and security easier. But as anyone who has tried to run databases on Kubernetes will tell you: auto scaling databases, especially ones that are easy for developers to use, remain out of reach for mere mortals.&lt;/p&gt;</description></item><item><title>Enterprise-Level Apache Cassandra Sink Connector for Apache Pulsar</title><link>https://foojayio.github.io/website/today/developing-an-enterprise-level-apache-cassandra-sink-connector-for-apache-pulsar/</link><pubDate>Wed, 24 Nov 2021 19:16:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/developing-an-enterprise-level-apache-cassandra-sink-connector-for-apache-pulsar/</guid><description>&lt;p&gt;When &lt;a href="https://techcrunch.com/2021/01/27/datastax-acquires-kesque-as-it-gets-into-data-streaming/" target="_blank" rel="noopener noreferrer"&gt;DataStax started investing in streaming with Apache Pulsar&lt;/a&gt;
™, we knew that one of the first things people would want to do was connect existing enterprise data sources to Apache Cassandra™ using Pulsar.&lt;/p&gt;
&lt;p&gt;Apache Pulsar has a powerful framework called Pulsar IO to enable this kind of use case, and at DataStax we already had a best-in-class &lt;a href="https://docs.datastax.com/en/kafka/doc/kafka/kafkaIntro.html" target="_blank" rel="noopener noreferrer"&gt;Kafka Connect Sink&lt;/a&gt;
 that enables you to store structured data coming from one or more Kafka topics into DataStax Enterprise, Apache Cassandra, and Astra.&lt;/p&gt;</description></item><item><title>K8ssandra: Production-Ready Platform for Cassandra on Kubernetes</title><link>https://foojayio.github.io/website/today/k8ssandra-production-ready-platform-for-running-apache-cassandra-on-kubernetes/</link><pubDate>Wed, 24 Nov 2021 09:45:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/k8ssandra-production-ready-platform-for-running-apache-cassandra-on-kubernetes/</guid><description>&lt;p&gt;&lt;a href="https://k8ssandra.io/" target="_blank" rel="noopener noreferrer"&gt;K8ssandra&lt;/a&gt;
, an open-source distribution of Apache Cassandra for Kubernetes, aims to provide a &amp;ldquo;production-ready platform&amp;rdquo;, and this includes automation for operational tasks such as repairs, backups, and monitoring. Cassandra is a distributed NoSQL database designed for global scale and fault tolerance for the most demanding applications on the planet, written in Java.&lt;/p&gt;
&lt;p&gt;K8ssandra is deployed using Helm and supports stateful workloads out of the box, which enables database administrators (DBAs) and site reliability engineers (SREs) to set up and operate Cassandra clusters using best practices in a Kubernetes environment.&lt;/p&gt;</description></item><item><title>Lights, Camera, Action: GitHub Actions with Java (Part 2)</title><link>https://foojayio.github.io/website/today/github-actions-with-java-part-2/</link><pubDate>Mon, 15 Nov 2021 14:35:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/github-actions-with-java-part-2/</guid><description>&lt;figure class="alignright is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="distro-choice.jpg" alt="Distro Choice 337" width="308" height="465"&gt;
&lt;/figure&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Have you ever been given too many choices resulting in the feeling of indifference (&amp;ldquo;not a big deal, doesn&amp;rsquo;t really matter either way&amp;rdquo;)? However, when given &lt;strong&gt;two&lt;/strong&gt; choices, somehow you feel torn or become more critical of one versus the other.&lt;/p&gt;
&lt;p&gt;In this short overview, you will learn how to create a GitHub Action workflow that allows you to choose a particular OpenJDK build distribution.&lt;/p&gt;
&lt;p&gt;And welcome back to the series of articles on GitHub Actions with Java &lt;strong&gt;Part 2&lt;/strong&gt; . If you didn&amp;rsquo;t catch &lt;strong&gt;Part 1&lt;/strong&gt; head over here: &lt;a href="https://foojayio.github.io/website/today/github-actions-with-java-part-1/"&gt;https://foojay.io/today/github-actions-with-java-part-1&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Lights, Camera, Action: GitHub Actions with Java (Part 1)</title><link>https://foojayio.github.io/website/today/github-actions-with-java-part-1/</link><pubDate>Thu, 28 Oct 2021 12:36:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/github-actions-with-java-part-1/</guid><description>&lt;h4 id="have-you-ever-heard-of-jenkins-travis-teamcity-or-bamboo"&gt;Have you ever heard of &lt;a href="https://www.jenkins.io/" target="_blank" rel="noopener noreferrer"&gt;Jenkins&lt;/a&gt;
, &lt;a href="https://www.travis-ci.com/" target="_blank" rel="noopener noreferrer"&gt;Travis&lt;/a&gt;
, &lt;a href="https://www.jetbrains.com/teamcity/" target="_blank" rel="noopener noreferrer"&gt;TeamCity&lt;/a&gt;
 or &lt;a href="https://www.atlassian.com/software/bamboo" target="_blank" rel="noopener noreferrer"&gt;Bamboo&lt;/a&gt;
?&lt;/h4&gt;
&lt;figure class="alignright size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="github_smothie.jpg" alt="GitHub Actions with Java" class="wp-image-50461" width="332" height="442"&gt;
 &lt;figcaption&gt;
 "Github smoothie" Acarlos1000
 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For those who do not know, these are build infrastructure software services that manage and schedule (notify) the building of software artifacts (yours).&lt;/p&gt;
&lt;p&gt;Often, you might hear the term &amp;ldquo;CI/CD pipelines&amp;rdquo;, which refers to the concept of Continuous Integration and/or Continuous Delivery. In layman&amp;rsquo;s terms, it&amp;rsquo;s all about building, testing and deploying software in an automated fashion.&lt;/p&gt;</description></item><item><title>Thorntail Fat, Thin and Skinny Approach for Java Microservices</title><link>https://foojayio.github.io/website/today/thorntail-fat-thin-skinny-java-microservices/</link><pubDate>Wed, 22 Sep 2021 16:25:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/thorntail-fat-thin-skinny-java-microservices/</guid><description>&lt;p&gt;&lt;a href="https://thorntail.io/" target="_blank" rel="noopener noreferrer"&gt;Thorntail&lt;/a&gt;
, originally &lt;a href="https://wildfly-swarm.io/" target="_blank" rel="noopener noreferrer"&gt;WildFly Swarm&lt;/a&gt;
, is most suitable for packaging applications as &lt;em&gt;JAR&lt;/em&gt; , &lt;em&gt;WAR,&lt;/em&gt; or &lt;em&gt;EAR&lt;/em&gt; files. The most important value is in the functional agility the Thorntail provides. You can start with the stripped down version of Thorntail, adding the required parts and application code on top.&lt;/p&gt;
&lt;figure class="aligncenter is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" src="https://jelastic.com/blog/wp-content/uploads/2018/09/jvm-microservice.png" alt="microservices" class="wp-image-30149" width="329" height="411"&gt;
&lt;/figure&gt;
&lt;p&gt;Below we will describe how to build and deploy Thorntail based applications using Fat, Thin and Skinny approaches. The application will be packaged in the Jar/War format automatically with the help of &lt;a href="https://github.com/jelastic-jps/thorntail" target="_blank" rel="noopener noreferrer"&gt;Builder add-ons&lt;/a&gt;
 prepared by Jelastic. The topology will consist of Maven build node and JVM containers for running microservices.&lt;/p&gt;</description></item><item><title>Is the Java/Jakarta EE Deployment Model Out of Date?</title><link>https://foojayio.github.io/website/today/is-the-java-jakarta-ee-deployment-model-out-of-date/</link><pubDate>Wed, 25 Aug 2021 13:05:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/is-the-java-jakarta-ee-deployment-model-out-of-date/</guid><description>&lt;p&gt;In this myth-busting webinar, Steve Millidge, founder of &lt;a href="https://www.payara.fish" target="_blank" rel="noopener noreferrer"&gt;Payara&lt;/a&gt;
, will show you why the Java EE/&lt;a href="https://jakarta.ee/" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE&lt;/a&gt;
 deployment model is not old fashioned or out of date.&lt;/p&gt;
&lt;p&gt;In this webinar, learn the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Benefits of using thin WARs over fat JARs:
&lt;ul&gt;
&lt;li&gt;Do you know what&amp;rsquo;s in your Spring fat JAR?&lt;/li&gt;
&lt;li&gt;Do you know who&amp;rsquo;s tracking security issues with Spring?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Security benefits of patched runtimes&lt;/li&gt;
&lt;li&gt;Advantages of building container images to build applications, not infrastructure messaging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you think you have to switch to Spring for a modern deployment model, this video will show you how the Jakarta EE deployment model using thin WARs allows you to modernize your application development, today!&lt;/p&gt;</description></item><item><title>Is Java/Jakarta EE Cloud-Native?</title><link>https://foojayio.github.io/website/today/is-java-jakarta-ee-cloud-native/</link><pubDate>Wed, 18 Aug 2021 09:14:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/is-java-jakarta-ee-cloud-native/</guid><description>&lt;p&gt;In this myth-busting webinar, Steve Millidge (founder of &lt;a href="https://www.payara.fish/" target="_blank" rel="noopener noreferrer"&gt;Payara&lt;/a&gt;
), shows you that Java/Jakarta EE &lt;strong&gt;IS&lt;/strong&gt; Cloud-native and can handle microservices and containers in the Cloud.&lt;/p&gt;
&lt;p&gt;In this webinar, learn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is Cloud-Native?&lt;/li&gt;
&lt;li&gt;How &lt;a href="https://jakarta.ee/" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE&lt;/a&gt;
 (Java EE) applications run securely in the Cloud&lt;/li&gt;
&lt;li&gt;Why you should build applications, not runtimes&lt;/li&gt;
&lt;li&gt;How to keep your runtime easily up-to-date&lt;/li&gt;
&lt;li&gt;Learn about an upcoming project,&lt;strong&gt;&lt;a href="https://www.payara.fish/products/payara-cloud/" target="_blank" rel="noopener noreferrer"&gt;Payara Cloud&lt;/a&gt;
&lt;/strong&gt;, that separates the deployment from the runtime to make running Jakarta EE applications on the cloud even easier&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;ve been hearing that Java/Jakarta EE is not Cloud-native or it&amp;rsquo;s difficult to get your Java/Jakarta EE applications running in the Cloud, watch this webinar to see why that&amp;rsquo;s not true and how you can continue using your existing Java/Jakarta EE development skills to modernize your application development!&lt;/p&gt;</description></item><item><title>SKP's Primer: Failures, Pitfalls, and Disadvantages of Microservices</title><link>https://foojayio.github.io/website/today/skps-definitive-primer-failures-pitfalls-and-disadvantages-of-microservices/</link><pubDate>Mon, 02 Aug 2021 09:35:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/skps-definitive-primer-failures-pitfalls-and-disadvantages-of-microservices/</guid><description>&lt;p&gt;&lt;strong&gt;[About SKP&amp;rsquo;s Definitive Microservices Primer]&lt;/strong&gt;&lt;br&gt;
Series of Articles on Microservices Architecture. They Revolve Around Microservices Strategy, Decision Making, Monolithic vs Microservices, Microservices Infrastructure, Failures &amp;amp; Pitfalls of Microservices, Microservices Design Patterns, Database Design, Security, Logging, Messaging, Containerization, Cloud Providers and Everything that is Microservices and More!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-intro-to-microservices-adoption-in-real-world"&gt;Intro to Microservices Adoption in Real World&lt;/h2&gt;
&lt;p&gt;Microservices Adoption is almost becoming the normal in almost all software product and it services organizations. Hereby, i am taking this opportunity to make you aware of the Real-World Issues (Case Studies) that are faced by organizations (small, mid, large) of all sizes in migrating or adopting microservices. Since learning from other&amp;rsquo;s mistakes and knowing the pitfalls upfront help us prepare and plan better - this article will be helpful for those planning a shift to the Microservices Strategy organization-wide or simply making a move from Monolithic to Microservices Architecture.&lt;/p&gt;</description></item><item><title>Getting Started with Jakarta EE 9: Context &amp; Dependency Injection</title><link>https://foojayio.github.io/website/today/getting-started-with-jakarta-ee-9-context-and-dependency-injection-cdi/</link><pubDate>Wed, 26 May 2021 06:56:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-jakarta-ee-9-context-and-dependency-injection-cdi/</guid><description>&lt;p&gt;In the next part of the &amp;ldquo;&lt;a href="https://foojayio.github.io/website/today/getting-started-with-jakarta-ee-9-how-to-create-a-rest-api-with-jakarta-ee-9/"&gt;Getting Started with Jakarta EE&lt;/a&gt;
&amp;rdquo; series, we discuss Context and Dependency Injection (CDI) and the CDI specification.&lt;/p&gt;
&lt;p&gt;The CDI specification is an important backbone of Jakarta EE as it brings several specifications together. Over the years, it has become more and more important as an increasing number of specifications started using CDI as the basis for it.&lt;/p&gt;
&lt;p&gt;We will also tell you a bit about the different scopes, the interceptor mechanism, and the Event system.&lt;/p&gt;</description></item><item><title>Announcement: Jakarta EE 9.1 Has Been Released!</title><link>https://foojayio.github.io/website/today/jakarta-ee-91-released/</link><pubDate>Tue, 25 May 2021 14:57:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/jakarta-ee-91-released/</guid><description>&lt;p&gt;&lt;strong&gt;Join us in celebrating a new release of Jakarta EE!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://jakarta.ee/news/jakarta-ee-9-1-released/" target="_blank" rel="noopener noreferrer"&gt;The Jakarta EE Working Group Releases Jakarta EE 9.1 as Industry Continues to Embrace Open Source Enterprise Java&lt;/a&gt;
! Jakarta EE 9.1 adds support for Java SE 11 runtimes to the foundational Jakarta EE 9 release.&lt;/p&gt;
&lt;p&gt;This gives developers more flexibility when migrating from previous Jakarta EE releases.&lt;br&gt;
&lt;a href="https://www.agilejava.eu/wp-content/uploads/2021/05/JakartaEE91_release.png" target="_blank" rel="noopener noreferrer"&gt;&lt;img src="https://www.agilejava.eu/wp-content/uploads/2021/05/JakartaEE91_release.png" alt="" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In order to upgrade to the new version, simply change the dependency version in your &lt;em&gt;pom.xml&lt;/em&gt; to &lt;code&gt;9.1.0&lt;/code&gt;. If you are upgrading from a version prior to Jakarta EE 9, follow the &lt;a href="https://www.agilejava.eu/2021/01/22/migration-guide/" target="_blank" rel="noopener noreferrer"&gt;migration steps&lt;/a&gt;
 for the namespace change from &lt;code&gt;javax.*&lt;/code&gt; to &lt;code&gt;jakarta.*&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Why Java Developers Continue to Rely on Jakarta EE</title><link>https://foojayio.github.io/website/today/why-java-developers-continue-to-rely-on-jakarta-ee/</link><pubDate>Wed, 05 May 2021 07:53:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-java-developers-continue-to-rely-on-jakarta-ee/</guid><description>&lt;p&gt;Over the past year, the Eclipse Foundation spoke to leading Java developers around the world to discuss why they rely on&lt;a href="https://jakarta.ee/" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE&lt;/a&gt;
 and the unique benefits of using Jakarta EE technologies. Their input is captured in our white paper, which describes the important advantages Jakarta EE offers today and for the future.&lt;/p&gt;
&lt;figure class="aligncenter size-large is-resized"&gt;
 &lt;a href="https://outreach.jakartaee.org/white-paper-java-applications" target="_blank" rel="noopener"&gt;&lt;img fetchpriority="high" decoding="async" src="https://www.agilejava.eu/wp-content/uploads/2021/03/JakartaEEWhitepaper.png" alt="" class="wp-image-3727" width="222" height="288"&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;a href="https://outreach.jakartaee.org/white-paper-java-applications" target="_blank" rel="noopener noreferrer"&gt;Download the Jakarta EE white paper!&lt;/a&gt;
&lt;/p&gt;
&lt;h4 id="they"&gt;&lt;strong&gt;They&amp;rsquo;re Looking Ahead, Not Back&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;With Jakarta EE&amp;rsquo;s long history as Java EE, it&amp;rsquo;s sometimes easy for developers to dismiss the technology as yesterday&amp;rsquo;s approach. But Jakarta EE technologies are embedded, and relied upon, in a way no other technologies are. Here are some examples you might not be aware of:&lt;/p&gt;</description></item><item><title>Take the 2021 Jakarta EE Developer Survey</title><link>https://foojayio.github.io/website/today/2021-jakarta-ee-developer-survey/</link><pubDate>Mon, 26 Apr 2021 07:47:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/2021-jakarta-ee-developer-survey/</guid><description>&lt;p&gt;The annual &lt;a href="https://www.surveymonkey.com/r/F9SWSDF" target="_blank" rel="noopener noreferrer"&gt;2021Jakarta EE Developer Survey&lt;/a&gt;
 is out. Make sure to use this opportunity to make your voice heard!
&lt;a href="https://www.surveymonkey.com/r/F9SWSDF" target="_blank" rel="noopener noreferrer"&gt;&lt;img src="https://www.agilejava.eu/wp-content/uploads/2021/04/JakartaEESurvey2021-1024x574.png" alt="" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;This is the fourth Jakarta EE Developer Survey, so it is safe to say that it has become an annual tradition and is your chance to influence the direction of the Jakarta EE working group.&lt;/p&gt;
&lt;p&gt;The survey last year had more than 2000 responses from individuals around the World. Let&amp;rsquo;s beat that number this year!&lt;/p&gt;</description></item><item><title>Building Microservices with Spring Boot Fat (Uber) Jar</title><link>https://foojayio.github.io/website/today/building-microservices-spring-boot-fat-uber-jar/</link><pubDate>Wed, 21 Apr 2021 09:28:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/building-microservices-spring-boot-fat-uber-jar/</guid><description>&lt;p&gt;In most minds,&lt;em&gt;microservices&lt;/em&gt; is an approach to make a traditional monolithic system more structured, dividing it into logical components that correspond to different functional areas of application. Thus, acting as a microservice, each component becomes self-contained, easily scaled, maintained and even upgraded without affecting the overall system. Also, with &lt;em&gt;microservice&lt;/em&gt; architecture, you can use a software written in different programming languages, including Java. Such freedom attracts but may frighten at the same time.&lt;/p&gt;</description></item><item><title>Payara Platform 2021 Survey Ready For You!</title><link>https://foojayio.github.io/website/today/payara-platform-2021-survey/</link><pubDate>Tue, 23 Feb 2021 08:22:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/payara-platform-2021-survey/</guid><description>&lt;p&gt;The Payara Platform 2021 Survey is underway and we&amp;rsquo;re inviting everyone to &lt;a href="https://forms.office.com/Pages/ResponsePage.aspx?id=Ol4Z8U5Yuk6GfwMLbUz_qRvNA3jNrcFAk2okHLVZDLJUOUNCWllWM1ZBMzBQTkk1NU85MUtVU05WNi4u" target="_blank" rel="noopener noreferrer"&gt;answer a few questions&lt;/a&gt;
 about your use of the Payara Platform and ecosystem components.&lt;/p&gt;
&lt;p&gt;We want to know what you like, what you want to see improved, and we&amp;rsquo;re giving you the opportunity to vote on new features you&amp;rsquo;d like to see added to the Payara Platform.&lt;/p&gt;
&lt;p&gt;Your survey answers help drive future development efforts for the Payara Platform.&lt;/p&gt;</description></item><item><title>Introduction to MicroProfile OpenTracing with Jaeger</title><link>https://foojayio.github.io/website/today/microprofile-opentracing-with-jaeger/</link><pubDate>Thu, 18 Feb 2021 09:41:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/microprofile-opentracing-with-jaeger/</guid><description>&lt;p&gt;In this short video, Rudy de Busscher demonstrates how to use MicroProfile OpenTracing with Jaeger in combination with Payara Micro.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/eclipse/microprofile-opentracing" target="_blank" rel="noopener noreferrer"&gt;The MicroProfile OpenTracing&lt;/a&gt;
 specification defines behaviours and an API for accessing an OpenTracing compliant Tracer object within your JAX-RS application. The behaviours specify how incoming and outgoing requests will have OpenTracing Spans automatically created. The API defines how to explicitly disable or enable tracing for given endpoints.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.jaegertracing.io/" target="_blank" rel="noopener noreferrer"&gt;Jaeger&lt;/a&gt;
, inspired by Dapper and OpenZipkin, is a distributed tracing system released as open source by Uber Technologies. It is used for monitoring and troubleshooting microservices-based distributed systems, including:&lt;/p&gt;</description></item><item><title>How To Bring Your Java Microservices To The Cloud</title><link>https://foojayio.github.io/website/today/how-to-bring-your-java-microservices-to-the-cloud/</link><pubDate>Fri, 08 Jan 2021 11:20:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-bring-your-java-microservices-to-the-cloud/</guid><description>&lt;p&gt;All companies are software companies, and businesses will always experience the challenge of keeping integrations between users and applications scalable, productive, fast, and of high quality. To combat this, cloud, microservices, and other modern solutions come up more and more in architectural decisions.&lt;/p&gt;
&lt;h4 id="here-is-the-questionis-java-prepared-to-deal-with-these-diverse-concepts-in-a-corporate-environment"&gt;Here is the question&amp;mdash;is Java prepared to deal with these diverse concepts in a corporate environment?&lt;/h4&gt;
&lt;p&gt;Yes, and to demonstrate how &lt;a href="https://jakarta.ee/" title="Jakarta EE" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE&lt;/a&gt;
 and &lt;a href="https://microprofile.io/" title="Eclipse MicroProfile" target="_blank" rel="noopener noreferrer"&gt;Eclipse MicroProfile&lt;/a&gt;
 work very well and in the cloud, Payara and Platform.sh collaborated together on this webinar. You can watch the video presentation by Otavio Santana and Rudy de Busscher below:&lt;/p&gt;</description></item><item><title>What Are Your Java Predictions for 2021: Jakarta EE</title><link>https://foojayio.github.io/website/today/java-predictions-for-2021-jakarta-ee/</link><pubDate>Mon, 28 Dec 2020 09:30:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-predictions-for-2021-jakarta-ee/</guid><description>&lt;p&gt;&lt;strong&gt;To celebrate the world of Java and predict our highlights for 2021, several key Foojay participants will share their thoughts and hopes during the coming days on Foojay, &lt;a href="https://foojayio.github.io/website/today/java-predictions-for-2021-raspberry-pi/"&gt;starting with Frank Delporte, Foojay Community Manager for the Raspberry Pi&lt;/a&gt;
, and now continuing with Jadon Ortlepp, Foojay Community Manager for Microservices, who here provides the predictions of his Payara colleagues on Jakarta EE in 2021&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;figure class="wp-block-image size-large is-resized is-style-rounded"&gt;
 &lt;img decoding="async" src="image.png" alt="" class="wp-image-36725" align="right" width="133" height="143"&gt;
&lt;/figure&gt;
&lt;h3 id="h3-0-jakarta-ee-will-start-driving-improvements-in-apis-and-project-loom-will-drive-new-releases-of-many-frameworks"&gt;&amp;ldquo;Jakarta EE will start driving improvements in APIs and Project Loom will drive new releases of many frameworks.&lt;/h3&gt;
&lt;h3 id="h3-1-java-developers-may-stop-having-to-worry-about-kubernetes-as-it-is-abstracted-away-as-just-infrastructure"&gt;Java developers may stop having to worry about Kubernetes as it is abstracted away as &amp;lsquo;just infrastructure&amp;rsquo;.&lt;/h3&gt;
&lt;h3 id="h3-2-as-ever-the-death-of-java-is-predicted-but-java-is-set-to-remain-a-top-3-programming-language-in-2021"&gt;As ever, the death of Java is predicted but Java is set to remain a top 3 programming language in 2021.&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Steve Millidge, Payara CEO and Founder&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Cloud Myth: Ahead of Time Compilation Will Save You Money</title><link>https://foojayio.github.io/website/today/cloud-myth-ahead-of-time-compilation-will-save-you-money/</link><pubDate>Mon, 21 Dec 2020 14:54:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/cloud-myth-ahead-of-time-compilation-will-save-you-money/</guid><description>&lt;p&gt;There is a lot of interest in the server-side Java community around using ahead of time (AOT) native compilation provided by &lt;a href="https://www.graalvm.org/reference-manual/native-image/SubstrateVM/" title="Graal Substrate VM" target="_blank" rel="noopener noreferrer"&gt;Graal Substrate VM&lt;/a&gt;
 to drive down memory usage and cold start times of Java microservices.&lt;/p&gt;
&lt;p&gt;While these frameworks are technically interesting, the claim is if you spend time rewriting your Jakarta EE applications to utilise these new frameworks, then you will substantially reduce your cloud operational costs.&lt;/p&gt;</description></item><item><title>MicroProfile Metrics with Prometheus and Grafana</title><link>https://foojayio.github.io/website/today/microprofile-metrics-with-prometheus-and-grafana/</link><pubDate>Wed, 02 Dec 2020 09:11:30 +0000</pubDate><guid>https://foojayio.github.io/website/today/microprofile-metrics-with-prometheus-and-grafana/</guid><description>&lt;p&gt;In a distributed microservices architecture, it is important to have an overview of your systems in terms of CPU, memory management and other important metrics.&lt;/p&gt;
&lt;p&gt;This is called &lt;em&gt;Observability&lt;/em&gt;, measuring the internal state of a system, in this case, the micro-services instances.&lt;/p&gt;
&lt;p&gt;These metrics are gathered centrally, so that you can instantly have an overview of all the values and it allows the determination (mostly automated based on some rules) of the health of the instances.&lt;/p&gt;</description></item><item><title>Getting Started Quickly and Easily with Payara Server</title><link>https://foojayio.github.io/website/today/getting-started-with-payara-server/</link><pubDate>Tue, 10 Nov 2020 09:39:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-payara-server/</guid><description>&lt;p&gt;The following four short videos will take you step-by-step through installing, writing, and deploying an application to &lt;a href="https://www.payara.fish/" title="Payara Server" target="_blank" rel="noopener noreferrer"&gt;Payara Server&lt;/a&gt;
, even if you&amp;rsquo;ve never used the application server before:&lt;/p&gt;
&lt;p&gt;{#more-36262}&lt;/p&gt;
&lt;h2 id="h2-0-introduction-to-payara-server"&gt;Introduction to Payara Server&lt;/h2&gt;
&lt;p&gt;Learn how to write a simple Hello World application and deploy it to Payara Server.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KEsus1Ihjs4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;Install Software&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Securing Microservices with Auth0 and MicroProfile in Kubernetes</title><link>https://foojayio.github.io/website/today/securing-microservices-with-auth0-and-microprofile-in-kubernetes/</link><pubDate>Tue, 03 Nov 2020 15:38:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/securing-microservices-with-auth0-and-microprofile-in-kubernetes/</guid><description>&lt;p&gt;In this day and age, securing enterprise platforms is a challenge that developers and consultants tackle in an uninformed manner, producing subpar solutions in most cases.&lt;/p&gt;
&lt;p&gt;To combat this pattern, third-party security services such as Auth0 have been devised to externalize the security of services, and they focus on stable implementations of common enterprise use cases (identity management, OAuth compatibility, and so on), and platforms such as &lt;a href="https://microprofile.io/" title="Eclipse MicroProfile" target="_blank" rel="noopener noreferrer"&gt;Eclipse MicroProfile&lt;/a&gt;
 allow for their easy integration with enterprise Java microservices.&lt;/p&gt;</description></item><item><title>Evolution of the Growth in Interest in Microservices</title><link>https://foojayio.github.io/website/today/evolution-of-microservices/</link><pubDate>Fri, 23 Oct 2020 07:35:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/evolution-of-microservices/</guid><description>&lt;p&gt;For some time now, there has been an undeniable growth in interest for Microservices. The core concept itself, however, is not that new.
&lt;img src="https://blog.payara.fish/hs-fs/hubfs/Microservices%20Guide%20Final-05.jpg?width=9058&amp;amp;name=Microservices%20Guide%20Final-05.jpg" alt="Microservices Guide Final-05" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-corba"&gt;CORBA&lt;/h2&gt;
&lt;p&gt;As early as 1996, we talked about distributed objects, mainly in the context of an early and now mostly forgotten technology called &lt;a href="https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture" target="_blank" rel="noopener noreferrer"&gt;CORBA&lt;/a&gt;
. CORBA promised to deliver business objects, for which the network and their exact implementation was mostly abstracted away.&lt;/p&gt;
&lt;p&gt;In a CORBA world, these business objects representing a service that focused on a single thing could essentially live anywhere. If an application was the aggregation of a number of these distributed objects, each of them living on their own server, one could be updated or restarted without having to take down the entire application.&lt;/p&gt;</description></item><item><title>What's New in the Payara Platform October Release?</title><link>https://foojayio.github.io/website/today/whats-new-in-the-payara-platform-october-release/</link><pubDate>Thu, 15 Oct 2020 14:19:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/whats-new-in-the-payara-platform-october-release/</guid><description>&lt;p&gt;We&amp;rsquo;re happy to announce that Payara Platform Community 5.2020.5 (&lt;a href="https://www.payara.fish/downloads/payara-platform-community-edition/" target="_blank" rel="noopener noreferrer"&gt;direct download here&lt;/a&gt;
) and Payara Platform Enterprise 5.22.0 (&lt;a href="https://www.payara.fish/page/payara-enterprise-downloads/" target="_blank" rel="noopener noreferrer"&gt;request here&lt;/a&gt;
) Editions are out!&lt;/p&gt;
&lt;p&gt;With this major release of Payara Platform Enterprise, we&amp;rsquo;re introducing &lt;strong&gt;Payara InSight&lt;/strong&gt;: a new and improved version of the Community Edition&amp;rsquo;s Monitoring Console. Enterprise Edition also features some tooling enhancements including IntelliJ support and NetBeans Community Tooling.&lt;/p&gt;
&lt;p&gt;Meanwhile, the Payara Community Edition introduces support for the Jakarta EE 9 Platform as a &lt;em&gt;Tech Preview&lt;/em&gt; feature and a major Notifier API Update.&lt;/p&gt;</description></item><item><title>5 Minute Azure Survey: Java EE, Jakarta EE, and MicroProfile</title><link>https://foojayio.github.io/website/today/5-minute-azure-survey-java-ee-jakarta-ee-and-microprofile/</link><pubDate>Thu, 01 Oct 2020 12:55:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/5-minute-azure-survey-java-ee-jakarta-ee-and-microprofile/</guid><description>&lt;p&gt;The Azure team at Microsoft has been strengthening its commitment and outreach to the &lt;a href="https://jakarta.ee/" target="_blank" rel="noopener noreferrer"&gt;Jakarta EE&lt;/a&gt;
, &lt;a href="https://www.oracle.com/java/technologies/java-ee-glance.html" target="_blank" rel="noopener noreferrer"&gt;Java EE&lt;/a&gt;
, and &lt;a href="https://microprofile.io/" target="_blank" rel="noopener noreferrer"&gt;MicroProfile&lt;/a&gt;
 communities.&lt;/p&gt;
&lt;h3 id="h3-0-tools-workshops-and-more"&gt;Tools, Workshops, and More&lt;/h3&gt;
&lt;p&gt;This effort includes guidance, tools, scripts, workshops, and talks to help migrate workloads to virtual machines, Kubernetes, OpenShift, and managed service (PaaS) offerings.&lt;/p&gt;
&lt;p&gt;We are working with key industry partners such as Oracle, IBM, Payara, and the Eclipse Foundation to better support runtimes such as WebLogic, WebSphere Traditional, Open/WebSphere Liberty, JBoss EAP, WildFly, Payara, and GlassFish on Azure.&lt;/p&gt;</description></item></channel></rss>