전체 글
-
14. 파드의 컴퓨팅 리소스 관리카테고리 없음 2024. 3. 25. 21:54
1. 파드 컨테이너의 리소스 요청 파드를 생성할 때 컨테이너가 필요로 하는 CPU와 메모리 양 제한을 지정할 수 있다 파드의 요청과 제한은 파드에 속한 컨테이너 요청과 제한의 합이다 1.1 리소스 요청을 갖는 파드 생성하기 # 리소스 요청을 갖는 파드 apiVersion: v1 kind: Pod metadata: name: requests-pod spec: containers: - image: busybox command: ["dd", "if=/dev/zero", "of=/dev/null"] name: main resources: requests: cpu: 200m memory: 10Mi 컨테이너 요청에 cpu 200m과 memory 10Mi를 지정했다 cpu를 지정하지 않으면 이미 cpu자원이 많이 할..
-
Spring @RequestScope 빈 스코프spring/core 2022. 8. 7. 16:48
스프링에서 관리하는 빈의 스코프는 기본값이 싱글톤이다. 웹애플리케이션을 운영하는 경우 사용자마다 다른 데이터를 갖고 서버에 진입할 수 있고 다른 데이터를 갖는다면 싱글턴빈으로는 그 값을 표현할 수 없다. 사용자마다 다른 데이터를 갖는 빈을 마치 스프링이 관리하는 싱글턴 빈처럼 사용할 수는 없을까? @RequestScope 사용 @Component @RequestScope @Setter @Getter public class HttpRequest{ private String headerMessage; private int count; } @Slf4j @RequiredArgsConstructor @RequestMapping @RestController public class TestController { pr..
-
[mac] java 터미널 버전 변경하기java 2022. 3. 27. 12:20
들어가며 사내에서 사용하는 java 버전은 1.8과 11이다. 각 프로젝트마다 java 버전을 설정해 컴파일할 수 있도록 intellij가 옵션을 제공해서 큰 불편함 없이 사용할 수 있다. 최근에 이러한 걸 크게 신경쓰지 않고 개발하다가 운영환경에서 빌드 할 때 에러를 맛보았다. 바로 프로젝트 빌드 결과물을 외부 저장소에 올릴 때 생긴 문제였다. 로컬에서 컴파일한 .jar파일을 외부에 올리는데 이때 컴파일하는 건 터미널에 설정된 java버전으로 하게 된다. 1.8로 빌드해야할 프로젝트를 11버전으로 빌드한 후 외부저장소에 올리고 그걸 다운받아 사용하는 프로젝트에서 버전이 맞지 않아 컴파일 오류가 발생하게 된 것이다. 서론이 길었는데 시스템의 java 버전을 확인하고 바꾸는 방법을 남겨보자. 버전 확인하기..
-
Gradle 기본 꿀팁 정리카테고리 없음 2022. 3. 12. 14:10
gradle 버전 확인하기 - gradlew가 있는 디렉토리 경로에서 ./gradlew --version 입력 후 확인 gradle의 캐싱 프로젝트를 실행할 때 gradle은 내부적으로 두 가지 캐시를 먼저 참조한다. 첫번째로 외부라이브러리에 대한 캐시인데 우리가 외부레파지토리에서(nexux, mavenRepository...) 의존성을 다운받은 라이브러리다. 보통 [~/.gradle/cache/modules-2/files-2.1] 경로에 쫙 있는 걸 확인할 수 있다. 다음으로는 내가 작성한 자바파일의 컴파일된 버전이다. 위 설정에서 build and run using을 intelliJ IDEA 또는 Gradle로 설정할 수 있는데 intellij로 설정할 경우 프로젝트 디렉토리 하위에 out디렉토리가..
-
[java] 슈퍼타입토큰(super type token)java 2022. 1. 1. 16:25
모든 글은 토비의 봄 채널을 보며 작성하였습니다. https://www.youtube.com/watch?v=01sdXvZSjcI&t=1973s&ab_channel=TobyLee 배경 RestTemplate를 사용하다보면 파라미터바인딩을 위한 타입토큰을 넘겨주는 부분에서 생소한 ParameterizedTypeReference를 사용한 걸 볼 수 있다. 클래스 이름과 생김새를 보면 대충 아 바인딩 되길 원하는 타입을 저 안에 넣고 요청을 날리면 되겠구나 싶다. 근데 이상한 건 생성자로 성성했는데 왜 마지막에 {}가 붙냐는 것이다. 이번 기회에 파헤쳐보자. 타입토큰(Type Token) RestTemplate을 통해 요청을 보낼 때 그 반환 타입을 타입토큰 형식으로 넘겨주는 걸 볼 수 있다. RestTempl..
-
Spring 에러 핸들링spring/core 2021. 10. 2. 18:05
들어가며 웹애플리케이션 API서버를 만들 때 서버 퀄리티를 결정하는 건 인증과 에러처리라고 생각한다. 인증은 그 방식이 무수히 많고 깊이도 어마어마하지만 인증은(스프링 한정) 어느정도 정형화된 패턴이 있다. 스프링이 어떤 방식으로 에러를 핸들링하는지 그 방식을 커스텀하는 방법은 무엇인지 알아보자^^ @ExceptionHandler 이런식으로 컨트롤러에서 에러를 핸들링하는 메서드 위에 @ExceptionHandler 에노테이션을 붙여주면 잘 동작한다. 다만, 핸들링을 추가하려면 반드시 컨트롤러 수정이 필요하고 핸들링 범위가 딱 해당 컨트롤러만 적용된다는 점이 단점이다. HandlerExceptionResolver spring에서 기본적으로 제공하는 에러핸들러이고 커스텀해서 이용하는 방법도 있다. Handl..
-
Git 복잡한 상황 해결깃 & 깃헙 2021. 8. 4. 19:12
회사에 다니기 전 혼자 개발할 때는 깃과 깃헙을 단순하게 활용했다. 협엽을 위한 버전관리 도구보다는 그저 ssh를 이용한 클라우드 활용하기 정도였다. 생각없이 커밋, 푸시, PR한 과거를 복구하면서 정리해보자. 현재 상황 - 개발을 위한 로컬브랜치 생성 - 열심히 개발 및 무지성 커밋(대략 5번, 커밋메세지 무지성 "tmp") - 마스터와 싱크를 맞추기 위해 무지성 git merge master - github에 push 후 master에 Pull Request 문제점 - master와 싱크를 맞추는 과정 - 무지성 커밋과 무지성 메세지 본인만 이해할 법한 그림이지만 어쨌든 문제상황을 만들었다. test/second에서 커밋한 내용을 PR하고 main에 합쳤다. 그리고 main에서 그 내용을 가져왔기 때..
-
Spring 비동기 처리 - 3(WebClient와 Reactor)spring/reactive 2021. 6. 7. 10:43
배경 비동기 처리를 이용해 성능을 개선했다. 이제 Reactive Streams를 구현한 스프링의 Reactor API와 비동기 통신을 위한 WebClient를 활용해보자. AsyncRestTemplate -> Webclient DeferredResult, Future -> Reactor API(Mono, Flux) https://www.youtube.com/watch?v=bc4wTgA_2Xk&list=PLv-xDnFD-nnmof-yoZQN8Fs2kVljIuFyC&index=1 마찬가지로 토비님의 실습을 열심히 따라하며 공부한 내용이다. 의존성 분석 spring boot webflux 의존성을 추가하면 위와 같이 의존성이 추가된다. spring-webflux에 앞으로 사용할 Webclient, React..