Monday, June 29, 2026

AWS AI Professional - When to use which AWS Lex vs AWS Bedrock Agents

 QBased on everything you've covered in both parts of your blog, here's a comprehensive summary that captures both the **fundamentals** and the **AI-specific capabilities** of OpenTelemetry.


Exam Decision Table

Requirement Choose Reason

Intent-based chatbot Amazon Lex Purpose-built for conversational workflows

Multi-turn slot filling Amazon Lex Native dialog management

Retrieve order status AWS Lambda Calls enterprise systems securely

Generate natural explanations Amazon Bedrock LLM reasoning and text generation

Summarize conversations Amazon Bedrock LLM summarization

Execute business logic AWS Lambda Orchestration and integration

Build a customer support bot with both transactional and generative capabilities Lex + Lambda + Bedrock Best of both worlds

An exam tip


A useful way to think about these services is:


Amazon Lex = How do I conduct the conversation? (intents, slots, dialog flow)

AWS Lambda = How do I retrieve or update enterprise data?

Amazon Bedrock = How do I reason over information or generate natural language?


If a scenario emphasizes structured conversations, slot filling, and predictable workflows, Lex is usually the stronger choice. If it emphasizes open-ended questions, summarization, content generation, or reasoning, Bedrock becomes the key service. Many real-world AWS architectures combine all three.

AWS AI Professional : Differences between Amazon Lex vs Bedrock Agent based chat

Excellent question. This is exactly the kind of architectural trade-off the **AWS Certified AI Engineer/AI Professional** exam tests.


The short answer is:


**Yes, Amazon Lex can absolutely be used in Scenario 2.** In fact, if the question is "build a chatbot", Lex is often the best answer. My previous architecture focused on a **Generative AI chatbot using Bedrock**, whereas **Lex is a conversational interface service**. They solve different parts of the problem.


Let's compare them.


---


# Option 1: Bedrock + Lambda (What I showed)


```

User

   │

API Gateway

   │

Lambda

   │

Order Database

   │

Bedrock

   │

Response

```


Lambda performs:


* User authentication

* Order lookup

* Prompt construction

* Calls Bedrock


This is ideal when responses require:


* reasoning

* summarization

* natural conversation

* generation


Example


Customer asks


> I ordered a laptop last week. Can you tell me when it'll arrive, and if it's delayed, explain why?


The application retrieves the order details and Bedrock generates a natural response such as:


> Your laptop was shipped yesterday and is expected to arrive on Thursday. The one-day delay was caused by severe weather affecting the regional distribution center.


This type of response benefits from an LLM.


---


# Option 2: Amazon Lex


```

Customer


   Lex Bot


Intent


Lambda


Order DB


Return Status


Lex Response

```


Lex understands:


* intents

* slots

* conversation flow


For example:


Customer:


> Where is my order?


Lex:


"What is your Order ID?"


Customer:


> 12345


Lex invokes Lambda.


Lambda queries the database.


Lex replies:


> Your order is shipped.


No LLM is required.


---


# Can Lex access enterprise systems?


Yes.


This is one of its primary capabilities.


The typical flow is:


```

Lex



Lambda



ERP



CRM



SAP



Salesforce



Order Database



Return result

```


Lex itself doesn't directly connect to databases.


Instead, it invokes Lambda, which integrates with enterprise systems.


---


# When is Lex the better choice?


Suppose your call center only needs to answer:


* Order status

* Reset password

* Account balance

* Cancel order

* Book appointment


These are deterministic workflows.


Lex is ideal because:


* Lower cost

* Lower latency

* Predictable responses

* Built-in dialog management

* Slot filling

* Intent recognition


No hallucination risk.


---


# Where Lex struggles


Imagine the customer asks:


> My package is delayed. Based on my purchase history, what would you recommend while I wait?


Lex cannot generate rich, contextual answers.


It relies on predefined intents and responses.


A foundation model such as Bedrock excels here.


---


# The modern AWS architecture


Increasingly, enterprises combine both services.


