
RestTemplate이란? 이 전에 썼던 글을 참고 다른 매서드에서도 반복적으로 RestTemplate을 사용한다면? RestTemplate 예시를 보면 아래와 같이 매번 객체를 새로 생성해서 사용한다. RestTemplate restTemplate = new RestTemplate(); String url = "http://example.com/users/{id}"; Map params = new HashMap(); params.put("id", "123"); User user = restTemplate.getForObject(url, User.class, params); 이렇게 사용하게 되면 모든 매서드에서 new를 써서 RestTemplate 객체를 생성해서 사용해야 한다. 트래픽이 작은 작업들에..

이전 게시글(Thread Safety)과 연관된 글로 과부하 로직을 구현하며 고민했던 것에 대한 내용 정리이다. 현재 운영/개발 중인 서버에 보안 로직으로 과부하 제어 로직을 추가하게 됐다. 아래는 과부하 로직의 명세이다. WAS로 들어오는 모든 request를 카운팅한다. 카운팅한 횟수는 response로 빠져나갈 때 차감된다. request가 reponse로 빠져나가지 않으면 count는 계속 누적되고, 특정 임계치 이상이 넘어가면 서버의 과부하 상태를 response로 내보낸다. 위 로직을 구현하기 위해 Apache Tomcat의 멀티쓰레드 구조에 대한 대응으로 Atomic Integer 클래스를 이용해 동시성 이슈를 제어하도록 했다. 이번 글에서는 과부하 제어 로직이 위치할 부분에 대한 쓰려고 한..

Spring Boot가 보편화되면서 많은 부분들이 뒤로 숨겨지게 되었지만, 현재 담당하고 있는 서비스는 Spring MVC로 구현되어 있어 Spring MVC project에는 Spring Boot보다 많은 정보들을 xml파일로 확인할 수 있었다. 사실 Client 단부터 이야기를 시작해야 시작과 끝이 잘 맺어질 수 있을 것 같지만, 아직은 서버사이드에 치중해서 공부 중이니 DispatcherServlet을 기준으로 작성해보려고한다. 아직 공부하는 단계니 계속해서 내용은 보완해 나가야할 것 같다. DispatcherServlet이란? 갑자기 DispatcherServlet부터 이야기를 시작하겠다하면 의아할 수 있다. 구현부만 생각한다면 개발자는 스프링에서 제공하는 기능인 DispatcherServlet를..

이전 프로젝트에서 과부하 제어에 관한 작업을 했었다. WAS에서 Request가 들어올 때마다 interceptor에서 과부하 수치를 카운팅하고, Response가 나갈 때마다 차감되는 형태로 구현했었다. 서버에 정상적으로 반영됐고, 트래픽이 몰려도 평균 과부하 수치가 10 이내 유지되면서 문제 없이 가동되고 있었다. 문제는, 외부 API에서 우리 서버에서 한 요청을 제대로 응답해 주지 못해 익셉션이 발생했을 때 생겼다. 익셉션이 발생했을 때 Response가 정상적으로 종료되지 않아 interceptor를 타지 않고 종료되면서 과부하 수치가 차감되지 않는 문제였다. 다행히 문제를 조기 발견해 조치를 했지만, 익셉션 처리를 제대로 할 필요를 느껴서 공부해봤다. Spring에서는 익셉션을 한곳에서 관리하는..

이전 글에 이어서 서버에서 HTTP 요청을 하는 방법에 대한 정리 글이다. 이전 글에선 JAVA에서 사용되는 API를 살펴봤다면, 이번에는 Spring에서 제공하는 방식에 대해 알아보려 한다. Spring Framework 에서는 HTTP 요청을 위해 대표적으로 세 가지 API를 지원한다. RestTemplate Spring 3부터 지원, 전통적인 blocking/동기식 HTTP request 기능 제공 AsyncRestTemplate Spring 4에 추가된 RestTemplate에 비동기 기능을 추가한 방식 WebClient Spring 5에 추가된 RestTemplate을 보완하기 위한 HTTP requests non-blocking/reactive 클라이언트 크게 RestTemplate/WebCl..
- Total
- Today
- Yesterday
- AOP
- Kotlin
- CloudFront
- springboot
- 후쿠오카
- AWS
- AWS EC2
- Log
- S3
- lambda
- cache
- GIT
- 오블완
- JWT
- MySQL
- EKS
- OpenAI
- ChatGPT
- docker
- java
- Spring
- Elastic cloud
- openAI API
- elasticsearch
- 티스토리챌린지
- serverless
- object
- 스프링부트
- 람다
- terraform
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |