<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: knowis AG</title>
    <description>The latest articles on DEV Community by knowis AG (@knowis).</description>
    <link>https://dev.to/knowis</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F11661%2Ff133d2b0-912b-411a-b4be-4ce409603641.png</url>
      <title>DEV Community: knowis AG</title>
      <link>https://dev.to/knowis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/knowis"/>
    <language>en</language>
    <item>
      <title>Service Granularity: When Is a Microservice Really “Micro”?</title>
      <dc:creator>Valentino Giorgio Pino</dc:creator>
      <pubDate>Wed, 03 Dec 2025 15:05:18 +0000</pubDate>
      <link>https://dev.to/knowis/service-granularity-when-is-a-microservice-really-micro-36aa</link>
      <guid>https://dev.to/knowis/service-granularity-when-is-a-microservice-really-micro-36aa</guid>
      <description>&lt;p&gt;In the early days of microservices, “small and independent” sounded simple enough. Teams broke apart their monoliths, spun up a dozen new services, and declared victory. &lt;/p&gt;

&lt;p&gt;Then came the reality: too many services, endless integration pain, duplicated logic, and distributed complexity that nobody asked for. &lt;/p&gt;

&lt;p&gt;Somewhere along the way, the word “micro” became misunderstood. It was never about size - it was about boundaries. &lt;/p&gt;

&lt;p&gt;So, what does “micro” really mean? &lt;br&gt;
And how small is too small? &lt;/p&gt;

&lt;h3&gt;
  
  
  The Size Myth
&lt;/h3&gt;

&lt;p&gt;Let’s start with a misconception: microservices are not defined by lines of code. &lt;/p&gt;

&lt;p&gt;A microservice with 500 lines can still be too big - if it mixes domains. &lt;br&gt;
And a microservice with 50,000 lines can still be fine - if it’s cohesive and autonomous. &lt;/p&gt;

&lt;p&gt;The essence of a microservice lies in independence: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    It can be developed and deployed independently&lt;/li&gt;
&lt;li&gt;    It owns its data&lt;/li&gt;
&lt;li&gt;    It exposes clear contracts&lt;/li&gt;
&lt;li&gt;    It doesn’t need other services to perform its core function&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not about how much code it has, but how much context it owns. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A microservice should be as small as possible, but no smaller than your domain allows.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Domain Lens: Finding Natural Boundaries
&lt;/h3&gt;

&lt;p&gt;Good service granularity starts with the domain, not the code. &lt;/p&gt;

&lt;p&gt;Domain-Driven Design (DDD) teaches us to identify bounded contexts - parts of the business that have their own language, models, and rules. These often map naturally to microservices. &lt;/p&gt;

&lt;p&gt;For example, in an e-banking system: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    The Accounts context manages balances and account types&lt;/li&gt;
&lt;li&gt;    The Payments context handles transactions and transfers&lt;/li&gt;
&lt;li&gt;    The Notifications context deals with messages and alerts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are clear boundaries. But if you split Payments into Payment Initiation, Payment Validation, Payment Execution, and Payment Logging - you’ve likely gone too far. &lt;br&gt;
 You’re no longer modeling the domain. You’re modeling your workflow. &lt;/p&gt;

&lt;p&gt;That’s a sign your services are too fine-grained. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Cost of Small
&lt;/h3&gt;

&lt;p&gt;Granularity comes with a price. Each service adds: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    A new deployment pipeline &lt;/li&gt;
&lt;li&gt;    Network overhead and latency &lt;/li&gt;
&lt;li&gt;    API versioning and compatibility concerns &lt;/li&gt;
&lt;li&gt;    More operational and monitoring complexity &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Multiply that by 50 or 100, and “micro” becomes “micromanagement.” &lt;/p&gt;

&lt;p&gt;If you find yourself building tools just to manage your services, you may have split too eagerly. The goal of microservices was to enable independence, not to require orchestration frameworks just to keep them talking. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your architecture diagram looks like a subway map, your services probably aren’t micro - they’re fragmented.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Signs of Healthy Granularity
&lt;/h3&gt;

