Home
Cancel

직관적인 Vue 아키텍처 설계

이번에 진행한 프로젝트는 기존 JSP 환경에서 프론트엔드 프레임워크를 도입해 생산성을 늘려보자는 취지로 사내에서 처음 Vue를 도입한 프로젝트였다. Vue를 사용해 본 사람이 필자 밖에 없는 상태에서 시작했던 터라 1년 전 설계에 많은 고민을 했던 기억이 나 프로젝트가 성공적으로 끝난 지금 간단한 포스팅으로 회고해본다. 기존 환경의 문제 회사에서 진...

Join 방식에 따른 비용, 성능 변화

개요 최근 업무 중 특정 메뉴의 목록이 출력되지 않는다는 문의를 받았다. 확인해보니 해당 목록을 가져오는 요청의 평균 응답 시간이 매우 느린 상태였다. 확인 결과 슬로우 쿼리와 페이징 처리없이 대량의 데이터를 가져와 매퍼에서 객체로 생성하는 시간이 오래 걸리는 문제였고 결국 쿼리 튜닝과 페이지네이션을 적용해 문제를 해결했다. 이 때 쿼리 튜닝은 조인...

트랜잭션에 의한 Deadlock

문제 발견 최근 업무 중 웹 서버에서 오랜 시간동안 처리되지 않고 있는 스레드를 발견했다. 해당 요청은 작업이 오래 걸릴만한 프로세스가 없었기 때문에 직감적으로 데드락 이슈가 발생했음을 느끼고 바로 확인에 들어갔다. 원인 파악 다음 2가지 상황에서 데드락이 발생했을 가능성을 염두에 두고 원인을 파악했다. 관리자가 Update 작업 이후 커밋 혹...

어떤 매핑(Mapping) 프레임워크를 선택할까? (MapStruct vs ModelMapper)

Mapping 개발을 하다 보면 DTO같은 모델에 대해 많은 매핑 작업을 하게 되며 어플리케이션의 규모가 커질수록 이 작업은 의외로 성능으로나 생산성으로나 큰 부분을 차지하게 된다. 매핑 작업은 직접 코드를 구현하거나 매핑 프레임워크를 이용해 처리할 수 있는데 직접 코드로 구현하는 방식은 작성 및 관리에 많은 리소스를 소모하기 때문에 보통 매핑 ...

Spring Boot 3 API Documentation (Spring REST Docs & Swagger UI)

사이드 프로젝트의 환경을 구성하며 API 문서화를 위해 Swagger와 Spring REST Docs 사이에서 고민했다. Swagger는 컨트롤러 코드에 문서화 코드가 적지 않게 들어가는 것을 경험했던 터라 Spring REST Docs를 사용하는 것으로 마음이 기울었는데, 결국 Spring REST Docs와 Swagger를 함께 사용하게 되었다. ...

자바 가상 머신의 원리와 이해 (4) - 가비지 컬렉션 알고리즘 (Java Virtual Machine - Garbage Collection Algorithms)

이 시리즈는 Hotspot JVM - JSR-392(Java SE 17)를 기준으로 작성되었습니다. 이전 글에서 각 Garbage Collector에 대해 알아보았다. 이번 글에서는 우리가 보았던 GC들이 사용하는 알고리즘에 대해 정리한다. Minor GC Heap의 Young Generation 영역의 쓰레기를 수집하는 것을 Minor GC라고 ...

자바 가상 머신의 원리와 이해 (3) - 가비지 컬렉터 (Java Virtual Machine - Garbage Collectors)

이 시리즈는 Hotspot JVM - JSR-392(Java SE 17)를 기준으로 작성되었습니다. 이전 글에서 JVM을 구성하는 영역들에 대해 알아보았다. 이번 글에서는 JVM의 메모리를 관리하는 Garbage Collector(이하 GC)에 대해 알아본다. Java를 이용해 개발하는 프로그래머가 C/C++ 언어와 다르게 메모리에 대해 신경쓰지 않...

자바 가상 머신의 원리와 이해 (2) - 런타임 데이터 영역 (Java Virtual Machine - Runtime Data Areas)

*이 시리즈는 Hotspot JVM - JSR-392(Java SE 17)를 기준으로 작성되었습니다. JVM은 각각의 역할을 가진 여러 영역들로 구성되어 있다. 이전 글에서 살펴보았던 각 자료형의 데이터들이 저장되는 공간도 따로 정해져 있다. 이번 글에서는 JVM에 어떤 영역들이 있고 각각 어떤 역할을 하는지 알아보자. PC Register JVM...

IEEE-754 (부동소수점 표준)

이 시리즈는 Hotspot JVM - JSR-392(Java SE 17)를 기준으로 작성되었습니다. Java에서 float이나 double 타입은 정확한 계산에 사용하면 안 된다고 한다. 왜냐하면 이들 타입은 IEEE-754로 실수를 나타내기 때문이다. 그럼 도대체 IEEE-754로 계산하는 것이 왜 위험한지, 그럼 정확한 계산을 하려면 어떻게 해야...

자바 가상 머신의 원리와 이해 (1) - 데이터 유형 (Java Virtual Machine - Data Types)

이 시리즈는 Hotspot JVM - JSR-392(Java SE 17)를 기준으로 작성되었습니다. 프로그래머가 작성한 자바 코드는 Java Compiler에 의해 Byte Code로 변환된 후 JVM에 의해 실행된다. 어떤 환경이든 JVM이 있다면 Byte Code로 프로그램을 실행할 수 있는 것이 Java의 플랫폼 이식성이 뛰어난 이유다. 결...