본문 바로가기
반응형

Language/Java17

Spring Boot Actuator로 메모리 이슈 모니터링하기 운영 중인 서비스에서 종종 OOM이슈가 발생했다. 원인을 명확하게 알수 없어서 고민하던중 spring 어플리케이션을 모니터링해주는 spring actuator를 알게 되어서 이렇게 글을 작성한다. 그래서 우리 서비스를 가지고 메모리 관련 매트릭 정보를 확인해보았다. 목차 Spring Actuator란? spring boot로 실행중인 애플리케이션의 내부 상태를 모니터링 해주는 모듈(?). 메모리, 캐시 등 여러 metrics을 http Endpoint로 제공해준다. endpoints 액추에이터가 프로젝트 빌드의 일부가 되면 여러가지 엔드포인트를 사용할수 있다. 예를 들어 간단하게 직접 확인 해본 엔드포인트들은 아래와 같다. - /health : 애플리케이션의 현재 상태 정보 표시 - /beans : 컨텐.. 2024. 4. 14.
자바와 코를린에서 Annotation(어노테이션) 정리 자바, 코틀린으로 개발을 하다가 @ 표시를 많이 봤는데, 어떤 의미인지 몰라서 정리해보는 글이다. Annotation(어노테이션)이란? 사전적인 의미로 '주석'이라는 뜻으로, 자바와 코틀린에서 사용한다. 자바에서 어노테이션은 코드사이에서 주석처럼 쓰이면서 특별한 기능을 수행하도록 하는 기술이라고 볼 수 있다. 또한 kotiln docs에서는 메타데이터를 코드에 비침추적으로 추가할 수 있는 수단이라고 설명했다. 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다. 어노테이션은 멤버변수, 함수,클래스 등 다양한 곳에 있을 수 있다. 문법체크, 코드자동생성, 기능실행 등 다양한 기능을 가진 어노테이션이 존재할 뿐만 아니라 커스텀 어노테이션도 만들어서 사용할 수 있다. 기본제공 Annotat.. 2022. 2. 10.
[Webflux]💙Mono와 Flux > Reactor > Reactive Streams 이해 이제 진짜 webflux 코드를 보면 낯설은 구문?문법?들이 너무 많다. 그냥 느낌적으로만 이해하고, 정확하게 어떤의미인진 몰라서 mono랑 flux 간단한 튜토리얼처럼 구현해보려고 했다. 그런데 어쩌다 Reactor를 알게 되고, 그 근본인 Reactive Streams까지 올라가버렸다.. 근데 이런 흐름으로 이해하고 공부하는건 좋은거 같다.힘들지만 이런 흐름으로 이해하면 mono와 flux를 더 쉽게 이해할 수 있겟지ㅣ.. Webflux Webflux로 구현한다고 하면, Mono와 Flux를 알아야한다. 대부분의 메소들이 Mono와 Flux로 반환하기 때문이다. 이 Mono와 Flux는 Reactor 라이브러리의 주요객체이다. 그리고 Reactor 라이브러리는 Reactive Streams의 구현체로.. 2022. 2. 8.
[Spring][MVC] RedisTemplate으로 Spring과 Redis와 연동하기 2022.02.06 - Mac M1에서 가능한 Redis GUI Client 프로그램 : Medis2 2022.02.07 - [Redis] 레디스와 캐시 그리고 데이터구조 이번엔 spring에서 redis를 어떻게 연동하는지 알아 볼 것이다. 안그래도 내가 궁금했던 패키지(?)들이다. data.redis.core.ReactiveStringRedisTemplate data.redis.core.RedisOperations data.redis.core.RedisTemplate data.redis.core.SessionCallback 그리고 일단 mvc에서 어떻게 쓰는지 간단하게 보고, 나의 메인은 webflux에서 비동기적으로 Redis를 어떻게 연결하는지 볼 것이다. 2022.02.05 - ⚽️MVC와 We.. 2022. 2. 8.
⚽️MVC와 WebFlux의 차이점, MVC가 '벽에 공 던지기'라면 WebFlux는..? webflux를 이제 막 살펴보고 있는데, 길가다 어떤분이 비유해주신 내용 보고 무릎을 탁! 하고 쳤다. 뭔가 신박하면서 명쾌한 설명인것 같아서 한번 알아보려고 한다. 기본 MVC가 벽에다가 공던지고 공받기라면 WebFlux는 공을 기차에 실어보낸다. 기차가 레일을 따라 한 바퀴 돌아서 공을 내려 준다. 용어정리 : 동기vs비동기, 블로킹vs논블로킹 webflux와 spring mvc를 비교하기전에 기본적인 개념부터 정리하고 가야한다. 왜냐면 이 개념이 전부이기 때문이다..... 동기(Synchronous) 동기는 말그대로 동시에 일어날수 있다는 뜻인데, 호출과 응답이 동시에 이루어 지는 것을 의미한다. 그래서 함수를 호출한 곳에서 바로 응답을 받는 것으로 비동기와 비교했을때 처리결과를 받는시점에 대한 .. 2022. 2. 5.
[Webflux](보류)Java기반 Spring webflux 시작하기 - RestController 방식 사실 나의 목표는 Intellj에서 gradle로 Kotiln기반 Spring webflux 프로젝트를 시작하는 것이다. 그런데 일단 코틀린기반으로 Webflux프로젝트를 진행한 사례를 찾기 쉽지 않았다. 그래서 우선 java기반으로 hello world를 먼저 찍어보고, 이걸 먼저 이해한다음에 kotiln으로 도전해봐야겠다.. 그런데, 그 전에 java기반 코드를 작성할 수 있는 방법은 3가지가 있는것 같다.. (각 차이점은 사실 잘 모르겠다) Handler기반 방식 : https://pearlluck.tistory.com/714 RestController 방식 : 현재글 Reactor 방식 우선 이번 글에선 RestController기반 방식으로 구현된 예제만 기록해보려고한다. dependecy 적용.. 2022. 2. 1.
[Webflux](보류)Java기반 Spring webflux 시작하기 - Handler방식 사실 나의 목표는 Intellj에서 gradle로 Kotiln기반 Spring webflux 프로젝트를 시작하는 것이다. 그런데 일단 코틀린기반으로 Webflux프로젝트를 진행한 사례를 찾기 쉽지 않았다. 그래서 우선 java기반으로 hello world를 먼저 찍어보고, 이걸 먼저 이해한다음에 kotiln으로 도전해봐야겠다.. 그런데, 그 전에 java기반 코드를 작성할 수 있는 방법은 3가지가 있는것 같다.. (각 차이점은 사실 잘 모르겠다) Handler기반 방식 : 현재글 RestController 방식 Reactor 방식 으허,,..너무 산넘어 산이다ㅠㅠㅠ 1. New Project 생성 Intellj > New > New Project > Spring Initializr로 프로젝트를 바로 생.. 2022. 2. 1.
[Webflux + Kotlin] Intellij에서 gradle로 Kotiln기반 Spring webflux 프로젝트시작하기 이 내용을 어떤 카테고리에 넣어야할지도 의문이 들었다. 그리고 관련된 내용을 검색해봐도 항상 내가 원하는 모든 조건을 만족할만한 예제가 없었다. ㅠㅠㅠ 내가 원하는 조건은 아래와 같다. 그리고 앞으로도 이 조건대로 kotiln기반 Spring webflux를 스터디 해볼 예정이다. IDE: Intellj Build Tool : gradle Language : Kotiln Framework : Spring5 (Webflux) 하 이 조건대로 코틀린 예시까지 있는 책 어디 없나 진짜..(spring공식문서뿐이네;) 보통 다 자바언어로 구현하거나 maven프로젝트가 많다..그래서 내가 원하는 조건의 프로젝트 예시는 거의 없다..흑 webflux는 reactor라는 라이브러리를 사용해서 비동기처리를 진행하는데,.. 2022. 2. 1.
[WebFlux] 💚 Webflux 그림으로 이해하기(Reactive프로그래밍) 아래의 개념정리는 유튜브 메타코딩의 spring boot weblflux강좌를 요약한 내용입니다. webflux에 대한 개념이 1도 잡혀있지 않았는데 강의를 보고 진짜 금방 이해가 되었다. 정말 이해하기 쉽게 설명해주셨다. Spring Webflux가 '왜' 나왔는가? 예를 들어, 아래와 같이 A가 몇시냐고 물어봤을때 그 대답을 얻기까지 과정은 아래의 프로세스에 따라서 진행이 된다. 하지만 이렇게 진행할 경우 두가지 문제점이 있다. 멍때리는 시간이 존재한다. 그 시간에 다른일을 못함 알고싶은 정보를 알기 위해선 항상 물어봐야한다. 그래서 이 문제점을 해결할 수 있는게 Reactive programing (반응형 프로그래밍) Reactive programing (반응형 프로그래밍)이란, "요청이 있을때 .. 2022. 2. 1.
[Spring] 어노테이션 @Autowired @PostMapping @ReqeustBody 2021.04.07 - [Spring] 어노테이션(Annotation)이란? | Bean이란? @Autowired @PostMapping @ReqeustBody request Body내용이 null일떄? the-dev.tistory.com/21 [디버깅] @RequestBody로 받은 json데이터가 null일 때 해결 방법 안녕하세요. 개발개입니다. 이번 글에서는 Spring/SpringBoot로 API 개발 과정에서 오류가 없는 것 같은데 @RequestBody 애노테이션으로 받은 json 데이터가 비어있을 때 확인해 볼 부분을 알아보도록 하 the-dev.tistory.com 2ssue.github.io/programming/json-and-requestBody/ @RequestBody도 잘 작성했.. 2021. 4. 13.
728x90