전체 글 793

OpenJDK 12.0.2 기반 Fat.jar 도커이미지 빌딩

개요, 순서 Docker 를 사용하여 SpringBoot 의 Fat.jar 를 Docker Image 로 빌딩하는 작업을 기술한다. 첫번째로 Target Project 를 Gradle 로 build 시킨다. 이후 Docker Image 빌딩에 필수 파일인 Dockerfile을 정의한다. Target Project 의 Root 로 가서 docker 를 이용해 이미지로 빌딩한다. Docker 엔진 내부의 이미지들 중 해당 이름의 이미지가 있는지 확인한다. 서비스를 시작해보고 테스트하고 로그를 확인해본다. Docker File FROM : 해당 이미지를 사용하여 빌드하겠다. EXPOSE : 다른 컨테이너 해당 포트를 노출시키겠다. ADD : 해당경로의 파일을 도커 이미지에 추가시키겠다. ENTRYPOINT :..

Docker 작업 2021.01.01

Docker 컨테이너의 JVM 할당량 확인해보기

일단 확인 결과 CPU 사용량은 논리적코어 6개를 가짐 echo Runtime.getRuntime().availableProcessors() | docker run -i --rm openjdk:12.0.2 jshell -q Jan 01, 2021 8:32:18 AM java.util.prefs.FileSystemPreferences$1 run INFO: Created user preferences directory. jshell> Runtime.getRuntime().availableProcessors()$1 ==> 6 jshell> CPU 사용량 준수 확인 : SE 12 --cpus 키워드로 도커 컨테이너의 cpu 사용량을 설정 해보고 확인 컨테이너의 제한량을 준수하고 있는 상태를 확인 echo Run..

Docker 작업 2021.01.01

JVM 할당 CPU, Memory 확인하기

JDK1.8 에는 jshell 이 없기 떄문에 자바 코드로 확인해본다. 기본적으로 물리코어 1개 당 가상코어 2개로 확인된다. public class Cpu { public static void main(String[] args) { int availableProcessors = Runtime.getRuntime().availableProcessors(); System.out.println(availableProcessors); } } ==>12 윈도우에는 grep 키워드대신 findstr 로 매개변수를 찾아올 수 있다. JVM 메모리 할당량 확인을 위해 -XX:+PrintFlagsFinal -version 으로 런타임 변수를 확인하고 findstr MaxHeapSize 으로 MaxHeapSize 를 확..

JAVA-Basic 2021.01.01

Java를 시작한지 275일, 블로그를 만든 건 271일차.

출근 길에 책을 보며 출발했다. 읽은 부분을 다시 읽고 다시 읽었다. 이해가 안되는 부분이 있고, 생소하기도 했다. 다시금 보고 읽으니 이해가 되어간다. 사실 전에 프로젝트가 여러번 터져서 해결하느라 다시 타이핑하고 코드를 읽어봤던게 제일 컸던 것 같다. 그 덕분에 책을 읽으면 이게 이런 코드였지, 하고 생각나더라. vuetify 를 써보며 간단한 페이지를 만들고 있는데, Hystrix 와 Feign 등을 곧 적용할 예정이다. 그러려면 서비스 사이의 호출을 만들 필요가 있어, UI를 짜는 것이 먼저가 될 듯하다. Axios 의 생성자를 이용해서 기본 Axios 에 헤더와 필요한 url 등을 설정하고 wrapAxios 를 만드니 굉장히 편했다. 조금이나마 겪어보고 해결해보아서 다행인 것 같다. 금일 회사에..

생각모음 2020.12.30

Java를 시작한지 274일, 블로그를 만든 건 270일차.