```

                 Customer

                     │

                 Amazon Lex

                     │

         Understand Intent

                     │

                Invoke Lambda

                     │

          ┌──────────┴───────────┐

          │                      │

     Order Database         Amazon Bedrock

          │                      │

          └──────────┬───────────┘

                     │

              Final Response

```


For example:


Customer:


> I ordered a phone two weeks ago. Is it delayed? If so, write an apology email that I can send to my manager because I won't have the device before my business trip.


Flow:


1. Lex identifies the intent ("Order Inquiry").

2. Lambda retrieves the order information.

3. Lambda sends the order details and the user's request to Bedrock.

4. Bedrock generates a personalized explanation and apology email.

5. Lex delivers the response.


Lex manages the conversation, while Bedrock provides reasoning and content generation.


---


# Exam Decision Table


| Requirement                                                                      | Choose                 | Reason                                     |

| -------------------------------------------------------------------------------- | ---------------------- | ------------------------------------------ |

| Intent-based chatbot                                                             | Amazon Lex             | Purpose-built for conversational workflows |

| Multi-turn slot filling                                                          | Amazon Lex             | Native dialog management                   |

| Retrieve order status                                                            | AWS Lambda             | Calls enterprise systems securely          |

| Generate natural explanations                                                    | Amazon Bedrock         | LLM reasoning and text generation          |

| Summarize conversations                                                          | Amazon Bedrock         | LLM summarization                          |

| Execute business logic                                                           | AWS Lambda             | Orchestration and integration              |

| Build a customer support bot with both transactional and generative capabilities | Lex + Lambda + Bedrock | Best of both worlds                        |


### An exam tip


A useful way to think about these services is:


* **Amazon Lex** = *How do I conduct the conversation?* (intents, slots, dialog flow)

* **AWS Lambda** = *How do I retrieve or update enterprise data?*

* **Amazon Bedrock** = *How do I reason over information or generate natural language?*


If a scenario emphasizes **structured conversations, slot filling, and predictable workflows**, Lex is usually the stronger choice. If it emphasizes **open-ended questions, summarization, content generation, or reasoning**, Bedrock becomes the key service. Many real-world AWS architectures combine all three.



AWS AI professional Use Case 2: Customer Support Chatbot

Business Problem


Customers ask:


Where is my order?

Refund status?

Cancel order


Some answers require company data.


Architecture

Customer


   API Gateway


      Lambda


 ┌──────────────┐

 │ Order System │

 └──────────────┘


      │


 Amazon Bedrock


      │


Claude / Nova Model


      │


Customer

Flow


User:


Where is my order 123?


Lambda



Order database lookup



Send order details



Prompt Bedrock



Generate response


Services

API Gateway

Lambda

DynamoDB

Bedrock

IAM

CloudWatch

Why Lambda?


LLMs should not directly access databases.


Lambda


validates user

retrieves order

formats prompt

Exam Twist


Which component should retrieve customer order?


Correct answer:


Lambda


NOT


Foundation model



AWS profession - Use Case 1: Enterprise Document Q&A (RAG)

Business Problem


A company has thousands of internal PDFs containing HR policies, legal documents, engineering manuals, and SOPs.


Employees ask:


"How many vacation days can I carry forward?"


The LLM should answer only from company documents.


Architecture

                User

                  │

           API Gateway

                  │

              Lambda

                  │

          Amazon Bedrock

                  │

        Knowledge Base

                  │

        Vector Database

              │

      S3 Document Store

Flow

PDFs uploaded to S3

Bedrock Knowledge Base automatically

parses documents

chunks text

generates embeddings

stores embeddings

User asks question

API Gateway invokes Lambda

Lambda calls Bedrock

Bedrock retrieves relevant chunks

Foundation model generates answer

Answer returned

AWS Services

Service Purpose

S3 Document storage

Bedrock Knowledge Base RAG

Bedrock Foundation Model Answer generation

Lambda Business logic

API Gateway REST endpoint

IAM Permissions

CloudWatch Logs

Why This Architecture?


Advantages


No model training

Hallucination reduced

Documents stay private

Serverless

Easy scaling

Common Exam Question


Why not fine-tune?


Answer:


