류기현
Frontend Developer책임이 분명한 설계를 지향합니다. 심전도 그래프 위의 복잡한 인터랙션 사이에 책임이 뒤섞이지 않도록 레이어를 분리했습니다.
코드 리뷰에 맥락을 더해줄 방법을 고민합니다. 글로써 작업의 배경이나 코드 한 줄의 근거를 설명할 수 있고, 자동화 도구를 사용해 작업의 변경 범위를 시각화했습니다.
경력
메디컬에이아이
서울2024.11 – 현재소프트웨어그룹 프로덕트본부 FE팀 · Frontend Developer
대표 프로젝트
ECG-GRAPH Ruler for Tablet
메디컬에이아이2025.02 ~ 2025.04태블릿 환경에서 확대, 이동, 정밀 측정이 서로 방해하지 않게 터치 조작을 판별하고 제어한 ECG 그래프 측정 도구
핵심 기여
터치 의도를 즉시 판별하지 않는 지연 평가 설계
데스크톱에서는 마우스와 키보드로 확대와 측정을 구분할 수 있었지만, 태블릿에서는 확대, 이동, 측정이 모두 손가락 터치로 시작되었습니다.
손가락이 화면에 닿은 순간 바로 기능을 정하지 않고, 800ms 유지 여부, 이동 거리, 터치 개수를 보고 사용자의 의도를 나중에 판단하도록 했습니다.
단일 터치 입력에서도 줌·측정·정밀측정 의도를 높은 정확도로 구분하여 오작동을 줄였습니다.
여러 기능 레이어가 공유하는 상태를 '트랜잭션'처럼 관리
확대 기능과 측정 기능이 같은 pointer 이벤트를 동시에 받으면서, 한쪽이 동작하는 동안 다른 기능이 끼어들어 화면이 흔들리거나 측정이 끊기는 문제가 있었습니다.
5개 상태(Ruler, Zoom, PreciseMeasurement, ButtonDragging, RulerOff)를 갖는 Ref 기반 공유 제어 상태를 도입하고, 줌·측정 레이어 양쪽이 이 상태를 읽어 자기 동작의 실행 여부를 결정하도록 했습니다. 드래그처럼 짧은 행동은 진입 시 이전 상태를 저장하고 종료 시 복원하는 트랜잭션 방식으로 분리했습니다.
여러 인터랙션 레이어가 같은 이벤트를 두고 경쟁하는 환경에서도, 각 행동이 서로를 방해하지 않는 구조를 만들었습니다.
드래그 동작과 태블릿 전용 정책 분리
태블릿 특성 상 드래그 가능한 요소가 늘어나면서, 드래그 자체의 메커니즘과 '드래그 중 다른 인터랙션을 어떻게 제어할 것인가'라는 플랫폼별(데스크톱·태블릿) 로직이 뒤섞일 수 있었습니다.
드래그의 기본 동작은 공통 훅으로 분리하고, 태블릿에서 필요한 상태 전환과 실행 조건은 별도 래퍼에서 주입하도록 나눴습니다.
같은 드래그 요소를 데스크톱과 태블릿에서 서로 다른 기준으로 재사용할 수 있게 되었습니다.
MAIUI 3.0
메디컬에이아이2026.04 ~ 현재사내 컴포넌트 라이브러리의 메이저 버전 개편
핵심 기여
컴포넌트 스펙 문서화로 팀 내부 소통 비용 감소
기존 버전에서는 컴포넌트마다 스펙 해석과 코드 스타일이 달라서 잦은 마이너 업데이트가 필요했습니다.
개발 규칙을 Git으로 관리해서 AI가 일관된 코드 초안을 생성하는 게 중요하다고 생각했습니다. 파일럿 컴포넌트를 만들며 폴더 구조, 스토리 작성 방식, 테스트 기준, 리뷰 기준을 문서로 정리했습니다.
2명의 개발자가 동일한 수준의 컴포넌트를 작성해냈고, 리뷰가 설계와 사용성 검토에 더 집중될 수 있게 했습니다.
디자인 토큰 변경 이력 관리로 팀 간 소통 비용 감소
디자인 토큰 변경은 디자인 담당자에게 의존해, 소통 부재 시 실제 디자인과 코드가 불일치할 가능성이 있었습니다.
Git 변경 이력을 바탕으로 토큰의 추가, 수정, 삭제 내역을 Storybook changelog에서 확인할 수 있게하고, 크로스 체크를 협업 프로세스로 정착시켰습니다.
디자인 토큰 변경 내역을 디자이너도 직접 확인할 수 있게 되었고, 디자인과 개발 사이의 소통 비용을 줄였습니다.
컴포넌트 사용처 수집 도구로 마이그레이션 비용 감소
프로덕트 단에서 교체해야할 컴포넌트가 산재했고, 리뷰에 오랜 시간이 걸릴 것으로 예상했습니다.
레포별 소스를 자동으로 모으고, 각 사용처를 유형과 위험도에 따라 나누는 대시보드를 만들었습니다.
해당 결과를 코드 리뷰어 뿐만 아니라 디자인 QA에 활용하여 리뷰 시간을 단축하였습니다.
참여 프로젝트
고객지원 시스템
2025.07 ~ 2025.08, 2026.02 ~ 2026.03고객지원 시스템 v1.1 개발 리드
핵심 기여
프로젝트 리드
v1.1은 기획서만 있고 개발 단위와 일정 근거가 부족한 상태에서 시작되었습니다.
기획서를 백로그와 티켓으로 나누고, 플래닝 포커로 작업 규모를 산정했습니다. 티켓별 소요 시간과 막힌 지점도 함께 기록했습니다.
사내 컴포넌트 라이브러리에서 발견된 문제를 해결하는 것이 주요 병목 지점으로 확인해, 팀이 반복적으로 겪는 문제를 정의하고 해결했습니다.
판매관리 시스템
2025.09 ~ 2025.12회사의 자산, 매출, 거래처 정보를 관리하는 사내 시스템
핵심 기여
대용량 파일 다운로드 처리
대용량 파일 압축의 책임 소재, 운영체제별 다운로드 차이, 사이버 보안 정책을 함께 고려해야 했습니다.
스트리밍 다운로드로 전환해 네트워크 부담을 줄이고, 압축·암호화 연산을 서버(1:N)에서 클라이언트(1:1)로 분산해 동시 다운로드 구간의 서버 병목을 줄였습니다.
동일 동시 요청 조건의 부하 테스트에서 서버 CPU/메모리 피크와 타임아웃 비율을 낮췄고, 지연 네트워크 환경에서도 다운로드 완료 안정성을 높였습니다.
개인 프로젝트
의사정족수와 의결정족수를 지원하는 실시간 투표 시스템
핵심 기여
SSE와 REST 사이의 데이터 덮어쓰기 방지
SSE 이벤트와 REST 응답이 함께 쓰이는 환경에서, 늦게 도착한 오래된 이벤트가 최신 데이터를 덮어쓰는 문제가 있었습니다.
이벤트를 받은 시점과 캐시에 반영하는 시점에 각각 시간을 비교해, 오래된 이벤트가 최신 상태를 덮어쓰지 못하게 했습니다.
SSE와 REST가 함께 동작하는 환경에서도 데이터가 어긋나지 않도록 처리했습니다.
SSE 재연결 시 유실 구간 복구
탭 비활성화 등으로 SSE 연결이 끊기면, 그 사이 발생한 이벤트를 놓칠 수 있었습니다.
초기 연결과 재연결을 구분하고, 실제로 연결이 끊겼던 경우에만 서버 데이터를 다시 조회하도록 했습니다.
불필요한 재요청을 줄이면서도 실시간 데이터의 정합성을 유지했습니다.
카카오맵 API를 Vue 컴포넌트로 사용할 수 있게 만든 오픈소스 라이브러리
핵심 기여
빌드 산출물 검증과 테스트 환경 표준화
6인의 개발자가 각기 다른 스타일의 코드를 작성하고, 테스트를 누락하는 경우가 있었습니다. 또한 라이브러리는 내부 구현이 잘 동작해도, 빌드 산출물이 소비자 프로젝트에서 제대로 해석되지 않으면 배포 후 문제가 발생할 수 있었습니다.
커스텀 Lint 룰을 개발해 빌드된 파일에 절대 경로가 남는 문제를 방지하고, 로컬 테스트 환경을 단순화해서 팀 세션을 소집해 공유했습니다.
배포 전에 산출물 문제를 확인할 수 있는 기준이 생겼고, 팀원들이 적은 노력으로 같은 환경에서 기능을 구현하고 검증할 수 있게 했습니다.
학력
연세대학교
서울문과대학 중어중문학과
2018.03 – 2023.08교육
SSAFY 삼성청년소프트웨어 아카데미
서울비전공 Java반
2023.07 – 2024.06멋쟁이사자처럼 웹 프론트엔드 스쿨
온라인프론트엔드 중점 과정
2022.07 – 2023.01