주말 아침 - 주간 닷넷 #6

한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.


:pushpin: .NET 10 네트워킹 개선 사항

주요 내용

  • HTTP WinHttpHandler 인증서 캐싱 성능 최적화, QUERY 메서드 추가
  • WebSocket 새로운 WebSocketStream API로 스트림 기반 추상화 제공
  • macOS TLS 1.3 클라이언트 지원, 서버 전송 이벤트 포매터 추가

:pushpin: 분석은 위임하고, 성능은 직접: Visual Studio Copilot Profiler Agent

주요 내용

  • Visual Studio 2026의 AI 기반 성능 분석 도구, 자연 언어로 성능 질문 가능
  • CsvHelper 프로젝트에서 위임 호출 오버헤드 15-24% 감소
  • 벤치마크 작성, 실행, 분석 전체 사이클 자동화

:pushpin: AutoMapper 사용 중단: 2025년 Mapperly와 Mapster

https://medium.com/net-code-chronicles/stop-using-automapper-mapster-mapperly-zero-allocation-5f0c59e8e895

  • 저자: Aliaksandr Marozka
  • 태그: #mapping #performance #sourcegenerator

주요 내용

  • 리플렉션 기반 AutoMapper 대신 소스 생성 기반 Mapster/Mapperly로 제로 할당 매핑
  • 컴파일 시점 매핑 코드 생성으로 런타임 오버헤드 제거
  • Mapperly는 완전한 소스 제너레이터로 AOT 호환성 우수, Mapster는 유연성 제공

:pushpin: DbContext는 Thead-Safe하지 않다: EF Core 쿼리를 올바르게 병렬화하는 방법

  • 저자: Milan Jovanović
  • 태그: #efcore #threading #performance

주요 내용

  • .NET 5+ IDbContextFactory<T>로 독립적인 DbContext 인스턴스 생성, Task.WhenAll로 병렬 실행
  • 실제 벤치마크에서 순차 36ms → 병렬 13ms로 약 60% 성능 향상
  • 연결 풀 고갈과 컨텍스트 생성 오버헤드 같은 트레이드오프 고려 필요

:pushpin: .NET 10과 메모리: 더 적은 힙, 더 스마트한 GC, 더 빠른 앱

  • 저자: Hazem Ali
  • 태그: dotnet10 #gc #performance #memory

주요 내용

  • JIT 이스케이프 분석으로 더 많은 객체를 스택 할당, GC 압력 감소
  • DATAS 모드 기본값 변경으로 애플리케이션 메모리 요구에 맞춰 힙 크기 동적 조정
  • 코드 수정 없이 재컴파일만으로 성능 향상

:pushpin: unsafe의 환상: Unity에서 C# 포인터 vs 안전한 배열 벤치마킹

  • 저자: Furkan Kırat
  • 태그: #unity #performance #benchmark #unsafe

주요 내용

  • 포인터 산술 unsafe 코드보다 표준 배열 접근이 13% 더 빠름, SIMD 자동 벡터화로 34% 향상
  • JIT 컴파일러가 경계 검사를 효율적으로 제거
  • “측정하라, 추측하지 말라”: 현대 .NET에서는 안전한 코드가 더 나은 결과

:pushpin: 멀티테넌트 .NET 9 애플리케이션 구축: Row-Level Security와 이벤트 격리

https://medium.com/@vahidbakhtiaryinfo/building-multi-tenant-net-9-applications-with-row-level-security-and-event-isolation-78cea5f60233

  • 저자: Vahid Bakhtiary
  • 태그: #multitenant #security #architecture

주요 내용

  • SaaS 필수 요소인 Row-Level Security(RLS)와 이벤트 격리 구현
  • EF Core 글로벌 쿼리 필터, 테넌트 컨텍스트 주입, DB 수준 RLS 정책 조합
  • 이벤트 버스 테넌트별 격리, 감사 로깅, 성능 고려사항

:pushpin: Windows에서 .NET과 Markdown을 위해 Zed 에디터 사용해보기

  • 저자: Andrew Lock
  • 태그: #tools #editor #productivity