Because company documents change frequently.


Knowledge Bases update automatically while fine-tuning requires retraining.


Sunday, June 28, 2026

OpenTelemetry Summary

OpenTelemetry (OTel) has become the de facto open standard for collecting telemetry data from modern distributed applications. Instead of relying on vendor-specific SDKs, OpenTelemetry provides a common framework for generating **Traces**, **Metrics**, and **Logs**, allowing organizations to export observability data to a wide variety of backends such as Jaeger, Grafana Tempo, Prometheus, Elastic, Datadog, Splunk, Dynatrace, Honeycomb, AWS X-Ray, Azure Monitor, and many others.


For traditional applications, OpenTelemetry helps developers understand request flows across multiple microservices, identify performance bottlenecks, detect failures, and correlate metrics with logs and traces. As AI applications have evolved into distributed, multi-agent systems, OpenTelemetry has naturally extended to become one of the strongest foundations for **AI Observability**.


Unlike conventional applications, AI workloads involve several additional dimensions that require observability:


* Agent orchestration

* Multiple LLM invocations

* RAG retrieval pipelines

* MCP tool execution

* Prompt engineering

* Token consumption

* AI cost

* Model selection

* User conversations

* AI quality metrics


OpenTelemetry allows all of these to be attached as **trace attributes**, **events**, and **child spans**, giving developers complete end-to-end visibility into an AI request.


---


# What we built


Across the two blog articles, we progressively evolved a simple FastAPI application into a production-inspired AI system instrumented with OpenTelemetry.


We covered:


## Part 1


* Installing OpenTelemetry SDK

* Configuring the OpenTelemetry Collector

* Running Jaeger using Docker Compose

* Creating spans

* Exporting traces

* Viewing traces in Jaeger

* Instrumenting a simple AI endpoint


This established the foundation for distributed tracing.


---


## Part 2


We then enhanced the same application to instrument advanced AI workflows.


### Q2 — Multi-Agent Reasoning Chains


We traced


* Supervisor agent

* Research agent

* Retriever agent

* Tool agent

* Validation agent

* Summarizer agent


while recording


* Agent handoffs

* Workflow execution

* Reasoning events

* Token usage

* Cost

* Execution latency


This allows engineers to understand exactly how an agentic workflow executed.


---


### Q3 — Prompt Explosion Detection


Instead of only measuring token usage, we monitored


* Original prompt size

* Expanded prompt size

* Prompt amplification ratio

* Additional tokens introduced

* Source responsible for prompt growth


This helps identify unnecessary prompt expansion before it causes excessive cost and latency.


---


### Q4 — AI Cost Attribution


We demonstrated cost tracking at multiple levels.


* Per span

* Per conversation

* Per user

* Per tenant

* Total request


This makes it possible to answer questions like


* Which tenant spends the most?

* Which conversation exceeded budget?

* Which agent is most expensive?


---


### Q5 — RAG Retrieval Quality


Rather than treating retrieval as a black box, we monitored


* Retrieved documents

* Retrieved chunks

* Similarity score

* Retrieval latency

* Context utilization

* Retrieval quality


This provides visibility into whether poor LLM responses are caused by retrieval rather than the model itself.


---


### Q6 — MCP Tool Usage


We instrumented every MCP invocation.


For each tool execution we captured


* MCP Server

* Tool Name

* Transport

* Latency

* Retry count

* Status

* Response size

* Request ID


This allows developers to identify unreliable external dependencies in an agentic workflow.


---


# Important AI Observability Principles


Throughout the examples we also introduced several production best practices.


### Attribute useful metadata


Rather than storing only latency, record


* model

* provider

* tokens

* cost

* conversation ID

* tenant

* user

* workflow


---


### Use events for reasoning


Instead of creating unnecessary spans, capture


* reasoning decisions

* handoffs

* retries

* validation

* planning


as events inside spans.


---


### Avoid high-cardinality attributes


Avoid storing


* Full prompts

* Complete documents

* Entire conversations


inside spans.


Instead prefer


* Prompt hash

* Prompt size

* Token count

* Conversation ID


