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

Java Concurrency Evolution

Java Concurrency EvolutionDZone에서 본 글인데 동시성 처리 관련 여러 방식을 비교하면서, 프로젝트 룸(Loom) 코드도 구경할 수 있어서 원글 작성자의 허락을 받고 우리말로 옮겨본다. 원문: https://dzone.com/articles/java-concurrency-evolution 자바는 초창기부터 스레드를 사용해서 동시성
Continue reading

무부심 프로그래밍 십계명

무부심 프로그래밍 십계명코딩 호러의 글 The Ten Commandments of Egoless Programming을 무부심 프로그래밍 십계명이라는 이름으로 옮겨봤다. 무부심이라는 표현은 법정 스님의 무소유에서 따왔다.무소유는 소유하지 말자가 아니라, 불필요한 소유에서 벗어나자는 것이다. 마찬가지로 자부심을 갖지 말자가 아니라, 불필요하게 지나친 자부심에
Continue reading

Constants vs Util

Constants vs Util오늘 일하다 의견을 나누게 된 Constants와 Util 얘기 애플리케이션이 실행되는 서버 IP를 가져와서 로그에 남길 일이 있다. 이유는 모르겠지만 InetAddress.getLocalHost().getHostAddress()로 찍으면 127.0.0.1 이 출력돼서 다른 방법을 찾아보니 아래와 같이 NetworkInterf
Continue reading

Back to the Essence - Java-Servers - (2)

Back to the Essence - Java Servers - 2편1편에서 블로킹 방식의 싱글 스레드 소켓 서버를 만들어봤고 다음의 문제가 있음을 발견했다. 블로킹 방식의 싱글 스레드 소켓 서버는 시간 끄는 이상한 클라이언트가 하나만 들어와도 서버가 먹통이 되고, 다른 클라이언트까지 먹통될 수 있다. 이제 시간 끄는 이상한 클라이언트가 들어오더라
Continue reading

Back to the Essence - Java Servers - (1)

Back to the Essence - Java Servers - 1편서버 프로그래밍을 한다고는 하지만, 지난 수년 간 굴러도 스프링 위에서만 구르다보니 스프링 없이는, 아니 이제는 스프링만으로도 뭘 못할 것 같고 스프링 부트 없이는 간단한 메아리(Echo) 서버조차 못 만드는 경지지경에 이르렀다. 이 아니 부끄러운가.. 그래서 Java가 제공해주는 cla
Continue reading

Batch 작업과 Connection Pool

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

HomoEfficio


Seoul, Korea.