&lt;p&gt;So how do you know when you’ve got it right? &lt;/p&gt;

&lt;p&gt;A well-sized microservice usually: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    Owns a clear part of the domain (bounded context)&lt;/li&gt;
&lt;li&gt;    Has a single, clear reason to change (cohesion)&lt;/li&gt;
&lt;li&gt;    Can be deployed independently without coordination&lt;/li&gt;
&lt;li&gt;    Contains all the logic it needs to deliver its function&lt;/li&gt;
&lt;li&gt;    Has stable external contracts and internal freedom&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Organizational Mirror
&lt;/h3&gt;

&lt;p&gt;Here’s where architecture meets reality: &lt;br&gt;
*&lt;em&gt;The “right” granularity depends on your team structure. *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Conway’s Law tells us that systems mirror the communication structures of their organizations. &lt;br&gt;
 If your teams are small, autonomous, and domain-aligned, you can afford more fine-grained services. &lt;br&gt;
 If your teams are large, cross-functional, and share ownership, coarser-grained services might work better. &lt;/p&gt;

&lt;p&gt;In other words: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The perfect service size is the one your organization can actually operate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Granularity is not a design decision in isolation - it’s a socio-technical trade-off between independence and coordination. &lt;/p&gt;

&lt;h3&gt;
  
  
  Evolving Granularity Over Time
&lt;/h3&gt;

&lt;p&gt;Service boundaries aren’t permanent. They evolve as your understanding grows. &lt;/p&gt;

&lt;p&gt;Early on, it’s often better to start coarser: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;   Combine related functionality into one service&lt;/li&gt;
&lt;li&gt;   Avoid over-segmentation until domain boundaries are clear&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As your product matures, split where it makes sense: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    When teams struggle to coordinate deployments&lt;/li&gt;
&lt;li&gt;    When a service’s model becomes inconsistent&lt;/li&gt;
&lt;li&gt;    When scaling or performance needs diverge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This evolutionary approach keeps your architecture aligned with your reality, not with theoretical purity. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Microservices are not designed - they’re discovered, iteratively.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Conclusion - “Micro” Is About Autonomy, Not Size
&lt;/h3&gt;

&lt;p&gt;The word microservice has always been a bit misleading. &lt;br&gt;
The goal was never to make services small - it was to make systems independent. &lt;/p&gt;

&lt;p&gt;The right granularity is achieved when: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    Your teams can move fast without tripping over each other&lt;/li&gt;
&lt;li&gt;    Your services are cohesive, stable, and aligned with real domains&lt;/li&gt;
&lt;li&gt;    Your system’s complexity grows linearly, not exponentially&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you get that balance right, your services stop being “micro” and start being meaningful. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the end, a microservice isn’t micro because it’s small - it’s micro because it’s focused.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>microservices</category>
      <category>granularity</category>
      <category>ddd</category>
      <category>scalability</category>
    </item>
    <item>
      <title>From Monolith to Microservices: Why It’s Never Just a Technical Decision</title>
      <dc:creator>Valentino Giorgio Pino</dc:creator>
      <pubDate>Wed, 12 Nov 2025 15:58:10 +0000</pubDate>
      <link>https://dev.to/knowis/from-monolith-to-microservices-why-its-never-just-a-technical-decision-19bg</link>
      <guid>https://dev.to/knowis/from-monolith-to-microservices-why-its-never-just-a-technical-decision-19bg</guid>
      <description>&lt;p&gt;For years, “We’re moving from a monolith to microservices” has been a familiar battle cry in software engineering. It’s usually framed as a technical evolution - a natural response to scalability challenges, complex deployments, or growing codebases. &lt;/p&gt;

&lt;p&gt;But anyone who has actually lived through that transition knows the truth: it’s never just a technical decision. &lt;/p&gt;

