Spring WebFlux 3

What Color is Your Function? (feat. 함수의 색 전염성)

본 블로그 글의 내용은 이전 글인 'Java도 한다 경량 쓰레드 (Virtual Thread)' 중에서 설명하는 함수의 색상 문제를 다룬다. Java도 한다 경량 쓰레드 (Virtual Thread)봄(Spring)은 왔는가?Java의 위대한 산물인 가상 쓰레드는 분명 JVM 생테계에 엄청난 열풍을 일으켰음에 의심할 여지가 없다.많은 개발자들이 그 패러다임에 발맞춰서 프레임워크를 개선하고 있듯downfa11.tistory.com   함수의 색 문제 (Function coloring Problem)아래의 포스트에서부터 시작한 논의로 Java, Kotlin, Go 등의 언어에 대해서 활발하게 이야기되고 있다.  What Color is Your Function? – journal.stuffwithstuff...

backend 2025.03.12

Hexagonal Architecture의 테스트코드 작성 (feat. StepVerifier, TestPublisher)

프로젝트를 Hexagonal Architecture로 개발하면서, 외부 시스템과 소통하는 Port 인터페이스를 통해서 실제 비즈니스를 담당하는 UseCase의 구현체인 Service를 검증할 수 있다. 독립적인 테스트 코드비즈니스 로직이 외부 시스템에 의존하지 않으므로, 독립적으로 단위 테스트(Unit Test), 빠른 테스트 실행DataBase, HTTP Client, 메시징 등의 외부 시스템에 대한 각 Adapter는 독립적으로 테스트 가능의존성의 대체(Mock, Stub, Fake)Port-Adapter 패턴으로 인해, 실제 사용하는 외부 시스템이 아닌 Mock 등 으로 활용한 테스트 가능예를 들어, DB Adapter 대신 InMemoryRepository를 사용하여 테스트할 수 있다.  테스트코..

backend 2025.02.13

MSA? 이길 수 없다면 합류해라 (feat. Kafka IPC 트러블슈팅)

당근마켓도 100만 MAU 뜨고 나서야 MSA를 도입했다는거 보면, 사실 그정도 규모 이하는 모놀리식으로 충분하다는 소리다.​도대체 왜 이렇게 MSA에 목메이게 되었는가..​이길 수 없다면 합류해라​나도 MSA하겠다​​이거말고 진짜 MSA를 결심한 이유원래 C++로 이뤄진 게임 서버와 통신하기 위해 Kafka를 사용했었다.   매칭 결과나 전적 결과를 저장하기 위해서라도 전달 과정에서 최소 한번은 디스크에 기록되어야 했다.​1. 매치메이킹의 결과를 받아서 게임 서버에 방을 생성2. 게임이 끝나면 그 결과를 다시 웹서버로 전달 대충 목적인데 닭 잡는데 소 칼 쓰는 느낌이다. 그래서 kafka를 좀 더 효율적으로 쓰기 위해서 고도화를 고민해봤다. ​일단 Redis를 이용하던 매치메이킹 기능이 스케줄러로 동작..

project/wargame 2025.01.03