출근 길에 지하철에서 책을 보는 데 무언가 이상했다. 이상하다기보단 올게 왔다 싶었는데, 피곤한데 아니다. 라는 마음가짐으로 계속 해왔던 루틴들이 피로감을 하나씩 쌓아둔 거라고 생각했었다. 하루를 보내고나서 퇴근 길에 피로가 쏟아지는 듯했다. 그러다 자리에 앉아 눈을 감으니 어느 사이에 내릴역까지 와버리게되었다..ㅎ 학원생활 도중에는 한-두번 정도 이렇게 나도 모르게 잠든 일이있었는데 그 때 생각이 갑자기 떠오르더라. 스스로 안타까웠고, 별 수 없겠다. 싶어서 웃어넘겨버렸다. 피로감이 쌓였고, 애써서 아니라고 마음먹고 요근래를 좀 보냈는데, 아무래도 스스로를 바라보는 관점이 좀 개선되야하지 않을까 싶다. 피로감이 있는 것을 자각하고 해소할 방법을 찾아나서고 쉴때는 완전히 쉬어버리는 것은 어떨까..하고 생..

생각모음 2020.12.29

Java를 시작한지 273일, 블로그를 만든 건 269일차.

Vuex 관련 기록 정리 작업을 끝냈다. Vuex 관련 공부를 해야해서 스스로 기억하기 위해 기록했는데, 사용할 때마다 참고하기 좋을 것 같다는 생각이 든다. 쓴지 조금 됬는데..수정하고 고치고 에러잡고 하느라 계속 늦어지기만 했다. 같이 공부하시는 매니저님께도 정보를 공유해드리고 싶었고, 만들어나가는 것에 에러가 많아 문서화 작업이 생각보다 너무 오래 걸렸다. 그럴만하긴했다.. QueryDsl 에 꽂혀서 얕게나마 JPA를 찾아봤으니..그런 것 같다. 가만보면 멀리 돌아가는 것 같다. JPA는 그럴만한 가치가 있다고 생각한다. 하이버네이트 쿼리가 생성하는 부분을 직관적인 메서드 체인으로 개발자 스스로 짜내려갈 수 있다는 것은 강력한 장점이라고 생각이 든다. 그러다보니 자연스레 스스로 경험해보았던 것들에 ..

생각모음 2020.12.28

Java를 시작한지 270-272일, 블로그를 만든 건 266-268일차.

언제부터 안쓴건지 기억이안난다. 퇴근하고 공부하거나 집안일을하거나 멍을 때리거나 놀아보거나, 그렇게 보냈다. 기억에 남는 것은 내가 해보고 싶어 작업하는 것들, 천진난만하게 노는 강아지나 고양이를 바라보며 미소짓는 그런 순간들이다. 오늘은 Spring Data 관련 QueryDsl 사용법을 계속 서칭하고 에러를 맞닥뜨리고 해결해보려 Stack OverFlow 나 GitHub 에 선배 개발자 분들이 남기신 영어...를 해석하며 보냈는데 정말 혼이 빠지는 것 같앴다. 한 6시간 했나보다. 그리 많이 하지는 않았는데, 정말 피로감이 굉장했다. 하나 넘기면 다음 에러, 다음에러.. 이런 시간의 연속이었다. 그래도 나중에 피와 살이 될거라며 고군분투하는 내가 한 편으로는 웃기더라. 이번년도가 지나기전에 내가 배운..

생각모음 2020.12.27

QueryDsl Left Outer Join, Tuple, Projections

삽질한 기록은 아래! Left outer Join , on() 으로 추가 조건을 내새울 수도 있다. @Override public List findMyPostByIdWithReplies(Long id) { JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager); List fetch = queryFactory.select(post) .from(post) .leftJoin(post.replies, reply).fetchJoin().fetch(); return fetch; } 테스트 코드 @Test @Transactional @Rollback(value = false) public void joinTest(){ Post post = postRepo..

QueryDsl 과 커스텀 리포지토리를 이용한 쿼리문 사용

실무에서는 커스텀 리포지토리를 구축하고나서 QueryDsl 을 사용한다는 이야기를 접했다. 조금이나마 흉내라도 내보고, 한자라도 쳐보기위해서 했던 작업을 기록한다. 첫번째로는 재정의할 메서드를 놓은 인터페이스를 정의한다. public interface PostCustomRepository { List findMyPost(); } 두번째로는 인터페이스의 구현체를 만든다. @EnableJpaRepository 에 속성에 suffix 를 바꾸는 속성이 있으니 참고한다. QueryFactory 를 이용해서 원하는 쿼리문을 직관적으로 짜낸다. @Repository @Transactional public class PostCustomRepositoryImpl implements PostCustomRepository..