박민후

새로운 문제를 찾고 있습니다

복잡한 문제를단순한 구조로 풀어냅니다.

소프트웨어 엔지니어 박민후입니다. 지난 2년간 병원용 CRM을 데스크톱(C#/WPF)에서 웹(React), 백엔드 API(Kotlin)까지 스택을 넓혀 가며 만들어 왔습니다. 문제를 발견하면 구조를 제안하고, 반복되는 일은 자동화합니다.

소개

2024년부터 스마트닥터에서 병원용 CRM을 만들고 있습니다. 데스크톱 앱(C#/WPF) 유지보수로 시작해 웹 전환(React)에서 담당 모듈의 설계와 구현을 맡았고, 지금은 백엔드 API(Kotlin/Spring)까지 직접 개발합니다. 한 사람이 프론트부터 백엔드까지 다루면 개발 속도와 정합성이 훨씬 좋아진다고 판단했고, 실제로 그렇게 일하고 있습니다.

증상보다 구조를 고치는 쪽을 선호합니다. 예약 1건이 바뀔 때마다 화면 전체를 다시 조회하던 구조를 단건 갱신으로 바꾸고, 64비트 전환을 막던 32비트 전용 연동 모듈들을 별도 프로세스로 분리해서 같은 문제가 반복되지 않게 만들었습니다.

반복 작업은 자동화합니다. 릴리즈 태깅·Jira 버전 관리·리뷰어 지정을 GitHub Actions로 자동화했고, 고객 스크린샷으로 오류를 파악하던 환경에 Sentry와 로딩속도 모니터링 봇을 도입했습니다. 도구를 만들어 팀의 시간을 아끼는 일을 좋아합니다.

기술

언어
TypeScriptC#KotlinSQL
프론트엔드
ReactNext.jsZustandTailwind CSSFSD 아키텍처
백엔드
SpringJPA/HibernateKafkaWebSocketMSSQLAWS S3
데스크톱
.NET · WPF · WinFormsWebView2 브릿지프로세스 간 통신(IPC)
도구 · 관측성
GitHub ActionsSentryGA4Jira 자동화

경력

  1. 2024.08 — 현재

    스마트닥터

    소프트웨어 엔지니어 — 병원용 CRM 개발

    • 데스크톱 CRM(C#/WPF) 유지보수·기능 개발로 시작해 웹 전환(React)에서 담당 모듈의 설계·구현을 수행하고, 백엔드 API(Kotlin/Spring)까지 직접 개발 — 약 2년간 Jira 티켓 735건, 머지 PR 772건 처리
    • 웹 CRM 전환에서 월 단위 예약 캘린더, 진료 기록 화면(분기 티켓 약 60건 규모의 최대 모듈), 시술 이력 조회 도구를 담당하고, 월 전체 일괄 조회를 주 단위 분할 캐싱으로 바꿔 조회 성능 개선
    • 예약 1건 변경에도 화면 전체를 재조회하던 데스크톱 새로고침 구조를 단건 갱신으로 개선하고, 내장 브라우저 CefSharp → WebView2 교체를 제안·주도
    • 네이티브 화면 3종을 'API 신설 → 독립 웹 앱 → 웹뷰 임베드' 패턴으로 이식하는 등 웹·API·데스크톱 3개 코드베이스에 걸친 크로스 스택 개발
    • 고객 스크린샷에 의존하던 오류 파악을 Sentry 도입과 GA4 기반 화면 로딩속도 모니터링 봇 구축으로 자동 수집·알림 체계로 전환
    • rc/hotfix 자동 태깅, Jira 릴리즈 자동 생성, rc 간 cherry-pick 체이닝, AI 코드리뷰 봇 운영 등 릴리즈·리뷰 자동화 체계 구축

    TypeScript / React / C# / .NET / Kotlin / Spring / Kafka / MSSQL / GitHub Actions / Sentry

프로젝트

재직 중 수행

데스크톱 → 웹 CRM 전환

2025 — 현재

스마트닥터 · 담당 모듈 설계·구현, 실행 기반까지

데스크톱 CRM의 핵심 화면을 웹(React)으로 옮기는 장기 마이그레이션. 월 단위 예약 캘린더 화면을 시작으로 담당 모듈의 설계와 구현을 수행했고, 월 전체 일괄 조회를 주 단위 분할 캐싱으로 바꿔 조회 성능을 개선했습니다. 웹이 데스크톱 안 웹뷰로 실행되는 구조여서 인증(refresh token)·네이티브 브릿지·WebView2 런타임 배포 같은 실행 기반을 함께 만들었고, 후반에는 'API 신설 → 독립 웹 앱 → 웹뷰 임베드' 패턴을 확립해 데스크톱 전용 화면 3종을 이식했습니다.

웹·API·데스크톱 3개 코드베이스에 걸친 크로스 스택 개발

React / TypeScript / Zustand / Kotlin / C# / WebView2

사내 프로젝트 · 코드 비공개

진료 기록 화면 신규 구축

2026

스마트닥터 · 웹 전환 최대 모듈

상병(진단명)·처방 입력, 진료비·진찰료 산정, 시술권 사용 처리, 진료 기록 저장까지 담는 진료 화면을 웹에 새로 구축했습니다. 처방코드 자동완성(입력 디바운싱), 진찰료 자동 산정·해제, 저장 버튼 연타로 인한 중복 생성 방지, form을 단일 진실 원천으로 만드는 리팩터링 등 세밀한 입력 UX와 데이터 정합성을 모두 다뤘습니다.

분기 관련 티켓 약 60건 규모의 최대 모듈을 담당

React / TypeScript / Kotlin / WebView2

사내 프로젝트 · 코드 비공개

콜센터 상담 관리 시스템

2026

스마트닥터 · 프론트엔드와 백엔드 API를 함께 개발

병원 콜센터의 상담 건(리드) 수집·배분·이력 관리를 담당하는 신규 웹 모듈. 전화 연동 미들웨어와 WebSocket으로 통신해 수신 전화에서 상담 건을 자동 생성하고, 엑셀 대량 업로드·개별 등록·수신 전화 자동 생성의 수집 채널 3종과 서버사이드 필터 체계를 갖췄습니다. 수신 1건에 상담 건이 중복 생성되던 경쟁 조건, 재연결 불안정 같은 현장 문제를 요구 접수부터 검증까지 짧은 주기로 해결했습니다.

콜센터를 운영하는 대형 성형외과 고객사 도입에 기여

React / TypeScript / Kotlin / WebSocket / MSSQL

사내 프로젝트 · 코드 비공개

결제 단말 연동

2026

스마트닥터 · 데스크톱·웹·백엔드에 걸친 연동

CRM 수납 흐름에 외부 결제 단말을 연동했습니다. 데스크톱(.NET)에는 자동 재연결을 갖춘 WebSocket 클라이언트를, 웹에는 결제 세션 상태머신을 구현했고, 결제 플러그인과 CRM이 서로 다른 파드에 붙으면 단말을 찾지 못하던 인메모리 세션 레지스트리의 한계를 Kafka fan-out 릴레이 구조로 해결했습니다.

멀티 파드 환경의 결제 세션 라우팅 구조를 직접 제안·설계

Kafka / WebSocket / C# / React / Zustand

사내 프로젝트 · 코드 비공개

데스크톱 CRM 64비트 전환

2025

스마트닥터 · 직접 제안하고 주도

CRM 본체의 64비트 전환을 가로막던 것은 통신사별 전화 연동과 결제 단말기의 32비트 전용 DLL이었습니다. 이들을 별도 32비트 프로세스로 분리하고 본체와 IPC로 통신하는 구조를 설계해, 프로세스 생명주기 관리·자동 재시작·오류 로깅까지 갖췄습니다. 사용 환경의 OS 비트 분포를 Sentry로 수집해 전환 판단의 근거 데이터도 만들었습니다.

레거시 연동 호환성을 유지한 채 64비트 전환 기반 마련

C# / .NET / WPF / IPC / Sentry

사내 프로젝트 · 코드 비공개

DUR(의약품 안전 점검) 연동과 검증 도구

2026

스마트닥터 · 웹·백엔드 연동 + 자체 검증 CLI

진료 화면에서 처방·상병 정보로 심평원(HIRA)의 의약품 안전 점검을 수행하는 기능을 웹 팝업부터 백엔드 브로커 연동까지 구축했습니다. 처방전 내 모든 점검 종류를 구현하고, 점검 응답을 케이스(YAML) 기반으로 자동 검증하는 CLI 도구를 직접 만들어 외부 연동의 정확성을 회귀 검증할 수 있게 했습니다.

Kotlin / React / AWS S3 / SQLite

사내 프로젝트 · 코드 비공개

개인 · 오픈소스

LRAGE — 법률 도메인 RAG 평가 툴킷

2024 — 2025

공동 연구 오픈소스 · 1저자

법률 태스크에서 LLM을 RAG 설정으로 평가하는 오픈소스 툴킷. lm-evaluation-harness를 확장해 Retriever·Reranker 추상 계층과 LLM-as-a-Judge 평가를 더했고, Pile-of-law 사전 구축 인덱스와 GUI를 제공합니다. 한국어(KBL)·영어(LegalBench)·중국어(LawBench) 법률 벤치마크로 검증했습니다.

1저자 데모 논문 arXiv 공개

Python / lm-evaluation-harness / Pyserini / Hugging Face

Woodshed — 기타 릭 기록·공유 커뮤니티

2026

개인 프로젝트 · 기획부터 배포까지

기타리스트가 릭(짧은 프레이즈)을 TAB으로 기록하고 공유하는 커뮤니티. 프렛을 클릭해 입력하고 해머온·벤딩 같은 아티큘레이션을 실제 악보로 렌더링하는 그래픽 TAB 에디터를 직접 만들었고, 계정·공개 범위·탐색 피드·좋아요/댓글/컬렉션에 신고 모더레이션 큐까지 서비스 운영에 필요한 요소를 갖췄습니다.

Next.js / TypeScript / Drizzle / Turso / Auth.js / Vitest

학력

  1. 2022.03 — 현재

    서울시립대학교

    컴퓨터과학부 재학 중

연락처

커피챗, 채용 제안, 협업 제안 모두 환영합니다.

alsgn2003@naver.com