&lt;p&gt;Moving from a monolith to microservices doesn’t just reshape your software. It reshapes your organization, your communication patterns, your governance, and your culture. What starts as an architectural redesign quickly becomes a transformation of how people think and work together. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Technical Promise
&lt;/h3&gt;

&lt;p&gt;Let’s start with the surface-level motivations - the reasons most teams give when they plan a migration to microservices: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    Independent deployability &lt;/li&gt;
&lt;li&gt;    Horizontal scalability &lt;/li&gt;
&lt;li&gt;    Fault isolation &lt;/li&gt;
&lt;li&gt;    Domain-driven boundaries &lt;/li&gt;
&lt;li&gt;    Technology freedom &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are valid technical aspirations. But they only describe what you hope to achieve, not what it takes to get there. The challenge begins when the elegant diagrams meet the messy reality of human collaboration and organizational inertia. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6du4pp63oy3x26g9ikcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6du4pp63oy3x26g9ikcq.png" alt="Monolith: representation in C4, built with the knowis Cloud Solution Workbench" width="334" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Human and Organizational Layer
&lt;/h3&gt;

&lt;p&gt;When you decompose a system, you don’t just break down code - you break down responsibility. And responsibility lives with people. &lt;/p&gt;

&lt;h4&gt;
  
  
  Team Autonomy vs. Coordination
&lt;/h4&gt;

&lt;p&gt;Microservices are built on the idea of autonomous teams. But autonomy isn’t free. &lt;br&gt;
Every decision that was once implicit in a shared monolith - logging, error handling, data consistency - becomes an explicit cross-team contract. Suddenly, coordination replaces centralization. &lt;/p&gt;

&lt;p&gt;Without clear boundaries and communication practices, the dream of autonomy turns into integration fatigue. &lt;/p&gt;

&lt;h4&gt;
  
  
  Ownership and Accountability
&lt;/h4&gt;

&lt;p&gt;In a monolith, ownership is fuzzy. When something breaks, everyone owns it - and no one owns it. &lt;br&gt;
Microservices make ownership explicit. Each team becomes responsible for their service’s quality, stability, and API integrity. That sounds empowering - until you realize it also means you can’t hide behind “the backend team” anymore. &lt;/p&gt;

&lt;p&gt;This clarity is powerful, but it demands a cultural maturity many organizations underestimate. &lt;/p&gt;

&lt;h4&gt;
  
  
  Cognitive Load
&lt;/h4&gt;

&lt;p&gt;The cognitive shift is also profound. Developers who once worked in a single, familiar codebase now navigate a distributed ecosystem of APIs, contracts, and deployment pipelines. Complexity doesn’t disappear - it just moves. &lt;br&gt;
Instead of fighting monolithic coupling in code, teams now fight distributed coupling across services. &lt;/p&gt;

&lt;h3&gt;
  
  
  Conway’s Law in Action
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;“Organizations design systems that mirror their own communication structure.” - Melvin Conway, 1968 &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every organization is a mirror - and your architecture reflects it. &lt;br&gt;
If your company’s structure is centralized, with siloed decision-making, your “microservices” will likely reproduce that pattern. You’ll end up with a distributed monolith - decentralized code but centralized control. &lt;/p&gt;

&lt;p&gt;To truly embrace microservices, you must align organizational boundaries with domain boundaries. &lt;br&gt;
That means rethinking team topologies, decision-making processes, and the flow of information. You can’t modularize software without modularizing communication. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclrdub3j8fxdtustjven.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclrdub3j8fxdtustjven.png" alt="Microservices: representation in C4, built with the knowis Cloud Solution Workbench" width="791" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Decision-Making and Governance
&lt;/h3&gt;

&lt;p&gt;Microservices shift decisions downward - from architects to autonomous teams. But autonomy without alignment quickly becomes chaos. &lt;/p&gt;