to reduce storage cost.


---


### Aggregate intelligently


Record detailed information at the span level while also aggregating key metrics at the overall trace or conversation level.


Examples include


* Total tokens

* Total cost

* Total latency

* Total tool calls

* Number of agent hops


This provides both fine-grained diagnostics and high-level operational insights.


---


# Why OpenTelemetry is an Excellent Foundation for AI


OpenTelemetry is not an AI observability product—it is an observability framework. That distinction is important because it means you can instrument your AI applications once and send the telemetry to virtually any backend or AI observability platform. As the ecosystem evolves, your instrumentation remains stable while your choice of backend can change.


It also integrates naturally with modern AI frameworks such as:


* LangChain

* LangGraph

* LlamaIndex

* AutoGen

* CrewAI

* Semantic Kernel

* OpenAI Agents SDK

* Amazon Bedrock Agents


This makes it an ideal foundation for enterprise AI systems.


---


# What's Next


OpenTelemetry provides the raw telemetry, but many AI-specific platforms build on top of it to offer higher-level capabilities such as prompt management, evaluations, hallucination analysis, experiment tracking, model comparisons, and dataset management.


The natural next step is to explore how OpenTelemetry integrates with tools such as **Langfuse**, **LangSmith**, **OpenLIT**, **Arize Phoenix**, **MLflow**, **Helicone**, and **Traceloop**, combining standard observability with AI-native analytics for a complete view of modern AI applications.


**One key takeaway:** treat OpenTelemetry as the **observability backbone** of your AI platform. Instrument once, enrich traces with AI-specific metadata, and build increasingly sophisticated monitoring—from simple request tracing to comprehensive visibility into multi-agent reasoning, RAG quality, costs, governance, and production reliability.


Saturday, June 27, 2026

AWS Developer AI Professional Tips

AWS Developer AI Professional Tips

Remember these common patterns:

Security Groups are instance-level, stateful, and allow-only.

Network ACLs are subnet-level, stateless, and support both allow and deny rules.

Use Security Group references instead of IP addresses whenever possible.

RDS should never be opened to 0.0.0.0/0; allow access only from the application Security Group.

AWS evaluates both the NACL and the Security Group—traffic must be permitted by both.

Security Groups are commonly used to secure Lambda ENIs, ECS tasks, EKS worker nodes, and Interface VPC Endpoints used by services like Amazon Bedrock

Tuesday, June 23, 2026

VPC details 1


Withtin AWS we have region, and inside various availability zones, and we can create AWS Account within and within that VPC. VPC can have multiple rules, can it have inbound and outbound internet access, With VPCs, we can connect between VPCs. By default two VPCs are not allowed to talk to each other. We can connect VPCs together with various mechanisms. We can also have multiple VPCs in single AWS Account. These also not allowed to talk to each other unless we do a VPC peering. 


How VPCs work? 


AWS Cloud 

 - Region

- Availability Zone 1

- Availability Zone 2

- Availability Zone 3


When we create VPC, it is mostly created to span across various availability zone 


Within VPC, we can have Public and Private Subnets . We don't necessarily need both of them. Public subnet we can put resource within it to make outbound internet calls. It is also be able to receiving inbound traffic from outside world. We can keep things like EC2 with web portal etc. The Public Subnet communicate with the outside world via the Internet gateway . Traffic coming from outside will also flow through the Internet gateway 


Private Subnets can be used for any resource that need not have the direct access to outside world such as RDS , databases etc. However, we can still have the Private subnet entities to talk to the outside world although inbound traffic is not allowed. 


Two public subnets within VPC can interact each other. Public and private subnets component can take to each other, Multiple private subnets can talk to each other as well. 


Friday, June 19, 2026

AWS Details about IAM policies and Roles

 # AWS IAM for Generative AI Applications (AWS Developer AI Certification Notes)


Your notes are correct, but for the certification exam you should think of IAM not merely as a user management service, but as the **security foundation that controls every interaction in a GenAI architecture**.


Consider a simple Bedrock application:


```text

User

  |

API Gateway

  |

Lambda

  |

Amazon Bedrock

  |

Foundation Model

```


