Batch 작업과 Connection Pool

커넥션풀일반적으로 DB에 연결해서 어떤 작업을 할 때는 커넥션풀(Connection Pool)을 사용한다. DB 연결 자체가 비용이 많이 들기 때문에 미리 다수의 Connection 객체를 만들어서 풀에 넣어두고 필요할 때마다 꺼내쓰고 반납하기를 반복한다. 결국 응답 속도를 빠르게 하고 자원 효율성을 높이기 위해 커넥션풀을 사용한다. 커넥션풀을 사용하면 미
Continue reading

Java NIO FileChannel 과 DirectByteBuffer

Java 4에서 도입된 NIO 덕분에 FileChannel과 ByteBuffer를 이용해서 File I/O 를 수행할 수 있게 됐다. 그림 출처: https://www.happycoders.eu/java/filechannel-bytebuffer-memory-mapped-file-locks/ NIO의 장점은 https://homoefficio.github.i
Continue reading

Spring WebFlux RequestBody

Spring WebFlux RequestBody - Raw vs MonoWebFlux 사용 시 Controller 단에서 RequestBody 를 인자로 받을 때, 다음과 같이 Mono를 받아오도록 작성해야할까? 1234@PostMapping("/mono")public Mono<SellerOut> createWithMono(@RequestBody
Continue reading

JPA 필요한 것만 조회하자

JPA 필요한 것만 조회하자JPA 는 편리하지만 편리함 뒤에 숨어있는 성능 손실 위험이 있다. 이건 JPA가 그 자체로 성능 상 불리하다는 얘기가 아니라, 편하게만 쓰다보면 잘못 쓰는 길로 빠져서 성능에 해를 끼칠 위험도 꽤 있다는 얘기다. 여러가지 원칙이 있겠지만, 이번에 기억해둬야 할 원칙은 JPA는 필요한 것만 조회하자 엔티티아래는 어떤 카테고리를 나
Continue reading

IDE 에서는 되는데 jar 에서는 안 돼요 - Java Resource

IDE 에서는 되는데 jar 에서는 안 돼요 - Java Resource 한 줄 요약: 웬만하면 getResource() 쓰지 말고 getResourceAsStream() 쓰자 기본 폴더 구조자바에서는 메이븐이 널리 사용되면서 아래와 같은 폴더 구조가 표준처럼 사용되고 있다. src/main/java 폴더 하위에 있는 java 파일은 빌드 후 targe
Continue reading

Java Memory Monitoring

Java 메모리 모니터링두서 없이 이것저것 모아본 자바 메모리 모니터링 Heap Dump 힙에 있는 모든 객체 Dumpjmap -dump:format=b,file=HEAP_DUMP_OUTPUT_FILE_NAME.hprof PID 힙에 있는 Live 객체만 Dumpjmap -dump:live,format=b,file=HEAP_DUMP_OUTPUT_FILE_N
Continue reading

Java Native Memory Tracking

Java Native Memory TrackingDMA자바에서도 DirectBuffer를 이용해서 JVM Heap이 아닌 Native 메모리를 사용하고 DMA(Direct Memory Access)의 장점을 활용할 수 있다. 구체적인 사용법 등 자세한 내용은 Java NIO Direct Buffer를 이용해서 대용량 파일 행 기준으로 쪼개기를 참고하고 장단
Continue reading

Spring Data에서 Batch Insert 최적화

Spring Data에서 Batch Insert 최적화Spring Data JPA가 안겨주는 편리함 뒤에는 가끔 성능 손실이 숨어있다. 이번에 알아볼 Batch Insert도 그런 예 중 하나다. 성능 손실 문제가 발생하는 이유와 2가지 해결 방법을 알아본다. 전체 코드는 https://github.com/HomoEfficio/micro-benchmark-
Continue reading

GET이냐 POST냐 그것이 문제로다

GET이냐 POST냐 그것이 문제로다며칠 전에 페이스북에 올렸던 질문에 여러분께서 시간 내서 좋은 의견 나눠주셔서, 나만 꿀꺽하고 넘어가면 도리가 아닌 것 같아 다시 정리해본다. 먼저 이 글은 나름의 결론이 있기는 하지만, 그것이 정답이라고 단정할 수는 없다.또한 REST와는 아무런 관계가 없으며, 오직 HTTP Method에 대한 얘기다. 문제보통 클라이
Continue reading

HomoEfficio


Seoul, Korea.