&lt;p&gt;Teams need clarity on: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    How to model their domain &lt;/li&gt;
&lt;li&gt;    Which technologies are flexible vs. standardized &lt;/li&gt;
&lt;li&gt;    How to document and share architectural decisions &lt;/li&gt;
&lt;li&gt;    How to maintain coherence across dozens of independently evolving systems &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most successful organizations find a lightweight governance model - one that empowers teams while ensuring transparency and consistency. &lt;br&gt;
Architecture decision records (ADRs), collaborative modeling, and clear communication channels often matter more than any framework or tool. &lt;/p&gt;

&lt;h3&gt;
  
  
  Start with People, Not Code
&lt;/h3&gt;

&lt;p&gt;The transition from monolith to microservices is not primarily about decomposing software - it’s about evolving your system of work. &lt;br&gt;
It requires new skills, new boundaries, and new forms of trust. &lt;/p&gt;

&lt;p&gt;So before you start drawing new service diagrams, ask: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;    Are your teams ready for ownership? &lt;/li&gt;
&lt;li&gt;    Do you have shared understanding of your domains? &lt;/li&gt;
&lt;li&gt;    Can your organization tolerate decentralized decision-making? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer is &lt;strong&gt;&lt;em&gt;no&lt;/em&gt;&lt;/strong&gt;, microservices won’t save you. &lt;br&gt;
They’ll only expose what was already broken. &lt;/p&gt;

&lt;p&gt;The real success comes when architecture and organization evolve together - when your system’s structure and your team’s structure are in harmony. &lt;/p&gt;

&lt;p&gt;Microservices don’t solve your problems. They just make them visible. &lt;/p&gt;

&lt;p&gt;They also don’t create good architecture; they reveal the quality of your organizational structure and culture. &lt;/p&gt;

</description>
      <category>microservices</category>
      <category>monolith</category>
      <category>decisions</category>
      <category>transformation</category>
    </item>
    <item>
      <title>Will Software Architects Be Replaced by Technology?</title>
      <dc:creator>Valentino Giorgio Pino</dc:creator>
      <pubDate>Thu, 30 Oct 2025 15:47:34 +0000</pubDate>
      <link>https://dev.to/knowis/will-software-architects-be-replaced-by-technology-62b</link>
      <guid>https://dev.to/knowis/will-software-architects-be-replaced-by-technology-62b</guid>
      <description>&lt;p&gt;Despite the rapid rise of AI and modern automation tools, the role of the software architect will not vanish - quite the opposite. In business-critical systems, architectural work will remain essential and even gain importance as technology stacks, design patterns, and best practices grow ever more complex.&lt;br&gt;
What must change, however, is the path from idea to implementation. Today, too many iterations and costly reworks slow down delivery. The next evolution is not replacing architects but empowering them: moving away from fragmented toolchains toward integrated environments that connect brainstorming, modeling, and decision documentation in one place. With intelligent AI systems assisting at every step, architects and development teams can finally focus on what matters most - building the right solutions faster and with greater confidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  From Sticky Notes to Model Elements
&lt;/h3&gt;

&lt;p&gt;Architecture always starts with ideas - sketches, notes, and rough concepts. In our environment, these early thoughts don’t get lost on a whiteboard or sticky wall. The generic diagram allows architects to capture ideas as digital sticky notes for planning, collaboration, or quick annotations.&lt;br&gt;
But the real power lies in the transition: every sticky note can evolve into a model element. This seamless flow turns unstructured brainstorming into structured architecture, right within the same workspace. Architects can design freely and later formalize concepts into system components without switching tools or losing context - turning creativity directly into actionable design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-Time C4 Modeling
&lt;/h3&gt;

&lt;p&gt;System design is rarely a solo activity. Our platform enables teams to create System Architecture Design projects based on the C4 model, bringing real-time collaboration to architectural modeling.&lt;br&gt;
Multiple stakeholders, architects, developers, and product owners, can contribute simultaneously, visualizing system contexts, containers, and components as they evolve. Changes appear instantly for everyone, keeping the architecture consistent and shared. Real-time C4 modeling transforms diagrams from static documentation into a living, collaborative representation of the system’s structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI-Supported Architecture Decisions
&lt;/h3&gt;

