이야기를 디버깅하는 개발자.

개발과 창작 사이에서, 사람들이 자기만의 이야기를 만들 수 있는 도구와 기록을 만듭니다.

roslyn.dev 자세히보기

개발 노트 93

작은 서비스의 효율 개선, 전력 절감이라고 말하기 전에

API 응답 시간이 짧아지고 서버 사용률이 낮아지면 개발자는 성능이 개선됐다고 말할 수 있습니다. 하지만 그 변화만으로 전력 사용량이나 탄소 배출이 줄었다고 결론 내리기는 어렵습니다. 서버 종류, 데이터센터 전력원, 요청량, 저장·네트워크 비용, 측정 기간이 모두 결과에 영향을 줄 수 있기 때문입니다.GitHub와 Yale Program on Climate Change Communication은 2026년 9월 미국의 GitHub 사용자 1,039명을 대상으로 소프트웨어 효율과 기후 인식을 조사했다고 발표했습니다. 이는 자발적으로 응답한 플랫폼 사용자 표본이며 전체 개발자를 대표하는 확률 표본으로 일반화할 수 없습니다. 조사 결과가 보여 주는 것은 효율 측정에 관심이 있다는 응답과 도구 수요이지, 특정 ..

.NET 8·9 지원 종료 전에 .NET 10 LTS로 옮길지 판단하는 기준

.NET 버전을 올릴 때는 새 기능 목록보다 현재 운영 중인 버전의 지원 종료 시점을 먼저 확인하는 편이 실용적입니다. Microsoft Lifecycle에 따르면 .NET 8 LTS와 .NET 9는 2026년 11월 11일(미국 태평양 시간 기준)에 지원이 종료될 예정입니다. 그 시점이 가까워진 지금 .NET 10으로 옮길지, 서비스별로 순서를 나눌지 검토할 필요가 있습니다.이 글은 프로젝트를 실제로 마이그레이션해 본 결과가 아니라, 공식 지원 일정과 실서비스 전환 때 확인할 항목을 정리한 점검표입니다. 2026년 10월 18일 Microsoft Lifecycle 페이지를 기준으로 확인했으며, 실제 작업 전에는 대상 OS·런타임·프레임워크 지원표를 다시 확인하십시오. Microsoft .NET 수명주기..

AI 보안 스캔과 자동 수정 PR을 어디까지 믿을까

정적 분석 도구는 문제를 찾고, 자동 수정 기능은 수정 코드를 제안합니다. 여기에 AI가 들어오면 코드의 주변 맥락을 해석해 스캔 결과를 설명하거나 여러 파일의 수정안을 만들 수 있습니다. 편리해 보이는 만큼 “취약점이 해결됐다”는 표시를 곧바로 신뢰해도 되는지 구분할 필요가 있습니다.GitHub는 2026년 10월 15일 pull request용 AI Scan과 코드 스캔 경고의 agentic autofix를 일반 제공한다고 각각 알렸습니다. 일반 제공은 사용 가능 범위가 넓어졌다는 제품 상태를 뜻하지만 모든 계정·저장소에서 동일한 조건이라는 의미는 아닙니다. 이 글은 발표를 바탕으로 검토 절차를 제안하며, 직접 도구를 실행해 효과를 측정한 후기는 아닙니다. AI Scan 공지와 agentic auto..

Next.js를 Vite로 옮기기 전에: Vinext 1.0 호환성 점검표

빌드 도구를 바꾸면 개발 속도가 빨라질 것이라는 이야기는 매력적입니다. 하지만 이미 사용자가 있는 앱에서는 첫 화면이 뜨는 것만으로 전환을 결정하기 어렵습니다. 로그인한 사람의 화면, 저장 직후 목록, 오래 열어 둔 탭에서도 기존 동작이 유지되어야 합니다.Cloudflare는 2026년 9월 28일 Vinext 1.0을 발표했습니다. Next.js 애플리케이션을 Vite 기반으로 실행하고 배포 환경의 선택지를 넓히려는 프로젝트입니다. 웹 개발을 오래 해 온 제게 흥미로운 지점은 새 도구 자체보다, 익숙한 API의 행동을 다른 기반에서 어디까지 유지하느냐입니다.이 글은 운영 서비스를 Vinext로 이전한 후기가 아닙니다. 10월 11일 확인한 공식 발표에서 현재 범위를 짚고, 실제 앱의 전환 검토에 사용할..

1인 서비스의 OpenTelemetry Collector export topology

OpenTelemetry를 처음 붙일 때 애플리케이션에서 로그·메트릭·트레이스를 원하는 백엔드로 바로 보내면 간단해 보입니다. 하지만 백엔드를 바꾸거나 샘플링·필터링을 조정할 때 애플리케이션을 다시 배포해야 합니다.혼자 운영하는 서비스에서도 Collector를 둘 가치가 있는지 판단하기 위해서는 멋진 다이어그램보다 데이터가 어디에서 사라질 수 있는지를 먼저 봐야 합니다. 이번 글에서는 최소 구성의 책임 경계를 정리합니다.세 신호는 서로 다른 질문에 답합니다트레이스는 한 요청이 어디를 지나갔는지 알려 주고, 메트릭은 시스템이 얼마나 바쁜지 보여 주며, 로그는 특정 사건의 맥락을 설명합니다. 셋을 모두 수집한다고 자동으로 장애 원인을 찾을 수 있는 것은 아닙니다.저는 알림에는 메트릭을, 원인 추적에는 트레이..

