@GetMapping("/test") public String test() { return "redirect:/test/"+Math.random(); } @GetMapping("/test/{id}") public String test(@PathVariable Double random) { ... } 스프링 낮은 버전을 사용 할 경우, 위와 같이 redirect prefix를 사용하여 string 형태로 redirect 할 경우 memory leak이 발생할 수 있다. spring 내부적으로 beanName을 기준으로 ConcurrentHashMap에 caching 하는 로직이 있어 pathVariable이 포함된 url 등을 return하게 될 경우 모든 redirect return url이 캐시되어 m..
RestTemplate으로 대용량 파일 전송시 OOM(Out Of Memory)가 발생 할 수 있다. RestTemplate 소스를 열어보면 상단 캡처처럼 setBufferRequestBody를 false로 세팅 후 사용을 권장하고있다. RestTemplate가 내부적으로 버퍼를 사용하게 되는데 이 옵션을 꺼주는것이다. 실제 테스트를 진행해보자. 테스트 결과 실제로 확인해보기위해 750MB Dummy file을 생성한 후 테스트를 진행했다. 결과는 다음과 같다. - 첫번째 동그라미 : setBufferRequestBody(true) - 두번째 동그라미 : setBufferRequestBody(false)
MongoDB 샤딩시 구성요소는 다음과 같다. Mongos ConfigServer Shard Cluster Mongos Application server에서 mongodb에 접근할때 mongos를 통해 접근한다. 공식 문서에 다음과 같이 잘 설명되어있다. the mongos instances provide the interface between the client applications and the sharded cluster. The mongos instances route queries and write operations to the shards. From the perspective of the application, a mongos instance behaves identically to an..
문득 3 way handshaking 을 직접 보고 싶어서 wireshark를 통해 테스트 해보고 결과를 기록하였다. Test 서버 구성은 간단하게 NGINX를 앞에 두고 reverse proxy를 통해 NodeJs를 바라보게 만들어두고 "Hello World"를 출력하도록 구성하였다. 결과는 위 화면과 같다. 빨간색으로 줄을 그은 부분은 내 서버 ip이므로 가려보았다. 결과는 이론상 아는 바와 같았다. 먼저 1~3줄을 보면, SYN과 ACK를 서로 주고 받으며 3way handshaking 과정이 나타난다. Source에서는 내 Client의 Public IP가 아닌 private IP가 나왔고, Destination은 서버의 public IP가 표출됨을 알 수 있다. 또한, INFO 부분을 보면 알 ..
지난 AWS 장애 관련 글에서 Multi Region이나 Multi Cloud를 언급 했었는데, 이번에 Multi Region 관련 TEST를 해보고 기록으로 남기려고 한다. 이 글에서 Test한 사항은 Multi Region 구성이다. 테스트에서는 Route 53 인스턴스를 활용하여 서울Region의 EC2와 싱가포르Region의 EC2를 ACTIVE-STANDBY 구조로 만들어 보았다. 초록색 부분은 개인서버정보 이므로 안전하게 삭제하였다. Route53 인스턴스에 들어간 후 , 1번 [ Hosted zones ] -> 2번 [ Create Recode Set ]을 클릭하면 우측 3번과 같은 화면을 볼 수있다. Route53에서는 4번[ Routing Policy ]를 설정 할 수 있는 것을 알 수 ..