전체 글

전체 글

    혹독한 조언이 나를 살릴까?

    아래 링크에 있는 글을 가져온 것이다. 혹독한 조언이 나를 살릴까? web.archive.org 우리 주변에서 종종 혹독한 조언, 소위 뼈 때리는 조언을 해주기로 유명한 사람들이 있습니다. 그리고 그걸 좋아해주는 사람도 흔치 않게 볼 수 있습니다. 반대로 이 혹독함에 대해 조금이라도 불평이 나오려고 하면 "좋은 약은 입에 쓰다"는 아포리즘으로 이 폭력성을 정당화하기도 합니다. 그런데 정말 이런 혹독함이 우리를 성장하게 할까요. 심리상담학계에는 전설적인 다큐멘타리가 하나 있습니다. 일명 글로리아 필름(Gloria Film)으로 불립니다. 1964년도에 촬영되었습니다. 글로리아라는 일반 여성을 당대 최고의 심리상담가 3명이 각기 약 30분씩 돌아가며 상담을 하는 모습을 담은 다큐멘타리입니다. 참고로 3명의 ..

    리틀의 법칙

    리틀의 법칙 리틀의 법칙은 어플리케이션을 설계할 때 확장성을 고려하기 위한 계산 방식으로도 쓰일 수 있습니다. 리틀의 법칙은 원래는 유입량과 확장에 대한 명시적인 해결책을 얻기 위해 널리 사용되는 법칙입니다. 공식 공간 내 머무는 객체 수(L) = 객체의 공간 유입량(λ) × 객체의 공간 내 머무는 시간(W) 고객이 시간당 10명의 비율로 도착하고 평균 0.5시간 동안 머문다고 가정합니다. 이는 언제든지 매장에 있는 평균 고객 수가 5명이 되어야 함을 의미합니다. 어플리케이션 설계에 접목 시키기 위의 간단한 공식을 통해 어플리케이션에 필요한 쓰레드를 계산해볼 수 있습니다. 동시에 처리할 수 있는 쓰레드(L) = 초당 클라이언트 요청량(λ) × 평균 요청 처리 시간(W) 그리고 우리는 시간 당이 아닌 초 ..

    [Spring] 스프링에서 가상 스레드를 이용한 부하테스트

    a thousand hearings aren’t worth one seeing, and a thousand seeings aren’t worth one doing Spring Property 설정 spring.threads.virtual.enabled=true server.tomcat.threads.max=1 server.tomcat.threads.min-spare=1 Spring에서 JDK 21을 이용할 때 가상 스레드를 활용하기 위해서는 spring.threads.virtual.enabled=true를 활성화해줍니다. 부하테스트를 위해 Thread는 1개로 유지합니다. 코드 작성 @GetMapping("/test") public String test() throws InterruptedExceptio..

    [Java] Apache Commons Library에서의 올바른 압축 해제 방법

    최근 사내 프로젝트에서 압축 파일 해제 코드가 올바르게 처리 되고 있지 않아 컨플루언스에 올린 내용을 블로그에도 올려보겠다. 개요 특정 압축 파일을 업로드하여 자바 코드 내에서 압축 해제하는 경우 코드 동작이 정상적으로 진행되지 않는 현상 압축 대상 파일 zip, tar, tar.gz 압축 파일의 실제 포맷은? file resource.tar.gz 리눅스 계열에서 file 명령어를 통해 파일이 어떤 포맷인지 확인할 수 있다. file에 대한 포맷을 확인하는 이유는 가령 사용자가 zip으로 압축 한 뒤에 임의로 확장자를 .tar.gz로 바꾸는 경우가 있기 때문이다. 물론 이 경우에도 압축 파일로서의 동작은 잘 된다. 하지만 문제는 이 파일의 실체는 zip이다! 압축된 zip 파일을 .tar.gz로 강제로 ..