전체 글
-
EWDK(Enterprise WDK) 를 사용하여 여러 Visual Studio 에서 Driver 개발하기윈도우/커널 드라이버 2026. 1. 8. 18:19
개요EWDK란?EWDK(Enterprise Windows Driver Kit)는 Microsoft에서 제공하는 독립 실행형 드라이버 개발 키트입니다. 일반 WDK와 달리 시스템에 설치할 필요 없이 ISO 파일 하나로 모든 빌드 도구를 포함하고 있어, 여러 WDK 버전을 충돌 없이 사용할 수 있습니다.일반 WDK vs EWDK 비교항목WDKEWDK설치 방식시스템에 설치ISO 마운트 또는 압축 해제Visual Studio 필요필수불필요 (자체 포함)MSVC 컴파일러VS에 의존자체 포함여러 버전 공존충돌 발생 가능충돌 없음시스템 영향레지스트리, 환경변수 변경없음이 가이드의 목적일반적으로 EWDK는 커맨드라인 빌드 전용으로 사용됩니다. 하지만 적절한 환경 구성을 통해 Visual Studio IDE에서도 EWD..
-
멀티 테넌시 아키텍처 완벽 가이드: SaaS 서비스의 핵심 설계 패턴아키텍처 설계/시스템 아키텍처 2026. 1. 4. 22:34
SaaS 서비스를 설계하다 보면 반드시 마주치는 개념이 있습니다. 바로 멀티 테넌시(Multi-Tenancy)입니다.이 글에서는 멀티 테넌시가 무엇인지, 어떤 구현 방식이 있는지, 그리고 실무에서 어떻게 적용해야 하는지 알아보겠습니다. 테넌트(Tenant)란?테넌트는 원래 "임차인"이라는 뜻입니다. 소프트웨어에서는 하나의 시스템을 사용하는 개별 고객 또는 조직을 의미합니다.예를 들어 Slack을 생각해보세요. A회사와 B회사 모두 Slack을 사용하지만, 서로의 메시지나 채널을 볼 수 없습니다. 여기서 A회사와 B회사가 각각 하나의 테넌트입니다.싱글 테넌트 vs 멀티 테넌트싱글 테넌트 (Single-Tenant)고객마다 완전히 분리된 인프라를 제공하는 방식입니다.장점완벽한 데이터 격리고객별 커스터마이징 ..
-
[서평] 클린 코드(Clean Code) - 애자일 소프트웨어 장인 정신도서리뷰/IT도서 2025. 12. 29. 03:18
"나쁜 코드도 돌아는 간다. 하지만 코드가 깨끗하지 못하면 개발 조직은 기어간다."📖 도서 정보항목내용원제Clean Code: A Handbook of Agile Software Craftsmanship저자로버트 C. 마틴 (Robert C. Martin, "Uncle Bob")역자박재호, 이해영출판사인사이트(insight)출간일2013년 12월 24일 (원서 2008년)페이지584쪽ISBN9788966262724🎯 이 책을 읽게 된 계기개발자라면 한 번쯤 들어봤을 "클린 코드". 보안 소프트웨어 개발을 하면서 minifilter 드라이버나 서비스 코드를 작성할 때마다 느끼는 것이 있다. 동작하는 코드를 작성하는 것과 유지보수 가능한 코드를 작성하는 것은 전혀 다른 영역이라는 것이다.특히 커널 드라이..
-
SaaS 권한 관리, 어디까지 복잡하게 만들어야 할까?아키텍처 설계/시스템 아키텍처 2025. 12. 29. 03:05
B2B SaaS 만들다 보면 꼭 나오는 질문이 있다."관리자 권한 어떻게 나눌 거예요?"처음엔 그냥 "관리자 / 일반 사용자" 이렇게 단순하게 가는데, 고객이 늘어나면 요구사항도 같이 복잡해진다. 이번에 권한 관리 쪽을 정리하면서 배운 내용을 기록해둔다.권한 관리 복잡도 레벨정리하다 보니 대충 4단계로 나눌 수 있었다.레벨방식복잡도유연성1고정 역할 (2-3개)⭐낮음2역할 확장 (5-6개)⭐⭐중간3커스텀 권한 조합⭐⭐⭐높음4리소스 기반 접근⭐⭐⭐⭐매우 높음레벨 1-2: 그냥 역할 몇 개 정해두는 거Admin, Manager, ViewerMVP나 초기 제품은 이걸로 충분하다. 굳이 복잡하게 갈 필요 없음.레벨 3: 권한을 조합하는 방식여기서부터 본격적인 RBAC라고 부를 수 있다.영업팀장 = [라이선스_조회..
-
Windows 커널 IRQL 완벽 가이드: 레벨별 제약사항과 크래시 방지 전략윈도우/커널 드라이버 2025. 12. 22. 01:50
개요Windows 커널 드라이버를 개발하다 보면 가장 먼저 부딪히는 벽 중 하나가 바로 IRQL(Interrupt Request Level)입니다. IRQL을 제대로 이해하지 못하면 BSOD(Blue Screen of Death)와 친해질 수밖에 없죠. 이 글에서는 각 IRQL 레벨의 특성과 제약사항, 그리고 흔히 발생하는 크래시 시나리오를 정리합니다.IRQL이란?IRQL은 Windows 커널에서 인터럽트 우선순위를 관리하는 메커니즘입니다. 현재 프로세서의 IRQL보다 낮거나 같은 우선순위의 인터럽트는 마스킹되어 처리가 지연됩니다.높은 우선순위 ↑ │ HIGH_LEVEL (31) - 머신 체크, 치명적 오류 │ POWER_LEVEL (30) - 전원 실패 ..
-
Windows Minifilter 드라이버에서 발생한 BSOD 0x7F (Double Fault) 커널 스택 오버플로우 분석 및 해결윈도우/커널 덤프분석 2025. 12. 22. 00:00
개요Windows Minifilter 드라이버를 개발하던 중 특정 조건에서 BSOD(Blue Screen of Death)가 발생하는 심각한 버그를 발견했습니다. 이 글에서는 해당 문제의 원인 분석과 해결 과정을 공유합니다. 증상시스템이 갑자기 블루스크린과 함께 크래시되었고, WinDbg를 통해 크래시 덤프를 분석한 결과 다음과 같은 정보를 확인할 수 있었습니다.UNEXPECTED_KERNEL_MODE_TRAP (7f)This means a trap occurred in kernel mode, and it's a trap of a kindthat the kernel isn't allowed to have/catch (bound trap) or thatis always instant death (doubl..
-
C++ std::mutex 중첩 Lock으로 인한 6초 지연 버그 분석윈도우/기타 이슈분석 2025. 12. 21. 21:43
개요Windows 서비스와 UI 클라이언트 간 IPC 통신에서 특정 명령어(learning_status)가 6초 이상 소요되는 문제가 발생했습니다. 원인은 std::mutex의 중첩 Lock 시도였습니다.증상[21:28:31.645] [InitialPollLearningStatus] semaphore acquired, calling IPC...[21:28:37.770] [IPCService.SendJsonCommand] cmd=learning_status, took 6113ms, result=-4, error=Pipe read timeoutlearning_status IPC 명령만 6초 이상 소요다른 명령어(get_status, get_statistics)는 정상 (수 ms)파이프 타임아웃으로 연결 끊김..