OverviewSpring에서 제공하는 caching이라는 기능이 있다. spring caching은 컴퓨터를 하는 사람이면 흔히 알고 있는 개념과 동작이 비슷하다. 여러 번 호출에 대해서 결과값이 비슷하다면 메서드를 직접 실행하지 않고 미리 메모리상에 저장을 해둬서 성능을 높이는 방법이다. 만약 DB 정보가 크게 바뀌지 않는다거나 네트워크를 타야하는 연산이라면 더욱 성능 향상에 도움이 될 것이다. 물론 계산 복잡도가 높은 메서드에 대해서도 많은 이점을 받을 수 있다.Caching 종류와 사용법@Cacheable캐시에서 값을 조회하거나 없으면 메서드를 실행해 값을 캐시에 저장하는 기능을 제공한다.@Cacheable(key = "#id")public String getItemById(Long id) { ..
서론 최근에 개발을 하면서 클래스 내에서 중복 되는 로직의 메서드가 많았던것 같다. 하지만 모든 부분이 겹치면 한 개의 메서드로 해결이 가능하지만, 같은 로직을 타다가 일부만 조금 다른 로직이거나 다른 switch 문을 타야하거나 등의 문제가 있었다. 이를 추상화 하면서 알게 된 지식에 대해 정리하고자 한다. 기존에 Consumer는 Kafka - Spring을 사용하면서만 사용했는데 이러한 중복 로직을 추상화하는데에도 쓰일 수 있다는 점을 알게 됐다. Problempublic class ExampleClass{ public void methodN(){ // logic A // logic B switch(type){ // logic N ..
서론 Testcontainers을 알게되기 전엔 테스트를 하며 임베디드 처리를 하던 DB, Kafka, Redis등의 인프라들이 있었습니다. 예를 들어, Redis는 https://www.baeldung.com/spring-embedded-redis를 참고하여 임베디드 처리했습니다. 그리고 Kafka는 @EmbeddedKafka를 사용하였습니다. 이런 임베디드 처리 코드를 늘려갈수록 불필요한 코드가 많아짐을 느꼈습니다. 또한, @Profile 처리를 해야하는 일이 많았습니다. 테스트 코드에는 어노테이션이 많아지고 이를 상속으로 해결하려해도 뭔가 지저분해 보여서 다른 방법이 없나에 대한 생각을 하다 Testcontainers를 발견하게 되었습니다. 임베디드보다 간단하게 설정이 가능하고 여러 인프라를 아우르..
서론 최근 부서에서 새로운 시스템 개발에 들어가며 MongoDB를 사용하게 됐습니다. MongoDB를 선택하게 된 이유는 sub-query join이 많이 필요한 상황이 많기 때문입니다. 그러면서 가장 처음 보게 된 insert()와 save()로 저장하는 방법이 2개가 있습니다. Spring Data Jpa는 save()를 통해 insert qeury를 실행하게 됩니다. 하지만 Spring Data MongoDB에서는 insert()라는 메서드도 제공이 되는걸 볼 수 있습니다. 따라서 이 글에서는 두 메서드의 차이점을 다뤄보고자 합니다. MongoDB Repository 간단하게 MongoDB의 DAO를 생성해봅니다. @Repository public interface EntityRepository e..
서론 모니터링은 보통 인프라와 어플리케이션 모니터링으로 나뉩니다. 인프라 모니터링은 cpu, memory 등 서버 성능에 대한 데이터인 메트릭을 제공합니다. 어플리케이션 모니터링은 API 호출, 어플리케이션 에러 등에 대한 데이터인 로그를 제공합니다. 어플리케이션 모니터링 시스템을 구축하게 되면 운영에 있어서 많은 이점을 얻을 수 있습니다. 먼저 어플리케이션에서 서비스 중단과 같은 에러를 해결하기 위한 로그를 빠르게 확인할 수 있습니다. 그리고 사용자 행동 패턴, 인기있는 기능, 사용 중인 문제점 등을 분석함으로써 사용자 경험을 개선하는데 유용한 정보를 제공 할 수 있습니다. 이 글에서는 어플리케이션 모니터링을 Spring logback에서 경로를 지정해 Kafka로 publish하고, ELK중 logs..
서론 애플리케이션에서 로깅(logging)은 디버깅, 모니터링, 그리고 성능 최적화를 위한 필수적인 요소입니다. 특히, 대규모 시스템에서는 로깅의 중요성이 더욱 강조됩니다. Spring 애플리케이션에서 Logback을 활용하여 로깅 시스템을 구축하는 방법에 대해 알아보고자 합니다. Logback은 SLF4J의 구현체 중 하나로, 강력한 성능과 유연성을 제공합니다. XML 구성이나 annotation을 통해 다양한 로깅 환경을 세밀하게 설정할 수 있습니다. Logback 초기 설정 Logback을 설정하기 위해서 dependency를 가장 먼저 설정해줘야 하는데 org.springframework.boot spring-boot-starter-logging 다음과 같은 logging을 넣어줘도 되지만 spr..
- Total
- Today
- Yesterday
- centos
- frontend
- docker
- React
- Data Engineering
- consumer
- apache
- 프론트엔드
- rhel
- broker
- Java
- KAFKA
- JPA
- apache kafka
- Firebase
- Producer
- logback
- Container
- cs
- spring boot
- Front
- spring
- feign client
- API
- Linux
- zookeeper
- OS
- NextJS
- K8S
- 리액트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |