© 2026 Devy
Search blog posts by title, description, tags, or content.
How I split signing responsibility, kid, key rotation, and legacy token handling while moving symmetric JWT signing to RS256, JWKS, and KMS.
How I split verification order and failure handling when old frontend tokens and new backend-issued tokens had to be accepted through the same browser cookies.
How the frontend connects the login flow from protected page access to backend authorize, callback, and token issuance.
The responsibility boundaries I used while moving login state from a frontend-owned flow to a backend-owned authentication flow.
A benchmark comparing JDK 25 Platform Threads, Virtual Threads, and Kotlin Coroutines across I/O-bound, CPU-bound, and high-concurrency scenarios with 10,000 tasks repeated 100 times.
A practical record of upgrading a production Spring Boot service from JDK 11 to 21, including the javax to jakarta transition, AWS SDK migration, and QueryDSL compatibility work.
A practical record of upgrading from JDK 21 to 25, enabling Virtual Threads, handling pinning issues, applying pattern matching switch, and moving to Gradle Kotlin DSL.
How I moved from Datadog to an open-source LGTM stack and built observability with an OTel Collector sidecar, noise filtering, MDC request tracing, and IRSA-backed S3 storage.
A practical guide to deploying Grafana's LGTM stack on EKS with Helm and collecting Spring Boot logs, traces, and metrics through an OTel Collector sidecar.
A guide to Spring AI core concepts, project setup, and the first AI call with ChatClient.
How to abstract OpenAI, AWS Bedrock, and Google Gemini behind one ChatClient interface and switch providers dynamically at runtime.
How to use Spring AI's message model, variable templating, database-backed prompt management, and JSON Schema-based structured output.
What I learned while migrating from AWS ECS to EKS and building an operating model with kustomize base/overlay, Kubernetes Gateway API, Karpenter node autoscaling, and blue/green deployment.
How I migrated from a legacy structure where every API returned 200 to a shared response and error system that uses HTTP status codes properly, improving monitoring, debugging, and team communication.
How I introduced a custom @Gateway annotation and facade layer into a traditional Controller-Service-Repository architecture to clarify domain responsibilities and improve team productivity.
How I moved scattered PHP notification logic into an independent Spring Boot notification server that handles Kakao AlimTalk, SMS, email, push, and Slack through one structure.
How I migrated a legacy payment system written in PHP to a Java/Spring and SQS-based event-driven architecture.
SQS looked attractive as an event-driven architecture, but in the payment domain it added more complexity than value. This post covers how I removed SQS and stabilized payment processing with synchronous APIs and Portone webhooks.
A real-world record of redesigning direct HTTP calls and one large synchronous prompt into a seven-step Spring AI pipeline.
Why I rebuilt my personal blog with React 19, Vite 7, and shadcn/ui, and how the project is structured.
How I implemented Cmd+K search with cmdk and added page transition animation with the View Transitions API.
How I created six color presets with shadcn/ui's oklch color system and implemented post series navigation.
How I built a search page with date and tag filters, then improved SEO with meta tags, sitemap, and RSS feed generation.
How I display visitor counts and daily page view charts on a static site using GA4 data.
Year-based post grouping, mobile sidebar UX improvements, robots.txt, OG image setup, and other small refinements that make the blog feel more complete.
How I built a GitOps-based deployment automation system during the ECS to EKS migration, combining ArgoCD, n8n, and GitHub Actions with different deployment strategies per environment.
A closer look at how React Hooks work and the practical patterns I use in real projects.
Practical TypeScript patterns that make React projects safer and easier to maintain.
A quick look at the core ideas and common usage patterns of Tailwind CSS.