한 주 동안 .NET 생태계에서 있었던 주요 이슈와 아티클, 기술 트렌드를 정리해 소개합니다.
새 런타임 async가 .NET 11에 들어온다 - 1부
- 저자: Steven Giesel
- 태그: #dotnet11 async #runtime #performance
주요 내용
- C#의 async/await가 컴파일러가 생성하는 상태 머신으로 구현되는 구조
- 런타임이 async를 더 직접적으로 다루는 변화와 그로 인한 실행 방식 차이
- await 경계를 넘는 로컬 변수 보관 방식(스택 유지, 필요 시 힙으로 spill) 언급
- 벤치마크 코드와 측정 결과(시간/할당)로 기존 모델과 비교
SynchronizationContext와 예외 처리 관련 섹션 포함
현대적인 .NET에서의 T4 템플릿
- 저자: Ian Griffiths
- 태그: dotnet #t4 #codegen visualstudio
주요 내용
- T4 템플릿의 기본 구성(텍스트 + C# 코드 블록)과 변환 결과 예시
- Visual Studio 통합이 여전히 .NET Framework 기반으로 동작하는 현황
- modern .NET 기반 템플릿 실행 도구(TextTransformCore) 관련 맥락
- 커맨드라인 실행 또는 빌드 과정에 연결하는 프로젝트 설정 방향
- 기존 코드베이스에서 modern .NET 실행으로 옮기는 전환 흐름
C#의 Readonly vs Immutable vs Frozen: 차이와(많은) 벤치마크
- 저자: Davide Bellone
- 태그: csharp #collections #performance #benchmarks
주요 내용
- Readonly 컬렉션(변경 가능한 컬렉션에 대한 읽기 전용 뷰) 개념
- Immutable 컬렉션(불변 스냅샷) 개념과 생성/변경 시 동작 방식
- Frozen 컬렉션(조회 최적화, 사전 계산) 개념과 생성 방법
- 생성/조회(인덱스 접근,
Contains,TryGetValue) 중심 벤치마크 항목 - 성능/메모리 할당 결과 비교
.NET Core 개념: CLR 프로파일러
https://medium.com/@meriffa/net-core-concepts-clr-profiler-fd038af06259
주요 내용
- CLR Unmanaged Profiling APIs의 콜백 모델과 관측 범위(모듈/스레드/예외/JIT/GC/IL 등)
- Profiling API를 .NET에서 사용하기 위한 구성 요소(Silhouette) 언급
- Linux에서 CLR 프로파일러를 만드는 프로젝트/빌드 구성 흐름
- NativeAOT로 네이티브 라이브러리(.so) 형태로 빌드하는 구성
- 예외 분석 시나리오에 프로파일러를 적용하는 예시
벤치마크로 보는 Redis 낙관적 락(Optimistic Locking)
- 저자: Shahar Shokrani
- 태그: #redis #concurrency #performance #benchmarks
주요 내용
- Redis에서 공유 상태(예: 잔고/재고)를 업데이트할 때의 동시성 문제 시나리오
- Lua 스크립트(원자적), 분산 락, WATCH 기반 트랜잭션(낙관적) 3가지 접근 비교
- WATCH/MULTI/EXEC 트랜잭션에서 충돌 시 재시도 흐름
- 읽기→검증→차감→히스토리 기록 같은 처리 단계 정리
- 벤치마크/로드 테스트 결과로 방식별 차이를 비교
더 안전한 도메인 모델을 위한 .NET 강타입 ID 구현
- 저자: Ali Hamza Ansari
- 태그: csharp #ddd #typesafety #efcore
주요 내용
- 다른 엔티티의 ID를 잘못 전달하는 케이스가 버그로 이어지는 상황
- primitive obsession 관점에서 int/string ID 사용의 문제
- 엔티티별 강타입 ID(예: PlayerId, TeamId)로 ID 혼용을 제한하는 접근
- EF Core 모델과 DB 매핑을 포함한 예시 흐름(PostgreSQL 사용)
- 여러 엔티티에 반복 적용하는 패턴
.NET으로 분산 Key-Value 스토어 만들기
https://medium.com/@heartbeats.zero/building-a-distributed-key-value-store-in-net-0e6a54a37099
- 저자: Heartbeats Zero
- 태그: dotnet #distributed #kvstore #clustering
주요 내용
- .NET 기반 분산 Key-Value 스토어 프로젝트(Clustron DKV) 소개
- 클러스터 구성과 멀티 노드 동작을 전제로 한 구성 요소 나열
- 관리 서비스(스토어/인스턴스 관리, 메트릭 수집)와 스토어 인스턴스 역할 분리
- 단일 머신에서 다중 인스턴스를 실행하는 시나리오 언급
- PowerShell 기반 운영/모니터링/스트레스 테스트 흐름
함수 합성이 코드를 더 좋게 만드는 방법
https://blog.stackademic.com/how-function-composition-can-make-your-code-better-1138302e10b9
- 저자: Mori
- 태그: csharp #functional #composition #architecture
주요 내용
- 명령형 코드에서 검증/조회/비즈니스 로직/저장이 섞이는 예시 제시
- 작은 함수 단위로 나눠 파이프라인 형태로 결합하는 함수 합성 접근
- 비동기 흐름에서 단계 함수를 연결하는 구조
- 에러 처리/검증 로직을 합성 가능한 형태로 분리하는 패턴
- 구성 요소를 조합해 재사용하는 형태의 예시 코드 포함
Unity에서 메모리 할당을 테스트로 검증하기
https://medium.com/@davidreimer/testing-for-memory-allocations-in-unity-fbb4e8bb3f53
- 저자: David Reimer
- 태그: #unity #performance #testing #gc
주요 내용
- Unity Test Runner에서 Edit/Play/Player 모드로 테스트를 실행하는 옵션
- tight loop 등에서 할당을 줄이려는 목적과 GC 관련 맥락
- 프로파일러 분석 이전에 단위 테스트로 할당 여부를 감지하는 접근
- 업그레이드 시 내장 메서드/코드 경로의 할당 회귀를 잡는 용도 언급
- 테스트 어셈블리 생성과 구성 절차 안내
Needlr의 keyed services: 여러 구현 관리
- 저자: Nick Cosentino
- 태그: dependencyinjection dotnet #needlr #keyedservices
주요 내용
- 동일 인터페이스의 여러 구현(결제/스토리지/알림 등)을 키로 선택하는 시나리오
- .NET 8 keyed services 개념과
GetKeyedService<T>(key)기반 해결 - Needlr에서 keyed 서비스 등록과 해결(resolution) 흐름
- factory 기반 keyed 등록 방식과 자동 discovery 결합
- 서비스 수명(lifetime)과 주입(injection) 관련 항목
가벼운 읽을거리
후보 항목 중 메인 이슈로 선정되지 않은 가벼운 읽을거리들
비즈니스 룰을 쓰는 대신, 시스템이 룰을 학습하게 하자
- 사람이 내린 판단을 기록해 학습 데이터로 만들고, 자동 처리/에스컬레이션을 나누는 흐름
- 이벤트 기반 환불 처리 예시로 human-in-the-loop 의사결정을 다룸
ValueTask 이해하기(그리고 쓰지 말아야 할 때)
Task의 힙 할당 비용과ValueTask<T>의 목적(동기 완료 경로에서 할당 감소) 정리- “항상 async”, “호출 빈도 낮음”, “한 번만 await” 같은 제약/주의점 언급
처음엔 빠른데, 시간이 지나면 앱이 느려지는 이유
- 요청마다 생성되는 객체가 장수 객체가 되면서 정리 비용이 커지는 흐름
- static 리스트에 문자열을 누적하는 예시로 객체 수명(lifetime) 모델을 설명
Vertical Slice Architecture in .NET
- 기능(유스케이스) 단위로 API→로직→DB 코드를 한 곳에 모으는 구조
Features/{Domain}/{UseCase}형태의 프로젝트 구조 예시
C#와 TypeScript의 문자열 enum: 값을 제대로 얻기
- C# enum의 문자열 표현(
ToString(),nameof)과 attribute 기반 매핑 패턴 - TypeScript에서의 enum/문자열 리터럴 패턴과 출력 형태 비교
C#에서 추상 팩토리 패턴 구현하기: 단계별 가이드
- 제품군 식별→추상 제품 인터페이스→구체 제품/팩토리→클라이언트 코드까지 단계별 구성
- 구현 실수 패턴과 테스트 관점의 체크 항목
C# LINQ 치트 시트
- LINQ 관련 자료를 치트 시트/리스트 형태로 모아둔 구성
- 게시물 자체는 링크/리스트 중심으로 구성됨
Windows 11 메모장에 이미지 지원이 추가된다
- Windows 11 Notepad의 마크다운 기능 일부로 이미지 지원을 추가하는 내부 테스트 언급
- 설정에서 기능을 끌 수 있는 옵션과 툴바 버튼 노출 관련 내용
