시작하며 현재 진행중인 프로젝트에서 웹소켓을 활용한 기능 구현을 검토중입니다. 웹소켓을 적용하기 전에 알아봐야할 것들, 고민할 것들을 아래 질문 형태로 기록해둡니다. 웹소켓이란? 웹소켓이 해결하려는 문제는 Real-Time Collaboration on Web (웹기반 실시간 커뮤니케이션)이다. 대표적으로 Trello, Google Docs 와 같은 서비스들이 있다. 웹소켓의 주요 특징 Statefulness Low Latency 2 Way Push (Bi-Directional) 브라우저/서버간 통신 Standard(규약)이 필요하다. 1개의 TCP 커넥션을 사용한다. (1 WebSocket per 1 TCP Socket Connection) Message-based 웹소켓의 Phases Opening ..
분류 전체보기

Contents 시작하며 TestContainers : 컨테이너를 활용한 통합테스트 품질 향상하기 WireMock : 외부 의존 서버를 쉽게 Stubbing 하기 Reactive Streams 테스트의 기본기 : StepVerifier WebFlux의 Controller 단위테스트 방법 WebFlux의 Stubbing WebFlux의 Service 단위테스트 WebFlux의 MongoRepository 단위테스트 WebFlux의 Integration Test JUnit의 Parameterzied Test JUnit의 Repeated Test 추천 온라인 강의 마치며Contents 시작하며 지난 블로그에서는 테스트 코드를 작성하고, 커버리지 95% 이상 유지하며 깨달은 것들을 공유했습니다. 테스트 철학, ..

Contents 시작하며 커버리지는 거들뿐 Repository 클래스는 무엇을 테스트해야 하지? 메인 클래스는 무엇을 테스트해야 하지? Unit 테스트와 Integration 테스트 커버리지 Jacoco의 Exclude는 살아있어야 한다. Instruction과 Branch 커버리지 마치며 시작하며 이번에는 F-Lab 멘토링 과정에서 진행한 프로젝트에서 테스트 코드를 작성하고, 커버리지 95% 이상 유지하며 깨달은 것들을 공유하려고 합니다. 테스트는 프로젝트의 무엇을, 어떻게, 왜 작성했는지 고수준 개념(concept)으로 다루겠습니다. *** 이번 블로그는 독자분들이 자바, 스프링, 스프링 부트의 매우 기초적인 개념을 알고 계신다는 전제하에 작성했습니다. 커버리지는 거들뿐 커버리지는 정말 거들뿐입니다...

Contents 이번 이야기 StackTrace 최소화 테스트 : 설명 StackTrace 최소화 테스트 : 결과 분석 - K6 Test Summary StackTrace 최소화 테스트 : 지표 분석 - RPS (Requests Per Second) StackTrace 최소화 테스트 : 지표 분석 - Error Rate StackTrace 최소화 테스트 : 지표 분석 - Blocked 상태 쓰레드 수 StackTrace 최소화 테스트 : 지표 분석 - JVM Heap 영역 + GC 소요시간 StackTrace 최소화 테스트 : 지표 분석 - CPU Usage StackTrace 최소화 테스트 : 결과 StackTrace 최소화 테스트 : 병목현상의 원인 배달중계 서비스. log() 제거 후 테스트 : 지..

Contents 시작하기 진행 내용 테스트 : Run 테스트 지표 분석 : 전체 테스트 지표 분석 : JVM Heap 시작하기 이번 블로그에서는 JVM 메모리 영역을 확장해서 성능 개선 여부를 확인해보겠습니다. 상황은 이렇습니다. 처리하는 Requests Per Second가 더 이상 증가하지 않는 시점에 JVM Heap 영역 사용량은 최대치까지 올라갔다. CPU가 Garbage Collection 에 필요 이상의 시간을 소비하는 것으로 보인다. JVM의 메모리를 기본설정보다 높게 잡아보자. 진행 내용 개선사항 -Xms1024 m: 시작 힙 메모리 사이즈에 처음부터 1GB를 할당 -Xmx2048 m: 최대 힙 메모리 사이즈를 2GB로 설정 기대하는 결과는? 시작부터 힙 사이즈를 크게 설정하면 GC 발생빈..

Contents 지난이야기 성능 테스트 목적 테스트 제약조건 테스트 설정 사양 (Specification) 테스트 시작 서버 지표 분석 : Rate per Second 서버 지표 분석 : CPU 사용량 서버 지표 분석 : Error Rate & HTTP Duration 서버 지표 분석 : Blocked 상태 Thread 수 서버 지표분석 : Heap 영역과 JVM 메모리 서버 지표 분석 : 결과 지난 이야기 지난 블로그에서는 전체 서비스 구조, 테스트 시나리오, 테스트 툴 K6, 테스트 프로세스 등 테스트 관련 세부사항들을 소개했습니다. 이번 포스트에서는 실제 성능 테스트를 실행하고, 결과를 통해 여러 개선 포인트를 찾아내어 다시 적용해보는 시간을 가지도록 하겠습니다. 성능 테스트 목적 1. 서버의 적정..

Contents 시작하기 : 서버 성능 테스트 이야기 전체 서비스 구조 성능 테스트 시나리오 설명 K6 사용 이유와 K6의 테스트 단위 테스트 시나리오 설명 테스트 프로세스 설명 마치며 시작하기 : 서버 성능 테스트 이야기 서버 성능테스트 이야기는 현재 진행 중인 프로젝트 In-Bob-We-Trust의 성능 테스트, 분석, 개선 과정을 담아낸 기술 블로그입니다. 진행 도중 알게 되는 내용들, 취한 액션들을 일지 형식으로 최대한 읽기 쉽게 담아내 보겠습니다. 같은 주제를 다룬 여러 기술 블로그들을 참고해본 결과, 내용이 상당히 길어질 것을 예상할 수 있으니 이야기를 여러 에피소드로 나눠서 포스트 하겠습니다. 이번 이야기에서는 테스트와 관련된 Overview, 하이레벨 뷰를 설명합니다. 현시점 프로젝트 구조..

Contents 시작하기 R2 DBC를 사용하지 않은 이유 (R2 DBC vs MongoDB ) MongoDB Cloud에서 Serverless로 전환 Spring Webflux + MongoDB Serverless 적용을 위한 버저닝 샘플 코드/예시 시작하기 프로젝트 비용 최적화를 위한 Reactive + MongoDB Atlas Serverless 적용 및 예시 (in Spring Webflux) 이번 포스트에서는 제 우아한 중계 서비스 프로젝트의 진행과정의 일부를 소개합니다. 그중 스프링 MVC에서 WebFlux로 전환하고 프로젝트를 진행하는 과정에서 MongoDB와 관련 내용들입니다. Spring R2DBC MySQL를 그대로 사용하지 않고 MongoDB로 전환한 이야기부터 MongoDB 클라우드..