Every arrow in the diagram requires permissions.


The user needs permission to invoke the API.


The Lambda function needs permission to invoke Bedrock.


Bedrock may need permission to access S3, Knowledge Bases, Guardrails, or CloudWatch logs.


IAM is the service that governs all these interactions.


---


# What is IAM?


AWS Identity and Access Management (IAM) is the service that enables:


### Authentication


Who are you?


Examples:


* IAM User

* IAM Role

* Federated User

* IAM Identity Center User


---


### Authorization


What are you allowed to do?


Examples:


```json

{

  "Effect":"Allow",

  "Action":"bedrock:InvokeModel",

  "Resource":"*"

}

```


This determines whether an action succeeds or fails.


---


# IAM Building Blocks


Think of IAM as five layers:


```text

Users

Groups

Roles

Policies

Identity Providers

```


---


# IAM Users


IAM Users represent a person or application that needs direct AWS access.


Examples:


* Developer

* Administrator

* DevOps Engineer


An IAM User consists of:


```text

Username

Password

Access Key

Secret Key

```


Historically many applications used IAM Users.


Modern AWS architecture prefers IAM Roles.


---


## Certification Tip


Exam questions frequently test:


**Never embed IAM User access keys inside applications.**


Bad:


```python

aws_access_key="ABC123"

aws_secret="XYZ456"

```


Good:


```text

EC2 Instance Role

Lambda Execution Role

ECS Task Role

```


---


# IAM Groups


Groups simplify permission management.


Example:


```text

Developers

├── John

├── Alice

├── Bob

```


Attach:


```text

AmazonBedrockReadOnlyAccess

```


to the group.


All users inherit permissions.


---


# IAM Roles


Roles are the most important IAM concept for GenAI architectures.


A role is an identity that can be assumed temporarily.


Unlike users:


```text

IAM User

    Permanent credentials


IAM Role

    Temporary credentials

```


---


## Why Roles Matter


Without a role:


```text

Lambda

   |

   X

   |

Bedrock

```


Access denied.


With a role:


```text

Lambda

  |

Execution Role

  |

Bedrock

```


Access granted.


---


# Lambda → Bedrock Example


Suppose Lambda invokes:


```python

client.invoke_model()

```


Lambda requires:


```json

{

  "Effect": "Allow",

  "Action": [

    "bedrock:InvokeModel"

  ],

  "Resource": "*"

}

```


Without it:


```text

AccessDeniedException

```


---


# IAM Policies


Policies define permissions.


Policies are JSON documents.


Example:


```json

{

  "Version":"2012-10-17",

  "Statement":[

    {

      "Effect":"Allow",

      "Action":"bedrock:InvokeModel",

      "Resource":"*"

    }

  ]

}

```


---


# Policy Components


### Effect


```text

Allow

Deny

```


---


### Action


What operation?


Examples:


```text

bedrock:InvokeModel

s3:GetObject

lambda:InvokeFunction

```


---


### Resource


Which resource?


Example:


```text

Specific S3 bucket

Specific Lambda

Specific Bedrock model

```


---


### Condition


Additional restrictions.


Example:


```text

Only from a specific IP

Only during business hours

Only from a specific VPC

```


---


# Principle of Least Privilege


One of the most tested concepts.


Bad:


```json

{

  "Action":"*",

  "Resource":"*"

}

```


Good:


```json

{

  "Action":"bedrock:InvokeModel",

  "Resource":"arn:aws:bedrock:..."

}

```


Give only the permissions required.


---


# IAM in Bedrock Architectures


## Scenario 1


Lambda invokes Bedrock


Required:


```text

Role attached to Lambda

```


Permissions:


```text

bedrock:InvokeModel

```


---


## Scenario 2


Knowledge Base accesses S3


Required:


```text

Knowledge Base Role

```


Permissions:


```text

s3:GetObject

s3:ListBucket

```


---


## Scenario 3


Agent invokes Lambda Tool


Required:


```text

Bedrock Agent Role

```


Permissions:


```text

lambda:InvokeFunction

```


---


## Scenario 4


Agent accesses Knowledge Base


Required:


```text

Knowledge Base Access

```


Permissions:


```text

bedrock:Retrieve

```


---


# Identity Providers (IdP)


Large enterprises usually do NOT create thousands of IAM users.


Instead:


```text

Microsoft Entra ID

Okta

Ping Identity

Google Workspace

```


act as Identity Providers.


Users sign in using corporate credentials.


---


# Federation


Authentication:


```text

Corporate Login

     |

Identity Provider

     |

AWS

```


AWS issues temporary credentials.


No AWS passwords required.


---


# IAM Identity Center


Formerly:


```text

AWS SSO

```


Provides centralized workforce authentication.


Useful for:


* Employees

* Contractors

* Enterprise Users


---


## Example


Employee logs into:


```text

Amazon Q Business

```


IAM Identity Center validates:


```text

User

Group Membership

Application Access

```


before allowing access.


---


# IAM Roles in AI Systems


Very common exam architecture:


```text

User

 |

API Gateway

 |

Lambda

 |

Bedrock

 |

Knowledge Base

 |

S3

```


Roles involved:


### Lambda Execution Role


```text

Invoke Bedrock

```


---


### Knowledge Base Role


```text

Read S3

Write embeddings

```


---


### Bedrock Agent Role


```text

Invoke tools

Access KB

Call Lambda

```


---


# IAM Access Analyzer


A commonly overlooked exam topic.


Access Analyzer identifies:


* Public resources

* Cross-account access

* Unintended permissions


Example:


```text

S3 Bucket

```


accidentally shared externally.


Access Analyzer detects it.


---


# IAM Credential Types


### Long-Term Credentials


Used by:


```text

IAM Users

```


Examples:


* Passwords

* Access Keys


---


### Temporary Credentials


Used by:


```text

IAM Roles

Federated Users

```


Preferred approach.


---


# Common AWS Developer AI Exam Scenarios


### Scenario 1


Lambda cannot invoke Bedrock.


Most likely:


```text

Missing IAM Role

or

Missing bedrock:InvokeModel permission

```


---


### Scenario 2


Bedrock Agent cannot call Lambda tool.


Most likely:


```text

Missing lambda:InvokeFunction permission

```


---


### Scenario 3


Knowledge Base ingestion fails.


Most likely:


```text

Knowledge Base Role

cannot read S3 documents

```


---


### Scenario 4


Enterprise users should log in using corporate credentials.


Best solution:


```text

IAM Identity Center

```


not thousands of IAM Users.


---


Monday, June 15, 2026

What are some of the limitations of Jaeger ?

 Limitations of using Jaeger as a distributed tracing tool

Jaeger is a preferred choice when it comes to distributed tracing. But engineering teams need more than traces to resolve issues quickly. They need access to both metrics and traces. Metrics such as response times, error rates, request rates, and CPU usage are equally important to understand application performance.


A few key challenges of using Jaeger as a distributed tracing tool are as follows:

Only provides trace data. You will have to use another tool for metrics and logs management.

Databases supported by Jaeger need active maintenance.

Jaeger's web UI is limited with basic visualizations.



Implementing distributed tracing in Jaeger - Sample App

Sample HotRod application

The sample HotRod application is a demo ride-sharing application. It shows four locations and by clicking on a location you call a ride to that location.



The sample HotRod application is a demo ride-sharing application. It shows four locations, and by clicking on a location, you call a ride to that location.


Steps to get started with Jaeger distributed tracing

In order to see how Jaeger is used for distributed tracing, let's run the demo application HotRod and see its traces using Jaeger.


Steps to run HotRod application with Jaeger:


The recommended way to run Jaeger is with a Docker image. If you don't have docker installed, install it from the official Docker website.


The HotRod application is implemented in Go, so you need to install Go.


Run Jaeger backend as an all-in-one Docker image with the following command:


docker run -d -p6831:6831/udp -p16686:16686 jaegertracing/all-in-one:latest

Once the container starts, you will be able to access Jaeger's UI at http://localhost:16686/search


Clone Jaeger's GitHub repo in local and change directory


git clone https://github.com/jaegertracing/jaeger.git

cd jaeger

Run the sample HotRod application


go run ./examples/hotrod/main.go all

You will be able to access the app UI at http://127.0.0.1:8080/




To see traces on Jaeger, we need to generate some load. Click on different locations a number of times. When you access the Jaeger UI now, you can find the list of services along with its trace captured on Jaeger.


Jaeger also creates a dependency diagram by tracing how requests flow and shows it in the dashboard. From the dependency diagram, we can see that the HotRod application has four microservices and two databases.


Sunday, June 14, 2026

What is instrumentation? and how does it work in Jaegar ?

Instrumentation is the process of generating telemetry data(logs, metrics, and traces) from your application code. It is essentially writing code that enables your application code to emit telemetry data, which can be used later to investigate issues.


Most distributed tracing tools offer clients libraries, agents, and SDKs to instrument application code. Jaeger's client libraries for instrumentation are based on OpenTracing APIs.


OpenTracing was an open-source project aimed at providing vendor-neutral APIs and instrumentation for distributed tracing. It later got merged into OpenTelemetry. Jaeger has official client libraries in the following languages:


Go

Java

Node.js

Python

C++

C#

When a service is instrumented, it generates spans for incoming transactions and attaches trace context to outgoing transactions.


Saturday, June 13, 2026

What is Jaeger UI ?

 Jaeger UI is the official, React-based web interface for Jaeger, a popular open-source distributed tracing platform. It serves as a visual dashboard for developers and engineers to monitor, analyze, and troubleshoot microservices and complex software architectures.Key Features of Jaeger UITrace Visualization: It allows you to see the entire lifecycle of a single user request as it travels across various microservices, databases, and internal function calls.Timeline and Flame Graph Views: Traces are displayed in easy-to-read timelines or flame graphs, breaking down exactly how much time each service spends processing a request.Root Cause Analysis: It helps pinpoint the exact service where a delay occurs or an error is thrown.Service Dependency Graph: It automatically generates a visual map illustrating how different microservices communicate and depend on each other.Trace Filtering: You can search for traces using exact criteria such as operation name, time elapsed (latency), tags, or log errors.How it Works Under the HoodYour application microservices are instrumented with tracing libraries (like OpenTelemetry).As a request travels through your system, the execution path is collected and stored.The Jaeger Query service reads this stored trace data and powers the UI, turning the backend JSON data into interactive charts.For a visual walkthrough of how to use Jaeger UI to trace errors and debug latency in a real-world application:

Saturday, June 6, 2026

What is MCP

MCP (Model Context Protocol) is an open-source standard for connecting AI applications to external systems.


Using MCP, AI applications like Claude or ChatGPT can connect to data sources (e.g. local files, databases), tools (e.g. search engines, calculators) and workflows (e.g. specialized prompts)—enabling them to access key information and perform tasks.



Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect electronic devices, MCP provides a standardized way to connect AI applications to external systems.


What can MCP enable?

Agents can access your Google Calendar and Notion, acting as a more personalized AI assistant.

Claude Code can generate an entire web app using a Figma design.

Enterprise chatbots can connect to multiple databases across an organization, empowering users to analyze data using chat.

AI models can create 3D designs on Blender and print them out using a 3D printer.

Why does MCP matter?

Depending on where you sit in the ecosystem, MCP can have a range of benefits.

Developers: MCP reduces development time and complexity when building, or integrating with, an AI application or agent.

AI applications or agents: MCP provides access to an ecosystem of data sources, tools and apps which will enhance capabilities and improve the end-user experience.

End-users: MCP results in more capable AI applications or agents which can access your data and take actions on your behalf when necessary.


The Model Context Protocol includes the following projects:

MCP Specification: A specification of MCP that outlines the implementation requirements for clients and servers.

MCP SDKs: SDKs for different programming languages that implement MCP.

MCP Development Tools: Tools for developing MCP servers and clients, including the MCP Inspector

MCP Reference Server Implementations: Reference implementations of MCP servers.