React 19.2 Activity와 useEffectEvent를 실제 화면에 적용할 때의 기준

React의 새 기능을 보면 기존 컴포넌트를 모두 바꾸고 싶어집니다. 그러나 화면이 빨라질지, 효과의 생명주기가 더 이해하기 쉬워질지는 코드의 사용 맥락에 따라 다릅니다.React 19.2에서 소개된 Activity와 useEffectEvent는 숨겨진 화면과 효과 이벤트를 다루는 선택지를 넓혀 줍니다. 이 글은 API 사용법을 나열하기보다 어떤 화면에 적용하고 어떤 화면에는 적용하지 않을지에 초점을 둡니다.Activity는 숨겨진 화면의 생명주기를 명시합니다조건부 렌더링은 보이지 않는 화면을 언마운트하는 단순한 방법입니다. Activity의 hidden 모드는 화면을 유지하면서 효과를 중단하고 업데이트를 늦출 수 있어, 다시 돌아올 가능성이 높은 화면의 상태를 보존하는 데 유용할 수 있습니다.하지만 모..

EF Core 11 Complex Types·FullJoin 프리뷰를 도입하기 전 검증 항목

ORM의 새 기능은 샘플 코드에서는 쉽게 동작하지만, 실제 서비스에서는 모델·데이터베이스·마이그레이션·쿼리 번역이 함께 움직여야 합니다. 특히 EF Core 11처럼 개발 중인 버전은 기능 목록보다 호환성 확인이 먼저입니다.이번 글에서는 Complex Types와 FullJoin 같은 기능을 바로 채택하자는 이야기가 아니라, 적용 여부를 판단하기 위해 어떤 실험을 해야 하는지 정리합니다. 테스트 환경과 버전은 글을 읽는 시점에 다시 확인해야 합니다.기능 이름보다 지원 범위를 고정합니다새 기능을 읽을 때는 무엇이 가능한지보다 어떤 데이터베이스와 런타임에서 가능한지 먼저 기록합니다. EF Core 11은 .NET 11 SDK와 런타임을 요구하는 개발 중 버전이므로, 기존 서비스가 사용하는 타깃 프레임워크와 ..

ASP.NET Core Rate Limiting 정책을 API 비용과 공정 사용량에 맞추는 법

API에 제한을 붙일 때 가장 먼저 떠오르는 문장은 ‘분당 몇 번 허용할까’입니다. 하지만 같은 분당 열 번이라도 읽기 요청과 파일 변환 요청의 비용은 다릅니다. 제한값 하나를 정하기 전에 정책의 목적을 분리해야 합니다.이번 글에서는 ASP.NET Core의 Rate Limiting 미들웨어를 특정 값의 정답이 아니라 정책 선택 도구로 읽어 보겠습니다. 실제 값은 부하 테스트와 사용자 행동을 보고 조정해야 합니다.제한의 목적을 네 가지로 나눕니다Rate Limiting은 악성 요청만 막는 기능이 아닙니다. 공정 사용량을 보장하고, 백엔드 자원을 보호하고, 외부 비용을 통제하고, 동시 작업 수를 제한하는 데 사용할 수 있습니다. 목적이 다르면 관찰할 지표와 실패 응답도 달라집니다.저는 엔드포인트마다 ‘무엇..

.NET 11 Runtime Async를 기존 async/await와 비교해 본 체크리스트

새 런타임 기능을 보면 곧바로 기존 프로젝트에 적용해 보고 싶어집니다. 하지만 운영 서비스에서는 기능이 빠르다는 기대보다 빌드·디버깅·라이브러리 호환성·롤백이 먼저입니다..NET 11의 Runtime Async는 이 글을 쓰는 시점에 프리뷰 문서에서 확인되는 기능입니다. 정식 출시 전까지 사양이 바뀔 수 있으므로, 아래 내용은 도입 권고가 아니라 실험 범위를 정하는 체크리스트로 읽어 주시기 바랍니다.프리뷰 기능은 서비스와 격리해 확인합니다첫 실험은 운영 코드의 브랜치가 아니라 작은 샘플 프로젝트에서 시작합니다. 동일한 SDK와 런타임을 사용하고, 기존 async/await 코드와 새 방식의 호출 경로를 나란히 둡니다. 결과가 다르면 어느 계층에서 달라졌는지 추적할 수 있어야 합니다.실험 환경에는 프로젝트..

OpenTelemetry가 기본으로 들어온 시대 — 1인 서비스의 관측 구성 최소안

느리다는 문의를 받고 로그를 열었는데 아무것도 못 찾은 적이 있습니다. 로그에는 요청이 들어왔다는 줄과 응답을 보냈다는 줄이 있었고, 그사이에 무슨 일이 있었는지는 비어 있었습니다. 데이터베이스가 느렸는지, 외부 API가 늦게 답했는지, 제 코드가 오래 걸렸는지 구분할 방법이 없었습니다.로그 도구를 바꾼다고 해결되는 문제가 아니었습니다. 필요한 것은 하나의 요청이 어디를 거쳐 얼마나 걸렸는지 이어 보는 방법이었고, 그게 분산 추적입니다. .NET 11에서는 ASP.NET Core가 OpenTelemetry 태그를 네이티브로 방출하는 방향으로 가고 있어서, 이 부분을 다시 정리해볼 만한 시점이 됐습니다. 아래 .NET 11 관련 내용은 현재 프리뷰 기준이며 GA까지 바뀔 수 있습니다.세 축은 각자 답하는 ..

반응형