주요 내용

  • Rust 기반 Zed 에디터의 뛰어난 성능과 빠른 응답성
  • C# 개발 지원 충분하지만 Razor 파일 미지원, 마크다운 편집 기능 부족
  • 고성능 에디터 원하는 개발자에게 매력적이나 마크다운 작업 시 VS Code 우월

:pushpin: .NET 성능 최적화: e커머스 페이지의 15초 로딩 수정하기

  • 저자: Mashrul Haque
  • 태그: #performance #optimization #efcore #caching

주요 내용

  • 15초 페이지 로딩을 700ms 이하로 단축: N+1 쿼리 63개→1개, 복합 인덱스로 3.2초→12ms
  • Redis 캐싱으로 67% DB 부하 감소, async/await로 3.5초→800ms 단축
  • 장바구니 포기율 78%→44% 개선, 추정 추가 수익 약 $4.2백만

:pushpin: EF Core 쿼리가 느린 이유와 해결 방법

  • 저자: Round The Code
  • 태그: #efcore #performance #optimization

주요 내용

  • N+1 쿼리 문제, 불필요한 추적, 인덱스 부족 등 일반적인 성능 문제 진단
  • 비효율적인 쿼리 패턴 개선으로 .NET 애플리케이션 최적화
  • 실용적인 수정 방법으로 쿼리 시간 단축

:pushpin: .NET Aspire로 클라우드 네이티브 개발 간소화하기

https://medium.com/simform-engineering/simplifying-cloud-native-development-with-net-aspire-■■62839de977

  • 저자: Karan Raj
  • 태그: aspire #cloudnative #distributed

주요 내용

  • 관찰 가능하고 프로덕션 준비된 분산 애플리케이션 구축 프레임워크
  • 서비스 디스커버리, 헬스 체크, 텔레메트리 통합 기본 제공
  • 마이크로서비스 아키텍처 복잡성 추상화, 로컬 개발부터 프로덕션까지 일관된 경험

:pushpin: Blazor Server 메모리 관리: Circuit 누수 방지

https://medium.com/net-code-chronicles/blazor-memory-management-circuit-leaks-bd960d2d7111

  • 저자: Aliaksandr Marozka
  • 태그: blazor #memory #performance

주요 내용

  • 일반적인 누수 패턴: 이벤트 구독 미해제, 싱글톤에 사용자별 상태 저장, Timer/JS Interop 참조 미해제
  • IDisposable 구현, 사용자별 상태는 Scoped 서비스로 분리
  • 실무 사례: 단일 -= 누락으로 시간당 약 100MB 메모리 증가

:pushpin: .NET 10 도입으로 AIS.NET 성능을 7% 향상시킨 방법

https://endjin.com/blog/2025/12/how-dotnet-10-boosted-ais-dotnet-performance-by-7-percent-for-free

  • 저자: Ian Griffiths
  • 태그: dotnet10 #performance #benchmark

주요 내용

  • 코드 수정 없이 .NET 10 업그레이드만으로 7% 성능 향상
  • .NET Core 3.1 이후 총 2.1배 이상 성능 개선, 초당 1,014만 개 AIS 메시지 처리
  • 런타임 최적화만으로 “no code changes” 성능 이득 입증

:pushpin: C# 14 Null-조건부 할당 연산자로 더 깔끔한 코드 작성하기

  • 저자: Dave Brock
  • 태그: #csharp14 #null #syntax

주요 내용

  • if (customer != null) { customer.Order = value; }customer?.Order = value;로 간결화
  • 복합 할당 연산자(+=, -=) 지원으로 이벤트 핸들러 패턴 가독성 향상
  • 우측 피연산자는 좌측이 null이 아닐 때만 실행되어 부작용 방지

:bookmark_tabs: 가벼운 읽을거리

후보 항목 중 이슈로 선정되지 않은 가벼운 읽을거리들


AsNoTracking으로 EF Core 성능 높이기

  • 읽기 전용 작업에서 엔티티 추적 오버헤드 제거
  • 읽기 중심 작업에서 10-30% 빠른 쿼리 속도, 메모리 사용량 감소

EF Core에서 소유 엔티티 마스터하기: 더 깔끔한 복합 타입

  • 부모 엔티티에 종속된 독립적인 ID 없는 객체로 계층적 데이터 처리
  • 단일 테이블 구조로 쿼리 성능 향상, 자동 캐스케이드 삭제로 데이터 일관성 보장

.NET에서 프로세스 내 Pub/Sub Hub로 로컬 디커플링하기

  • System.Threading.Channels를 사용한 Pub/Sub 시스템 구축
  • 외부 메시지 브로커 없이 애플리케이션 내부에서 컴포넌트 간 느슨한 결합

.NET에서 Null에 대해 이야기하자

  • nullable reference types, null 객체 패턴, Option/Maybe 타입, Guard 절 등 다양한 전략
  • 각각의 트레이드오프를 균형 있게 분석

던지는 예외와 잡는 예외의 진짜 차이

  • 예외를 던지는 것과 잡는 것의 개념적, 실무적 차이 설명
  • 예외 계층 구조 설계, 적절한 예외 래핑 기법

C# Advent - St. Nicholas의 선물

  • Spectre.Console로 St. Nicholas’ Magical Gift Registry CLI 도구 구현
  • C# 14 field 키워드로 명시적 backing field 없이 null 체크 처리

강타입 데이터로 산타의 워크숍 파싱하기 - 석탄 없이

  • DateOnly/TimeOnly, readonly record struct로 강타입 ID 생성하여 컴파일 타임 안전성 확보
  • IParsable/ISpanParsable로 제네릭 파싱과 할당 제로 성능 최적화

크리스마스 트리비아

  • 100개의 크리스마스 퀴즈를 JSON에서 로드하여 무작위 출제
  • Spectre.Console로 컬러풀한 터미널 UI와 입력 검증 구현

C#의 Value Objects: 일관된 비즈니스 데이터를 위한 구조화된 접근법

  • 도메인 주도 설계의 핵심 패턴, 식별자 없이 값으로만 정의되는 불변 객체
  • Money, Email, Address 등의 예제로 구현 방법과 동등성 비교 설명

(RoomSharp) 현대 .NET을 위한 소스 생성 데이터 레이어

  • Android의 Room 스타일 .NET 구현, 속성으로 엔티티와 DAO 정의
  • 컴파일 시점에 데이터 액세스 코드 자동 생성, 타입 안전한 DB 작업

.NET에서 자체 Named Entity Recognition 모델 구축하기

  • ML.NET을 사용하여 .NET 환경에서 자체 NER 모델 훈련 및 배포
  • 인물, 장소, 날짜 등 자동 인식 과정 단계별 설명

Roslyn 코드 변환으로 C#에서 완전한 애플리케이션 로깅 달성하기

  • Roslyn을 사용한 코드 변환으로 애플리케이션 전체에 자동 로깅 주입
  • AOP 접근법으로 보일러플레이트 로깅 코드 제거

.NET이 제공하는 추상화의 비용

  • .NET의 편안함과 안전성이 동반하는 런타임 오버헤드, 메모리 사용량 트레이드오프 분석
  • 언제 추상화를 받아들이고 언제 저수준 최적화가 필요한지 판단 기준

Scrutor로 .NET DI에서 서비스 자동 등록하기

  • 어셈블리 스캐닝, 데코레이터 패턴, 컨벤션 기반 등록 등 고급 DI 기능
  • 수동 서비스 등록의 보일러플레이트 제거, 유지보수성 향상

LogWard 0.3.0: 완전한 SIEM 대시보드, C# SDK 및 로드맵

  • 개인정보 보호 우선 오픈소스 로그 관리 및 SIEM 플랫폼
  • .NET 6/7/8용 공식 C# SDK, 실시간 위협 감지, MITRE ATT&CK 히트맵 제공

Chronolap

  • .NET 개발자를 위한 랩 추적 지원 고급 스톱워치 라이브러리
  • OpenTelemetry 통합, 의존성 주입 지원, 스레드 안전성
6개의 좋아요