MCP follows a client-server architecture where an MCP host — an AI application like Claude Code or Claude Desktop — establishes connections to one or more MCP servers. The MCP host accomplishes this by creating one MCP client for each MCP server. Each MCP client maintains a dedicated connection with its corresponding MCP server.

Local MCP servers that use the STDIO transport typically serve a single MCP client, whereas remote MCP servers that use the Streamable HTTP transport will typically serve many MCP clients.


The key participants in the MCP architecture are:

MCP Host: The AI application that coordinates and manages one or multiple MCP clients

MCP Client: A component that maintains a connection to an MCP server and obtains context from an MCP server for the MCP host to use

MCP Server: A program that provides context to MCP clients



For example: Visual Studio Code acts as an MCP host. When Visual Studio Code establishes a connection to an MCP server, such as the Sentry MCP server, the Visual Studio Code runtime instantiates an MCP client object that maintains the connection to the Sentry MCP server. When Visual Studio Code subsequently connects to another MCP server, such as the local filesystem server, the Visual Studio Code runtime instantiates an additional MCP client object to maintain this connectio


Note that MCP server refers to the program that serves context data, regardless of where it runs. MCP servers can execute locally or remotely. For example, when Claude Desktop launches the filesystem server, the server runs locally on the same machine because it uses the STDIO transport. This is commonly referred to as a “local” MCP server. The official Sentry MCP server runs on the Sentry platform, and uses the Streamable HTTP transport. This is commonly referred to as a “remote” MCP server.


Wednesday, June 3, 2026

What is LiteLLM?

 


LiteLLM is an open-source AI gateway and Python SDK that allows you to call over 100 Large Language Model (LLM) APIs using a single, unified interface. It translates your requests into the specific formats required by various providers like OpenAI, Anthropic, Google Gemini, Azure, and AWS Bedrock.Key FeaturesDrop-in OpenAI Compatibility: You can swap LLM providers without rewriting your code; any model can be treated as if it were a standard OpenAI object.Spend Tracking: Accurately track API costs by key, user, team, or organization.Model Fallbacks: Set up rules so that if a primary model fails or is rate-limited, your application automatically routes requests to a backup model.Enterprise Security: Provides features like virtual API keys, rate-limiting, edge-level guardrails, and access control.Observability: Easily log your inputs and outputs to tools like Langfuse, Helicone, Lunary, and MLflow.How You Can Use ItPython SDK: Integrate it directly into your Python codebase for seamless, local script-based multi-model support.Proxy Server (AI Gateway): Deploy it as a standalone server to create a centralized API gateway for your entire organization, making it easy to manage users and budgets.For a quick beginner introduction to how LiteLLM standardizes the code for various models and providers:

Monday, June 1, 2026

OpenTelemetry Tracing

 OpenTelemetry (OTel) tracing is an open-source, vendor-neutral standard for monitoring requests as they flow through complex software systems. It tracks the exact path of a transaction, breaking down what happened, how long each step took, and whether the operation succeeded or failed.Core ConceptsTraces: A Trace represents the entire lifecycle of a single request or transaction from start to finish.Spans: The building blocks of a trace. Every individual operation, function call, or service request within a trace is captured as a Span. Spans contain metadata like start/end times, attributes (key-value pairs), and error statuses.Trace Context Propagation: This is the magic of distributed tracing. It passes a unique identifier (Trace ID) between different services and processes, ensuring that spans generated in separate microservices, databases, or servers are linked into one cohesive story.Why is it important?Modern applications, such as microservices, involve multiple networked components. When a problem or slowdown occurs, pinpointing the root cause is difficult. OTel tracing visualizes the end-to-end request path as a "waterfall diagram," making it easy to identify bottlenecks, diagnose latency, and track down errors.The OpenTelemetry AdvantageNo Vendor Lock-in: You instrument your code once using the OTel API and SDK. You can then send this data to any backend you prefer (e.g., Jaeger, Prometheus, Datadog) without having to rewrite your application code.Automatic Instrumentation: OTel offers libraries and agents that can automatically trace standard web requests, database queries, and framework calls without requiring you to manually write tracing code