
1. 톰캣에서 server.compression.min-response-size가 제대로 동작하지 않는 이유 분석하기 아래의 내용은 HTTP 요청 중에서 content-type: application/json인 경우를 전제로 한다. text/plain 등의 경우에는 정상적으로 작동하고 있다. [ 스프링 부트의 server.compression 설정들 ]스프링 부트에서는 다음의 압축 설정을 통해 압축을 활성화하고, 압축을 적용할 조건을 명시할 수 있다. 해당 설정을 추가하고 클라이언트가 HTTP 요청에 Accept-Encoding: gzip 헤더를 넣고 보내면, 응답의 Content-Length 헤더가 설정된 값보다 클 경우 압축이 진행됨을 기대할 수 있다.server.compression.enabled..

1. 스템의 성능과 volatile 키워드를 통한 메모리 가시성에 대한 이해(Memory Visiblilty)[ 시스템의 성능에 대한 이해, 성능은 어디에서 오는가? ]무어의 법칙(Moore's law)과 컴퓨터 구조(Computer Architecture)무어의 법칙(Moore's law)은 인텔의 창업자 중 한명인 고든 무어(Gorden Moore)가 명명한 것으로, 경제적으로 생산 가능한 칩 위의 트랜지스터 수는 대략 2년마다 거의 2배로 증가함을 뜻한다.무어의 법칙이 성능이 아닌 트랜지스터 수를 기준으로 한다는 것은, 소프트웨어 엔지니어가 하드웨어 엔지니어로부터 얻어낼 수 있는 성능이 2배가 아님을 의미한다.성능에는 여러 가지 복합작인 요소가 작용하는데, 그럼에도 불구하고 성능에 가장 결정적인 요..

1. 슬랙봇 DM 및 채널 메시지 연동하여 운영 자동화하기[ 필요한 권한 세팅 ]OAuth & Permissions에서 다음의 최소 OAuth Scope가 필요하다. 아래는 DM 연동을 위해 필요한 scopes이며, 필요에 맞게 추가해주도록 하자. 봇에게 보낸 메시지를 이벤트 형태로 받기 위해 Event Subscriptions에서 다음의 최소 권한이 필요하다.채널에서 봇이 멘션되었을 경우에도 이벤트를 구독하려면 app_mention, private 채널에서 얘기된 메시지를 받으려면 message.groups, public 채널에서 얘기된 메시지를 받으려면 message.channels를 설정해주면 된다. 필요한 상황에 맞게 이벤트 구독 권한을 신청해주도록 하자.RequestURL에는 봇에게 보낸 D..

1. 데이터베이스 커넥션 풀 및 JPA, 하이버네이트 설정 최적화(Database Connection Pool and JPA, Hibernate properties optimization) [ 데이터베이스 커넥션 풀 설정 최적화 ]기본 정보들데이터베이스에 연결하기 위한 기본 정보들로는 url, username, password, driver-class-name과 같은 것들이 있다. 여기서 중요한 것은 url에 접속 파라미터 부분이다.spring.datasource.url=jdbc:mysql://com.mangkyu.database:3306?\\ rewriteBatchedStatements=true\\ &zeroDateTimeBehavior=convertToNull\\ &useUnicode..

1. 올바른 자바/코틀린(Java/Kotlin) 애플리케이션 JVM 메모리 설정 가이드 [ 최소/최대 힙의 크기 ]개발한 애플리케이션을 배포할 때면 여러 가지 설정 및 옵션들을 제공해주어야 하는데, 대표적인 값이 바로 메모리 할당에 대한 부분이다. 자바에서 모든 객체는 힙 영역에 할당되며, 핵심은 힙 메모리의 크기이다. 힙 메모리의 크기를 너무 작게 잡으면 객체를 힙 메모리에 할당할 공간이 부족하여 OutOfMemoryError로 인해 애플리케이션이 비정상적으로 종료되거나 잦은 GC 발생으로 인해 애플리케이션 오버헤드가 증가하여 성능에 문제를 줄 수 있다. 반대로 힙 메모리를 지나치게 크게 잡으면 애프리케이션이 시작할 때 힙 초기화 시간이 길어져 시작 속도가 저하되거나 GC를 수행하는 시간이 길어져 응답..