일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- CKA
- kotlin querydsl
- CloudWatch
- Linux
- kotlin coroutine
- 티스토리챌린지
- APM
- minikube
- 기록으로 실력을 쌓자
- Spring
- golang
- 정보처리기사 실기
- 공부
- AWS EKS
- 오블완
- CKA 기출문제
- AI
- PETERICA
- Elasticsearch
- Pinpoint
- 정보처리기사 실기 기출문제
- 코틀린 코루틴의 정석
- IntelliJ
- aws
- kotlin
- Java
- 정보처리기사실기 기출문제
- Kubernetes
- docker
- mysql 튜닝
- Today
- Total
목록Programming/Spring (59)
피터의 개발이야기
ㅁ 들어가며ㅇ 함께 일하는 쿠루와 이야기 하면서 대용량 파일 업로드 시 OOME을 줄이는 방법에 대해서 고민하게 되었다. 관련 내용을 찾고 공부하면서 Spring에서 제공하는 MultipartFile.transferTo() 메서드에 대해서 알게 되었다. 이 메서드는 파일 업로드 처리를 간단하고 효율적으로 만들어주는 강력한 도구였다. ㅁ transferTo() 메서드란?transferTo() 메서드는 MultipartFile 인터페이스에서 제공하는 메서드로, 업로드된 파일을 서버의 지정된 위치로 저장하는 역할을 한다. 이 메서드는 파일 데이터를 메모리에 로드하지 않고 직접 디스크로 전송하여 대용량 파일 처리에도 효율적이다. ㅁ 주요 특징간편한 사용: 단 한 줄의 코드로 파일 저장이 가능합니다.메모리 효율성..
ㅁ 들어가며ㅇ Netty TcpClient를 설정하는 방법을 정리하였다. 알람 개선을 위해 TcpClient 소스를 분석하면서 알게된 내용을 정리해보았다.ㅇ RequestTimeout이 너무 짧으면 오류에 대한 알람이 자주 발생하고, 그만큼의 side-effect가 발생한다. 하지만 너무 길게 설정하면 리소스 자원의 낭비가 발생할 수 있다. ㅇ tcpClient가 동시에 처리할 수 있는 pool의 유휴자원을 확보하고 알람의 적절한 발생을 컨트롤 하기 위해 MSA구조에서 각 레벨에서의 적절한 수준의 timeout 설정은 필수이다. ㅁ 기본 설정 ㅇ TcpClient 인스턴스 생성TcpClient tcpClient = TcpClient.create(); ㅇ 호스트 및 포트 설정tcpClient = tcpCl..
ㅁ 들어가며ㅇ Spring Boot의 @Cacheable 어노테이션은 애플리케이션의 성능을 향상시키기 위해 자주 사용되는 캐시 기능을 제공된다.ㅇ 이 글에서는 @Cacheable의 사용법과 관련된 다양한 기능을 Kotlin 예제를 통해 살펴보다. ㅁ Spring Cache Abstration이란? 스프링은 캐시 추상화(Cache Abstraction)을 통해 사용자는 캐시 구현에 대해 신경 쓸 필요 없이 퍼블릭 인터페이스를 쉽게 캐싱 기능을 사용할 수 있는 편리한 캐싱 기능을 지원한다. 캐싱이 필요한 비즈니스 로직에서 EhCache, Redis 등 캐싱 인프라에 의존하지 않고 추상화된 퍼블릭 인터페이스로 캐싱을 할 수 있다. 인터페이스화 되면 EhCache로 사용 중에 Redis로 변경이 쉬워진다. ..
ㅁ 관련 글ㅇ [kubernets] skaffold란, Kubernetes 로컬 개발환경Skaffold는 Kubernetes 네이티브 애플리케이션을 위한 지속적인 개발을 용이하게 하는 CLI 도구이다.Skaffold는 소스 코드의 변경 사항을 감지 하고 정책 기반 이미지 태깅 및 최적화되고 빠른 로컬 워크플로 를 통해 애플리케이션을 자동으로 빌드 , 푸시 , 테스트 및 배포 하는 파이프라인을 처리한다.ㅇ [kubernets] Kubernetes 로컬 개발환경 skaffold, Intellij ㄴ skaffold와 Intellij를 연동하여 쿠버네티스 로컬 개발환경 세팅하는 과정을 정리ㅁ 들어가며 예전 Skaffold의 로컬환경을 구성하면서 JIB를 설정해 보았는데, 이번 글에서는 는 Jib에 대해 구체..
ㅁ 들어가며ㅇ 회사에서 외부API의 통신에서 에러가 발생하여 그 원인을 분석하였다.ㅇ 외부 연동된 API는 처리하는데 1.7초, 내부적으로 Connection Timeout 설정이 1.5초로 되어 있었다.ㅇ 이번 글에서는 Connection Timeout 설정 방법과 에러 패턴, 최적의 Timeout 설정, 에러 처리 및 로깅 방법에 대해서 정리해 보았다. ㅁ Connection Timeout 설정 방법Spring RestTemplate에서 connection timeout을 설정하는 방법은 크게 두 가지가 있다. 1. HttpComponentsClientHttpRequestFactory 사용HttpComponentsClientHttpRequestFactory factory = new HttpCompon..
ㅁ 들어가며ㅇ Kotlin과 Spring을 사용하여 Hive 연결을 주기적으로 유지하기 위한 방법을 찾고 있었다.ㅇ 검색해면서 @Scheduled 어노테이션을 이용한 방법을 찾아 그 내용을 정리한 글이다. ㅁ @EnableScheduling 설정@SpringBootApplication@EnableSchedulingclass YourApplicationfun main(args: Array) { runApplication(*args)}ㅇ 기본적으로 애플리케이션의 메인 클래스나 설정 클래스에 @EnableScheduling 어노테이션을 추가한다. ㅁ 연결 유지 서비스 생성@Serviceclass HiveConnectionService( private val jdbcTemplate: JdbcTempl..
ㅁ 들어가며ㅇ 연동된 시스템의 지연 사항을 점검하면서 Spring Boot embeded Tomcat의 경우 메모리가 누적되면서 지연되는 경우믈 발견하였다.ㅇ Spring Boot의 임베디드 Tomcat을 사용할 때 메모리가 누적되는 현상에 대해 몇 가지 주요 원인과 해결 방법을 정리하였다. ㅁ 메모리 누수 (Memory Leak)ㅇ 원인: 애플리케이션 코드에서 적절히 리소스를 해제하지 않거나, 순환 참조 등으로 인해 발생할 수 있다.ㅇ 해결방법: - 힙 덤프를 분석하여 메모리 누수 지점을 찾아야 한다. - 코드 리뷰를 통해 리소스 해제가 제대로 이루어지는지 확인한다. - 순환 참조를 제거해야 한다. ㅁ 부적절한 GC 설정ㅇ 원인: GC 설정이 애플리케이션의 특성에 맞지 않아 메모리 회수가 제대로 이루어..

ㅁ 들어가며 내가 운영하는 서비스에 Request Timeout Exception이 발생하였다. 이 서비스는 전체 서비스의 중간 모듈이기 때문에 전체 서비스의 품질을 위해서는 Timeout의 시간을 2초를 넘길 수 없었다. 이를 해결하기 위해 전체 서비스에 장애로 전파될 수 있는 로직을 비동기로 처리하기로 하였다. Spring Framework에서 제공하는 @Async 어노테이션은 메서드를 비동기적으로 실행할 수 있게 해주는 강력한 기능이다. 이를 통해 애플리케이션의 성능을 향상시키고 리소스를 효율적으로 사용할 수 있다. ㅁ Webflux 비동처 처리 방식에 대한 나의 경험 @PostMapping("/1.0/noti") public Mono Notification( ServerHttpReque..

ㅁ 들어가며 Spring AOP(Aspect-Oriented Programming)는 애플리케이션의 비즈니스 로직과 공통 관심사를 분리하여 코드의 모듈화를 돕는 프로그래밍 패러다임이다. 이를 통해 코드의 중복을 줄이고 유지보수성을 높일 수 있다. ㅁ AOP의 주요 개념Aspectㅇ Aspect는 여러 객체에 공통으로 적용되는 기능을 모듈화한 것이다.ㅇ 이는 어드바이스(Advice)와 포인트컷(PointCut)을 결합하여 애플리케이션에 포함되는 횡단 관심사(Cross-cutting Concerns)를 정의한다. Join Pointㅇ Join Point는 애플리케이션 실행 흐름에서 특정 포인트를 의미하며, AOP가 적용될 수 있는 모든 지점을 나타낸다. ㅇ 스프링 AOP에서는 메서드 실행 지점이 주로 Joi..

ㅁ 들어가며ㅇ [Kotlin] Spring Boot 멀티모듈 프로젝트 구성하기에서 멀티 모듈을 구성하여 재사용 가능한 소스를 모듈화 하였다. ㅇ 모듈화된 공통 소스를 Jar로 배포하는 방법을 [Kotlin] Spring 멀티모듈, JAR 파일로 배포하는 방법에 정리하였다.ㅇ 이 글에서는 모듈로 생성된 jar를 로컬 파일 복사를 통해 다른 프로젝트에서 참조시키는 방법을 정리하였다. ㅁ libs 폴더 생성ㅇ 참조할 프로젝트의 루트 디렉토리에 libs라는 폴더를 생성하고, 참조하고자 하는 JAR 파일을 해당 폴더에 복사한다. ㅁ build.gradle 파일 수정ㅇ build.gradle 파일을 열고, dependencies 블록에 JAR 파일을 추가한다.// 특정파일 적용dependencies { imp..