spring boot 2.x + jsp +gradle 내장톰켓 셋팅하기

프로젝트 구성 개요

  • jsp를 쓸수밖에 없는 프로젝트에서 gradle을 이용하여 war로 build 후 java -jar app.war 를 사용하여 프로젝트를 띄울수 있게 하는것이 주 목적이다.

  • spring boot 프로젝트러 jar패키징후 내장 톰켓을 사용하는 방식으로는 jsp 를 view template으로 사용할수 없다.

  • 이 셋팅이 필요없는 케이스.

    • 굳이 jsp를 쓰지않아도 되는 경우. war셋팅도 필요없으니 기존 jar 배포구조로 구성하면된다.
    • 내장tomcat을 쓰지않는경우. war로 패키징하여 외부 톰켓을 이용하면 되므로 bootRun, bootWar셋팅까지 할 필요는 없다.

실제로는 프로젝트를 마이그레이션 하는 과정에서 발생한 트러블 슈팅 과정을 정리한 산출물입니다.
본 내용에서는 마이그레이션 과정이 아닌 셋팅만 기술하겠습니다.(결과물위주)

Read more

Intellij 느릴때 - 메모리 할당량 늘리는법

intellij 를 사용하다보면 느려지는경우가 발생한다.
검색할때 버벅이거나 커서가 바로 이동하지 않는등 불편함이 따른다.
사용하는 pc의 메모리가 충분하다면, intellij의 메모리 할당량을 늘려서 개선해보도록 하자.

예시는 기본값인 750M -> 2048M 으로 변경하였다.
무조건 높은 메모리를 할당하기보다는, 개인의 개발환경에 맞는 메모리 셋팅이 필요하다.

2020.2 버전 업데이트로 Memory 할당량과, Indicator 설정방법이 변경되었습니다.
아래 링크를 참고해주세요.
Intellij 느릴때 - 메모리 할당량 늘리는법 (2020.2 업데이트버전)

Read more

gzip:: 아파치,nginx 설정으로 웹페이지 로딩 속도를 빠르게

프론트 성능 개선

프론트 성능개선을 위해 많이 쓰이는 것중 하나가 바로 Gzip
서버에서 html, javascript, css 등을 압축해줘서 리소스를 받는 로딩시간을 줄여줌으로서 성능 개선
예전 프로젝트에서 Gzip에 minify나 concat, cache을 더하여 적용하였더니 이전보다 약 85%의 성능향상이 있었습니다. 웹개발을 하게 되면 필수적인 옵션이라고 할 수 있습니다.

Gzip - 위키피디아

gzip은 파일 압축에 쓰이는 응용 소프트웨어이다. gzip은 GNU zip의 준말이며, 초기 유닉스 시스템에 쓰이던 압축 프로그램을 대체하기 위한 자유 소프트웨어이다. gzip은 Jean-loup Gailly와 마크 애들러가 만들었다. 버전 0.1은 1992년 10월 31일에 처음 공개되었으며, 버전 1.0이 1993년 2월에 뒤따라 나왔다. 오픈BSD의 gzip 버전은 더 오래된 압축 프로그램을 기반으로 하고 있으며, 오픈BSD 3.4에 추가되었다.

Read more

VisualVM:: jvm 모니터링 도구 (java 모니터링)

동기

대용량 엑셀파일 다운로드로기능으로 인해 OOM이발생. 이를 방지하기위한 대책마련을위해조사
개발에 들어가기전에, 개발한것이 효과가 있는지 로컬에서 테스트 해보려고함

도구

Read more

nginx location 설정 - 정규식 operation 우선 순위

nginx location 설정 operation 우선 순위

가정

url 별로 접근 권한을 다르게 주고싶다고 가정하자.
접근권한은 url, userAgent, referer(referrer) 같은 변수를 통해 다양한 방법으로 정할수 있다.
그중 가장 먼저 적용 할 수 있는 url path 를 통한 방법에 대해 알아보자.

  1. 특정 path는 static한 메시지를 보여주자!
  2. 특정 path로 시작하는 페이지는 모두에게 보여주자
  3. 나머지는 userAgent 와 referer(referrer)로 판단하자.
Read more

Maven Profile 을 통해 설정 관리하기 / Spring profile

필요성

아주 작은 프로젝트, 절대로 변하지 않을 프로젝트라면 상관없다.

하지만 단순히 서비스를 어느서버에서 하느냐, 디비를 어느것을 이용하느냐, 인증을 어디것을 사용하느냐에 따라 코드를 바꿔야 한다.
자주 바뀌는 코드, 코드말고 다른 의존성에 의한 설정값 등의 셋팅이 코드에 있다면 어떤 일이 발생할까? 기존값을 주석처리하고 원하는 값으로 수동으로 바꾸는등 수작업이 필요하며 이런 데이터가 많을수록 작업 효율이 떨어진다.

  • maven profile
  • spring profile

두가지를 활용해 원하는 리소스를 활용하는 방법에 대해 알아보자.

Read more

JMH로 자바 성능측정 비교하기 - java performance

성능측정 과제

  • Map, Set, List, Queue 의 성능은 어떨지 알아보기
  • 실험을 통해 Map / List 성능 측정

JMH 기본적인 사용법 (시작하기)

아래와 같은 명령어를 사용해 maven project를 생성한다

1
2
3
4
5
6
7
mvn archetype:generate \
-DinteractiveMode=false \
-DarchetypeGroupId=org.openjdk.jmh \
-DarchetypeArtifactId=jmh-java-benchmark-archetype \
-DgroupId=org.sample \
-DartifactId=test \
-Dversion=1.0
  • 성능 측정 코드 작성 (아래에서 계속)
  • mvn clean install 로 빌드
  • java -jar target/benchmarks.jar 로 성능측정
Read more