본문 바로가기
반응형

Language54

Spring Boot Actuator로 메모리 이슈 모니터링하기 운영 중인 서비스에서 종종 OOM이슈가 발생했다. 원인을 명확하게 알수 없어서 고민하던중 spring 어플리케이션을 모니터링해주는 spring actuator를 알게 되어서 이렇게 글을 작성한다. 그래서 우리 서비스를 가지고 메모리 관련 매트릭 정보를 확인해보았다. 목차 Spring Actuator란? spring boot로 실행중인 애플리케이션의 내부 상태를 모니터링 해주는 모듈(?). 메모리, 캐시 등 여러 metrics을 http Endpoint로 제공해준다. endpoints 액추에이터가 프로젝트 빌드의 일부가 되면 여러가지 엔드포인트를 사용할수 있다. 예를 들어 간단하게 직접 확인 해본 엔드포인트들은 아래와 같다. - /health : 애플리케이션의 현재 상태 정보 표시 - /beans : 컨텐.. 2024. 4. 14.
[Kotlin] 굉장히 초라한 API 설계..와 구조? (+ JSON 생성기) 점점 더워져서 그런지 의욕이 없고, 의지가 없이 쳐지는 일상이다..ㅜㅜ 그러던 중 요즘 하고 있는 코틀린 api개발 관련해서 간단하게 기록해볼까한다... 내가 직접 짰던 코드를 바탕으로 위 다섯가지들의 연결관계들의 흐름을 어떻게 설계했는지 간단하게 알아보려고 한다. 아래와 같이 몇가지 컴포넌트들로 구성된다. 1. Resource 2. Response 3. DTO 4. Service 5.Repository 간략하게 resouce는 요청포맷, reponse는 응답포맷을 정의하는걸로 보면되고, DTO는 응답포맷에 들어가는 data를 정의한다고 보면 된다. 그리고 Service가 주로 Repository에서 db에서 쿼리한 결과를 바탕으로 주된 동작방식을 구현한다고 이해하면 될것 같다. Resource에서는 e.. 2023. 6. 18.
[Kotlin] 아규먼트(Argument) 자동완성 플러그인 :: Fill Class 최근에 코틀린으로 테스트코드를 작성하고 있다. 그런데 그때마다 더미데이터처럼 생성자들을 직접 넣어줘여하는 일이 많다. 예를 들면, 이렇게 ProductDTO에 해당하는 아규먼트들을 직접 일일일 써야한다. 그런데 DTO들이 많이 많을 뿐만 아니라 메타데이터가 많을경우엔 어지간한 노가다가 아니다..후.. 그러다가 이렇게 아규먼트들을 자동완성해주는 플러그인을 발견해서 공유해봅니다! IntellJ 플러그인 설치방법 https://plugins.jetbrains.com/plugin/10942-kotlin-fill-class Kotlin Fill Class - IntelliJ IDEs Plugin | Marketplace Intellij plugin that provide intention action for em.. 2022. 8. 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.
[Kotlin] 코틀린 오류 온통 빨갛게 물들어버렸다 - Invalidate Caches 에러메세지 Cannot access script base class 'org.gradle.kotlin.dsl.KotlinBuildScript'. Check your module classpath for missing or conflicting dependencies 상황 gradel.kts를 비롯한 모든 프로젝트 파일들이 다 빨갛게 물들어버렷다! 뭔가 패스가 안맞아서 생기는 것 같다 원인 해결 진리의 restart.. File > Invalidate Caches > restart 참고문서 https://stackoverflow.com/questions/65645510/cannot-access-script-base-class-org-gradle-kotlin-dsl-kotlinbuildscript 2022. 2. 5.
[Kotlin] 코틀린 심화문법4 (object와 companion object) 지금까지 코틀린 기본세팅을 진행했다. 2022.01.29 - [Kotlin] 코틀린 기본개념 - 코틀린이란? 도대체 왜 쓰는가? 특징! 2022.01.28 - [Kotlin] 코틀린 환경설정 - Intellj에서 코틀린 프로젝트 생성하기 2022.01.29 - [Kotiln] Intellj에서 코틀린 코딩컨벤션 Kotlin Style Guide 적용하기 2022.01.30 - [Kotiln] 코틀린 실행하기 - Scratch File (스크래치 파일) 만들기 그리고 간단한 기본문법도 살펴봤다. 2022.01.29 - [Kotiln] 코틀린 기본문법1 (변수선언/함수선언/자료형/반복문/조건문) 2022.01.30 - [Kotiln] 코틀린 기본문법2 (NULL처리 : lateinit/lazy/!!/?/?... 2022. 2. 4.
[Kotlin] 코틀린 심화문법3 (data class와 open class) 지금까지 코틀린 기본세팅을 진행했다. 2022.01.29 - [Kotlin] 코틀린 기본개념 - 코틀린이란? 도대체 왜 쓰는가? 특징! 2022.01.28 - [Kotlin] 코틀린 환경설정 - Intellj에서 코틀린 프로젝트 생성하기 2022.01.29 - [Kotiln] Intellj에서 코틀린 코딩컨벤션 Kotlin Style Guide 적용하기 2022.01.30 - [Kotiln] 코틀린 실행하기 - Scratch File (스크래치 파일) 만들기 그리고 간단한 기본문법도 살펴봤다. 2022.01.29 - [Kotiln] 코틀린 기본문법1 (변수선언/함수선언/자료형/반복문/조건문) 2022.01.30 - [Kotiln] 코틀린 기본문법2 (NULL처리 : lateinit/lazy/!!/?/?... 2022. 2. 3.
728x90