채용공고 올리기

박지수님을 응원해보세요!

지금 만족하고 있어요

미리보기

기본 정보

이름
박지수
직업
경력기술서
간단 소개

프로젝트

프로젝트명

재택의료 서비스

소속/기관명

플라잉닥터

프로젝트 기간

2024.12. ~ 진행 중

프로젝트 내용

기술 코드/설계

  • 메모리 최적화


    힙 덤프 분석을 통해 단기간에 unreachable 상태의 객체(전체 메모리의 10%)가 생성되는 문제를 발견함. 원인은 JPA가 내부적으로 검색 조건 변경 시마다 대량의 환자 데이터를 각각 캐싱하는 것이었음. 이를 해결하기 위해, 다운로드된 데이터를 재사용하는 구조로 개선하여 메모리 사용을 최적화함. 추가로 로그 출력 방식에서 성능 개선을 진행함. log4jdbc 드라이버를 MySQL 드라이버로 변경하여 오버헤드를 줄였으며, 로그 파일 대신 콘솔로 출력하도록 전환하여 불필요한 디스크와 메모리 사용을 제거함. 이를 통해서 메모리 사용량을 약 25% 줄임.

  • 기존 도메인 로직에서 환자의 방문 횟수를 계산하는 방식은 전체 환자 데이터를 메모리에 적재해야 했기 때문에, 방문 횟수 기준 정렬 및 페이징 처리 과정에서 심각한 시스템 부하를 초래했음. 이를 해결하기 위해, total_count라는 칼럼을 추가하여 방문 횟수를 사전에 저장하도록 데이터를 마이그레이션한 뒤, DB에서 해당 칼럼을 기준으로 정렬하도록 로직을 수정함. 이 최적화를 통해 힙 사용량을 500MB에서 200MB로 약 60% 감소시킴.

  • 엑셀 마이그레이션 로직 개선
    동료 피드백을 바탕으로 엑셀 데이터를 처리하는 로직을 개선함. 인터페이스를 활용해 데이터 유형에 상관없이 JSON 형태의 문자열로 변환 및 다운로드가 가능하도록 설계하고, 이후 필요한 객체로 매핑되도록 구조화함.
    이를 통해 엑셀 다운로드와 결괏값 출력 로직을 어디서나 재사용할 수 있는 유연한 구조를 구현함.

기술 운영

장애 대응 & 재발 방지

  • drop 테이블 등 주요 장애 시 dump 데이터로 복구 시도했지만, dump뜬 시점부터 장애 발생 사이의 데이터 복구가 불가능했음. -> 바이너리 로그로 복구하는 방법 도입, 문서로 팀에 공유함.

  • 테스트 코드를 작성하여 주요 비즈니스 로직과 의존성 변경 사항을 배포 이전에 검증함으로써, 변경으로 인한 버그를 사전에 감지할 수 있도록 했음.(현재 주요 도메인 객체 테스트 커버리지: 22%) 또한, 서비스가 아직 변동이 많을 성장 시기라고 판단 + 개발자가 한 명인 점을 고려해서 핵심 로직만 테스트로 방어하고, 나머지 부분은 에러 발생 시 실시간 Slack 에러 알림을 통해 문제를 빠르게 인지하고 대응할 수 있도록 알림 시스템을 구축했음.

프로젝트명

소속/기관명

프로젝트 기간

프로젝트 내용

로깅 & 메트릭스

  • ElasticSearch를 활용한 데이터 수집과 Kibana 기반의 커스텀 대시보드를 구축 함. 트래픽 증가 시 네트워크 요청 정보, 힙 사용량, CPU 사용량, GC 횟수 등 주요 지표를 종합적으로 모니터링하여 문제 상황의 원인을 보다 명확히 이해할 수 있게 했음.

문제해결을 위한 과학적 검증

  • 템플릿 기능 도입으로 사용자의 환자 기록 입력 시간을 단축할 수 있다는 가설을 세우고 이를 기반으로 기능을 배포함. 배포 이후, 실제 사용자의 이용 시간을 추적하고 사용률을 분석하여 가설을 검증함. 검증 결과를 수시로 팀 슬랙에 공유하며 투명한 피드백을 유지함.
    환자기록 작성 시 소요 시간은 감소(하루 평균 50분 -> 42분)했으나, 템플릿 기능 사용률 감소(88.30%, 73.41%로 하락 추세)를 확인함. 인터뷰 결과 템플릿 작성 자체는 편하나, 프린트할 시 환자당 정보가 증가하여 가독성에 문제가 있다는 것을 확인함. 이를 보완하기 위해 모바일 버전의 대시보드 사용성 실험을 위해 프로토타입 개발을 시작함.

제품

지속 가능한 비즈니스 성장을 위한 고민과 실천

  • [린 스타트업]과 [Inspired]를 읽으며 과학적 실험 방법을 학습했고, 이를 실제 업무에 적용하기 위해 가설 - (프로토타입 구현)실험 - 검증 프로세스를 구축할 것을 제안함. 데이터 기반의 의사결정과 지속 가능한 비즈니스를 도모함.

  • 재택의료 협회 세미나에 참석하여 해당 도메인의 관계자들과 교류하며 업계 현황을 파악함. 이를 통해 경쟁사들이 준비 중인 전략을 참고하며 우리 서비스의 방향성을 논의할 수 있었음.

커뮤니케이션

  • 모바일 기록 방식을 두고 음성 방식템플릿 기반 텍스트 기록 중 무엇을 선택할지 의견이 갈림. 이에 따라 음성 차트 구현 가능성을 검증하기 위해 실험을 진행함. 음성 녹음 파일을 클로바 노트를 통해 텍스트로 변환한 뒤, GPT를 활용해 데이터를 가공해 본 결과, 기대한 성능을 확인함. 이를 기반으로 300명 환자 기준으로 병원당 월 사용료를 계산함. 계산식은 방문당 소요 시간 × 월 평균 방문 횟수 × 시간당 API 요금으로 산출함. 부분 유료화를 고려하여 비용 대비 사용성을 인터뷰를 통해 측정할 예정임.

문화

  • 토스의 frontend-fundamentals를 사용해 다른 팀의 프론트앤드 개발자와 함께 '프론트-코드스멜-스터디'를 시작함. 이를 통해서 리팩토링하는 시간을 시스템화하는 것이 목표임.

  • 재택의료 주간 미팅에 C레벨의 피드백 반영. 주요 의사결정은 이전과 마찬가지로 재택 팀 내부 구성원끼리 데이터 기반으로 수행하지만, 사업적 방향성은 C레벨이 조언하도록 수정.

댓글