&lt;p&gt;Architecture Decision Records (ADRs) are vital for transparency and long-term maintainability. However, documenting and reasoning about decisions can be time-consuming. That’s where AI assistance steps in.&lt;br&gt;
Within our environment, architects can create ADRs with integrated AI support that helps to formulate, evaluate, and refine decisions. The system can suggest templates, propose arguments, or even analyze consistency with existing design choices. The result: faster, clearer, and better-documented decisions, all without sacrificing human judgment.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Future: Human Insight, Machine Support
&lt;/h3&gt;

&lt;p&gt;Software architecture will always be a human discipline - anchored in experience, creativity, and strategic thinking. Yet, the tools surrounding architects are changing rapidly.&lt;br&gt;
By combining visual collaboration, real-time modeling, and intelligent assistance, we can bridge the gap between ideation and implementation. Technology will not replace software architects - it will amplify their capabilities and help them deliver better architectures, faster.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>ai</category>
      <category>c4modeling</category>
      <category>adrs</category>
    </item>
    <item>
      <title>Cursor AI meets design-aware context</title>
      <dc:creator>Valentino Giorgio Pino</dc:creator>
      <pubDate>Wed, 22 Oct 2025 15:08:37 +0000</pubDate>
      <link>https://dev.to/knowis/cursor-ai-meets-design-aware-context-29ij</link>
      <guid>https://dev.to/knowis/cursor-ai-meets-design-aware-context-29ij</guid>
      <description>&lt;h3&gt;
  
  
  We gave an AI Coding Assistant a design file.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Here is what happened.
&lt;/h3&gt;

&lt;p&gt;AI is changing everything - including how we build software. Coding assistants are everywhere, and the hype is real. But so are the concerns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Will it scale?&lt;/li&gt;
&lt;li&gt;Can I trust the output?&lt;/li&gt;
&lt;li&gt;What happens when things go wrong?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We get it. We are a software company ourselves and like everyone else: we are under pressure to deliver more, faster and smarter.&lt;/p&gt;

&lt;p&gt;So we asked us a simple question: what if we could make AI coding assistants "safe by design"?&lt;/p&gt;

&lt;h3&gt;
  
  
  knowis workbench meets coding assistant
&lt;/h3&gt;

&lt;p&gt;In our product, architecture and design are not an afterthoughts. They are executable assets packaged as living design files that define: what gets built, how it works and why it matters.&lt;br&gt;
From ideation to architecture to design specs, we align early and keep everything versioned and in sync with Git repo, pipelines and stacks.&lt;/p&gt;

&lt;p&gt;So we took a coding assistant - in this case, the choice fell on Cursor - to run a hackathon. We didn’t write user stories. We didn’t hand over vague requirements. Instead, we fed the coding assistant the structured design artifacts generated from the knowis Workbench. Simple.&lt;/p&gt;

&lt;p&gt;The Result? It worked well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code generation was fast, focused, and aligned with our intent.&lt;/li&gt;
&lt;li&gt;Architecture guardrails stayed intact, even with rapid iterations.&lt;/li&gt;
&lt;li&gt;Review and testing? Easier than ever.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  "Shift left" matters
&lt;/h3&gt;

&lt;p&gt;Shifting the (investment) focus to the "left" of the software development process doesn’t just mean testing earlier. It means thinking, designing earlier. Better. Because AI accelerates code but architecture and design defines what gets built.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion and Recommendation
&lt;/h3&gt;

&lt;p&gt;In a few words: you don’t need to fear coding assistants. You need to feed them better inputs. Learn more about knowis Cloud Solution Workbench and our vision of software development acceleration.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cursor</category>
      <category>csw</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
