모비닥 진료 프로세스 개선 프로젝트 회고: 코드 품질과 성능 최적화 개선기
모비닥은 환자 본인 뿐만 아니라 가족 구성원과 함께 병원 진료 신청 할 수 있는 “함께 진료” 기능이 있습니다. 하지만 이 “함께 진료” 는 여러 환자를 하나의 그룹으로 묶어 처리하기 때문에 몇 가지 문제점이 있었습니다. 가장 큰 문제점은 하나의 증상 & 문진표만 작성한 구조입니다. 만약 자녀A는 타박상, 자녀B는 기침 증상이 있는 경우 대표...
모비닥은 환자 본인 뿐만 아니라 가족 구성원과 함께 병원 진료 신청 할 수 있는 “함께 진료” 기능이 있습니다. 하지만 이 “함께 진료” 는 여러 환자를 하나의 그룹으로 묶어 처리하기 때문에 몇 가지 문제점이 있었습니다. 가장 큰 문제점은 하나의 증상 & 문진표만 작성한 구조입니다. 만약 자녀A는 타박상, 자녀B는 기침 증상이 있는 경우 대표...
Real MySQL 8.0 8장 “인덱스”를 학습한 내용입니다. B-Tree 인덱스 최사위에 하나의 루트노드가 존재하고 그 하위에는 브랜치 노드, 가장 말단에는 리프노드가 붙어 있다. 데이터베이스에서 인덱스와 실제 데이터가 저장된 데이터는 따로 관리되는데 인덱스 리프 노드에 항상 실제 데이터 레코드를 찾아가기 위한 주솟값이 저장된다. 인...
슬로우 쿼리 개선 사내 서비스 개선 프로젝트 후 모니터링 과정에서 쿼리 실행 시간이 1초 이상 소요되는 쿼리를 발견하였고 이를 개선해보았습니다. 첫 번째 슬로우 쿼리 개선 전 슬로우 쿼리 SELECT c.*, (subquery1) AS total_price, (subquery2) AS last_payment_seq, ...
Real MySQL 8.0 10장 실행계획을 학습한 내용입니다. 실행계획 1.통계정보 MySQL 8.0부터는 인덱스되지 않는 칼럼들에 대해서도 데이터 분포도를 수집하고 저장하는 히스토그램 정보가 도입되었다. 테이블 및 인덱스 통계 정보 MySQL 5.6 버전부터 InnoDB 스토리지 엔진을 사용하는 테이블에 대한 통계 정보를 영구적으로...
김우근님의 Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 를 정리한 내용입니다. [실습] 도메인 테스트 추가 @Test public void User는_UserCreate_객체로_생성할_수_있다() { //given UserCreate userCreate = UserCreate.builder() ...
김우근님의 Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트 를 정리한 내용입니다. 왜 TDD에 실패할까? 테스트는 품질을 올리는 행위이고, 업무에 적용하고, 보고하기 위해서는 가시적인 성과가 필요하게 된다. 결국 커버리지를 찾게 되는데 테스트 커버러지가 테스트의 목적이 되면 안된다. 테스트의 어려운 점 대표적으로 아래와 같...
김영한님의 자바 ORM 표준 JPA 프로그래밍을 정리한 내용입니다. 연관관계 맵핑 시 고려사항 3가지 다중성 • 다대일: @ManyToOne • 일대다: @OneToMany • 일대일: @OneToOne • 다대다: @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽으로 조인이 가능하다. 방향...
상위 1% 엔지니어의 7가지 간단한 습관을 참고한 내용입니다. 코더가 아닌 엔지니어가 될 것 (Be an engineer, not a coder) 엔지니어링은 문제를 해결하는 것이고, 최고의 엔지니어는 코드를 문제를 해결하기 위한 수단으로 생각한다. 즉, 목적이 없는 코드를 작성하지 않고 사용자의 솔루션을 설계하는 등 목적을 ...
김영한님의 자바 ORM 표준 JPA 프로그래밍을 정리한 내용입니다. SQL 중심적인 개발의 문제점 sql에 의존적인 개발을 피하기 어렵다. 객체와 관계형 데이터베이스의 괴리감 상속 객체가 상속관계에 있을 때 SQL으로는 각각의 객체를 생성하고 테이블에 따른 조인 SQL 등 해줘야 할 게 많다. 그렇기 때문에 DB에 ...
URL : https://leetcode.com/problems/merge-intervals/ 문제 Given an arrayofintervalswhereintervals[i] = [starti, endi], merge all overlapping intervals, and return_an array of the non-overlapping int...