Zero Downtime Migration - Design

Zero Downtime Migration - Design오징어 전문 쇼핑몰을 만들었는데 입소문이 잘 났다. 그래서 포털 몇 군데에도 API 열어줬더니 대애애애박이 났다. 물 들어 온 김에 노저어야지. 해산물 종합 쇼핑몰로 확장하려고 한다. 그런데 아뿔싸.. 엔티티 이름, 테이블 이름 등이 squid로 돼 있다. 잘못된 건 없다. 애초에 오징어 전문 쇼핑몰
Continue reading

helm 초간단 정리

helmhelm은 k8s 패키지 매니저다. 공식 문서에 흔한 그림 하나 없고 이래저래 영 마음에 들지 않아서 개념적으로 이해하는 데 필요 이상의 노력이 드는 것 같아서 어쩔 수 없이 따로 핵심만 추려서 정리해본다. 동작 구조일단 k8s 패키지 매니저가 뭔지 그림으로 맛을 보자. 이해하기 쉽게 한 가지 방식만을 골라서 단순화 했으며, 실제로는 물론 여러가지
Continue reading

Counter-Intuitive Reactive Streams

Counter-Intuitive Reactive Streams비동기 프로그래밍은 늘 어렵다. 이미 오래된 애기지만 Reactive Streams의 구현체인 RxJava나 Reactor가 나오고 Spring에서도 WebFlux가 나오면서 저변이 더욱 확대된 것 같다.학습에 의해 넘을 수 있다고는 하지만 그것도 일부 잘 하는 개발자들에 대한 얘기같고, 현실적으
Continue reading

Reactive Streams with Sequence Diagram

Reactive Streams with Sequence Diagram1 req == 1 therad인 서블릿 방식의 한계를 뛰어넘기 위해 Spring에서 WebFlux를 내놨다.Spring WebFlux는 내부적으로 Reactor를 사용하는데, Reactor는 Reactive Streams 구현체다.Reactive Streams는 홈페이지에 다음과 같이 간
Continue reading

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 Optional 바르게 쓰기

Java Optional 바르게 쓰기Brian Goetz는 스택오버플로우에서 Optional을 만든 의도에 대해 다음과 같이 말했다. … it was not to be a general purpose Maybe type, as much as many people would have liked us to do so. Our intention was to p
Continue reading

HomoEfficio


Seoul, Korea.