
들어가며... 운영중인 시스템에서 최근들어 NullPointException이 자주 발생하였고 대부분이 Enum의 equals 였습니다. 원인은 DB 컬럼에 디폴트값 설정도 안되어 있는 컬럼과 특정 로직에서 그 컬럼을 Null로 업데이트를 하였고 비교로직에서는 memberDto.joinYn.equals(TypeYn.N) 형식으로 되어있어 발생 했습니다. 이미 턴키 프로젝트 개발자들은 다 떠난상태고 소스레벨까지 제대로 체크하지 못한 죄도 있고... 이렇게 구현된 부분을 전체 수정할겸 어떤형식으로 하는게 좋을지 남기기위해 포스팅 합니다. Enum Enum은 Java에서 상수를 정의하는 특별한 형태의 클래스입니다. Enum 상수들은 클래스로 정의되어 있으며, JVM 메모리에는 다음과 같은 방식으로 로드됩니다...

들어가며... 실무에서는 와탭과 같은 모니터링 솔루션을 도입하여 사용하고 있으나, Spring Boot로 구성한 개인 프로젝트에서는 모니터링을 위해 많이 사용되고 있다는 Spring Actuator + Prometheus + Grafana 조합으로 적용 하면서 내용을 정리해 보기 위해 포스팅 합니다. Spring Actuator 기본 설정 + Prometheus + Grafana 적용 Spring Actuator 보안 적용 (추후 작성 예정) Spring Actuator Spring Actuator는 Spring Boot 애플리케이션의 모니터링과 관리를 간편하게 할 수 있는 기능을 제공합니다. 이 기능은 애플리케이션의 상태를 실시간으로 추적하고, 메트릭을 수집하며, 다양한 관리 작업을 수행할 수 있도록 ..

Gradle Gradle은 프로젝트를 빌드하고 관리하기 위한 오픈 소스 빌드 자동화 도구입니다. Groovy 또는 Kotlin을 기반으로 하는 DSL(Domain Specific Language)을 사용하여 빌드 스크립트를 작성하며, 안드로이드 애플리케이션부터 Java, Kotlin, 그루비 등의 프로젝트까지 다양한 유형의 프로젝트를 지원합니다. 특징 유연성: Gradle은 Groovy나 Kotlin과 같은 DSL(Domain Specific Language)을 사용하여 빌드 스크립트를 작성할 수 있습니다. 이는 빌드 프로세스를 세밀하게 제어할 수 있도록 합니다. 선언적 DSL: Gradle은 선언적 DSL을 사용하여 프로젝트의 의존성, 작업 등을 정의할 수 있습니다. 이는 빌드 스크립트를 간단하게 만들..

Spring Batch 스프링 배치(Spring Batch)는 스프링 프레임워크 기반으로 개발된 배치 처리 프레임워크입니다. 배치 처리란 대량의 데이터를 일괄적으로 처리하는 작업을 말합니다. 스프링 배치는 이러한 대량의 데이터를 처리하는데 필요한 모든 기능을 제공하여, 안정적이고 확장 가능한 배치 처리 시스템을 구축할 수 있도록 도와줍니다. 또한, 기업 환경에서 대용량 데이터 처리 및 정기적인 배치 작업이 필요한 시스템에 쿼츠와같은 스케줄러와 함께 사용되고 있습니다. 특징 단순한 설정: 스프링 배치는 스프링 프레임워크와 통합되어 있어서, 스프링의 IoC(Inversion of Control) 컨테이너와 의존성 주입(Dependency Injection) 등의 기능을 활용할 수 있습니다. 이를 통해 간단한..

프론트 서버에서 백엔드 서버에 API를 요청시 헤더 설정에 Accept-Encoding: gzip 설정하여 요청을 하였지만 json 응답값이 gzip 으로 압축되지 않고 온다는 문의를 받았습니다. gzip 압축... 그게 뭔지 모르니 우선 검색을 통해 알게 되었고 SpingBoot 에 적용 후, 개발 프론트 서버 + 로컬 백엔드와 연결하여 테스트 후 응답값이 정상적으로 gzip 으로 압축이 된걸 확인하고 배포하였지만 백엔드 개발 서버에서는 여전히 적용되지 않았습니다. 로컬서버 내장톰캣,개발서버 외장톰캣의 차이는 생각도 안하고 CloudFront, Nginx에도 설정도 변경...해봤으니 각각에 대해 설정하는 포스팅 입니다. gzip 데이터를 보다 효율적으로 전송하고 저장하기 위해 사용됩니다. 주로 웹 서버..

주문 프로젝트에서 고객이 웹에서 주문에 대한 상태변경을 실시간 알림으로 받기 위해 숏폴링으로 구축되어 있었고 불필요한 요청을 줄이기위해 SSE 와 웹소켓중 고민하다 SSE 를 진행하였으며, SSE에 대한 기술 포스팅입니다. (결국 웹소켓으로 변경...) 롱 폴링(Long Polling) 클라이언트가 서버에 데이터를 요청하면, 서버는 업데이트가 발생할 때까지 응답을 보류합니다. 업데이트가 발생하면 즉시 응답하고, 클라이언트는 다시 요청을 보내어 새로운 업데이트를 기다립니다. 이러한 방식은 폴링보다는 더 효율적으로 업데이트를 전달할 수 있지만, 여전히 서버에 부하가 발생할 수 있습니다. 숏 폴링(Short Polling) 폴링과 롱 폴링의 중간 형태로, 클라이언트가 주기적으로 서버에 데이터를 요청하며, 서버..
- Total
- Today
- Yesterday
- sse vs websocket
- nvWebSocket
- custom Item writer
- tomcat gzip
- spring redis cache
- codecommit repository
- CompositeItemWriter
- SpringBatch 5.1.1
- okhttp3 websocket
- 프라이빗 저장소
- nginx gzip
- spring boot jpa crud
- cacheevict
- actuator prometheus grafana
- spring boot jpa
- JdbcBatchItem
- spring boot redis cache
- 업비트 웹소켓 자바
- redis cache
- spring boot gzip
- WebSocketClient
- interceptor 예제
- spring security
- Enum Equals ==
- Enum ==
- Spring boot Actuator
- AWS 클라우드 환경
- 업비트 웹소켓
- Enum equals
- Spring Actuator
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |