Spring

· Redis
개요 Spring 프로젝트 같은 멀티 쓰레드 환경에서는 동시성 처리가 필요한 상황이 발생합니다. 서버가 1대라면 쓰레드 동기화를 통해 처리가 가능하지만, 서버가 여러대로 늘어난다면 요청이 분산되기 때문에 무용지물이 됩니다. 만약 쇼핑몰에서 재고가 1개인 상품을 2명의 회원의 동시에 주문한 경우 2번에 요청에서 상품을 조회 당시에는 재고가 1개이므로 2명의 회원 모두 주문에 성공하는 경우가 발생할 수 있습니다. ZooKeeper나 MySQL 분산락을 사용할 수 있지만 Redis를 도입하고있고, 예정이라면 Redis를 통해 분산락으로 동시성 처리가 가능합니다. 라이브러리 선택 Redis를 이용해 분산락을 사용하기 전에 고려해야 할 것이 있는데 어떠한 라이브러리를 사용할 것인가 입니다. Spring에서 제공하..
· Spring
개요 업무상 Amazon SQS를 적용할 일이 있어 예전에 정리한 SQS 설정 방법대로 설정했지만 Listener이 작동하지 않는 이슈가 있었습니다. 서칭해본 결과 Spring Cloud AWS 2.x 버전은 Spring Boot 3.x에 완전히 호환되지 않는 것처럼 보입니다. AWS @SqsListener not working with spring cloud (using springboot 3) Currently, we have an SQS client configured using an IAM Role that is picked up on the cluster. However, migrating over to Springboot 3 the @SqsListener is no longer consumin..
· Spring
Spring Boot Admin은 Spring Boot 애플리케이션을 관리하고 모니터링하기 위한 커뮤니티 프로젝트이다. 현재 업무에는 ELK를 구축해 실시간 로깅, 서버 매트릭 정보 모니터링 등등을 사용하고 있지만, 서버 이전 시 한정적인 환경에서 Spring Boot Admin을 사용할 가능성도 있어 정리하며 구축하려 한다. 아래 예제는 Spring Boot 2.6.7 버전 기준이다. 1. Spring Boot Admin Server 구축 build.gradle Spring Boot 프로젝트 생성 후 사용할 라이브러리를 추가한다. dependencies { .... // 접속 시 보안 처리 implementation 'org.springframework.boot:spring-boot-starter-se..
· Spring
Application에 개발자가 예상하지 못한 오류가 발생하면 사용자의 문의보다 빠르게 발생과 원인을 알 수 있도록 슬랙 알림 설정을 해보자. Application은 Spring Boot로 로그는 Logback을 사용해서 간단한 설정으로 Slack 알림을 받아볼 수 있다. 1. Slack Webhook 앱 생성 슬랙 사이드 바 하단에 앱 추가 버튼을 클릭 해 WebHooks 앱을 추가한다. 생성된 웹후크 URL을 복사 2. Logback Slack Appender 의존성 추가 및 Logback 설정 build.gradle dependencies { ... implementation group: 'com.github.maricn', name: 'logback-slack-appender', version: ..
· ELK
Filebeat는 로그 데이터를 전달하고 중앙화하기 위한 경량의 Producer이다. Filebeat는 지정한 로그 파일 또는 위치를 모니터링하고 로그 이벤트를 수집해 Logstash로 전달해주고, 가공 작업을 거쳐 Elasticsearch로 보내주고 이 결과를 Kibana로 볼 수 있도록 구축할 예정이다. 1. Application 로그 수집 먼저 Spring Boot Application에서 로그를 수집해야 한다. 나의 경우는 AOP와 Logback을 통해 API 로그와 오류 로그만 수집하도록 설정하였다. 1-1. AOP 설정 LoggingAspect.java @Aspect @Component @RequiredArgsConstructor public class LoggingAspect { privat..
· Spring
개발을하며 사용한 모든 오픈소스에 대한 라이센스를 고지해야 한다. 손수 작성하기엔 어려움이 있어 자동으로 작성하는 방법을 찾아보았고 Gradle를 사용하고 있다면 Gradle License Report 플러그인을 사용해서 라이센스를 고지하는 파일을 만들 수 있다. 사용법 build.gradle에 플러그인을 추가한다. 사용하고 있는 gradle 버전에 따라 사용하는 플러그인 버전이 다르다. Gradle 7+ plugins { id 'com.github.jk1.dependency-license-report' version '2.0' } Gradle 6.x plugins { id 'com.github.jk1.dependency-license-report' version '1.17' } 플러그인을 추가했다면 아..
· Spring
도입한 이유 업무를 진행하던 중 로깅과 오류 모니터링을 해야 했다. ELK를 도입하고 싶지만 주어진 시간이 너무 없어서 도입하고 공부할 시간이 너무 없었다. 나는 도입하는 것도 중요하지만 어떻게 효율적으로 사용하고 고도화가 가능한지를 생각해보고 도입하는 것이 중요하다 생각돼서 간단한 Sentry를 이용해 로깅과 오류 모니터링을 구축하였다. Sentry는 여러 언어와 프레임워크를 지원하고 구축 방법도 매우 쉬워서 쉽게 로깅과 모니터링이 가능하다. 가격 정보를 간단하게 정리하면 아래와 같다. 더 자세한 정보는 홈페이지를 참고 바란다. Developer : 1개 계정 사용, 30일 데이터 보존, 오류 5,000개 제한, 트랜잭션 10,000개 제한 Team, Business : 무제한 계정 사용, 90일 데이..
· Spring
개요 기존에 Jenkins 자동화 배포를 할때 민감한 정보(db 정보 및 암호화 키 ...)가 기입되어 있는 설정파일(yml, properties ...) 파일은 gitignore를 적용하고 직접 Jenkins 서버에 접속해 넣어주고 빌드를 시켰다. 하지만 프로젝트가 많아졌을때 설정파일을 최신화 하게 되면 직접 프로젝트 루트에 설정파일을 직접 넣기 너무 귀찮고 빌드도 다시 시켜야 했다. Spring Cloud Config를 사용하게 되면 한 곳에서 모든 설정파일을 관리하고, 수정이 있더라도 다시 배포하지 않아도 되는 장점이 있다. 단점은 한마디로 보안이 굉장히 중요하다. 물론 보안은 어느곳에도 중요하지만 만약 Spring Cloud Config 암호화 대칭값이 노출되거나, 암호화 및 복호화 기능에 적용한..
· Spring
회사 업무 중에 데이터 마이그레이션을 해야했는데 약 9만건의 데이터와 13만건의 데이터를 옮기는 작업을 해야했다. Connection는 총 3개고 A Database에서 각각 B, C Database로 마이그레이션을 하는 상황이다. 업무를 하면 작성한 코드를 기준으로 예제를 정리해보겠다. 해당 예제는 Spring Boot, Gradle을 기준으로 하겠다. Spring Batch의 개념 및 설정하는 방법은 얼마전에 작성한 블로그 글을 참고 바란다. 1. application.yml Docker를 통해 mysql를 생성하고 hikariCP와 JPA를 사용해 마이그레이션 하려고 한다. spring: datasource: hikari: a-database: jdbc-url: jdbc:mysql://localho..
· Spring
앞서 Spring Batch를 소개하고 간단한 예제를 작성하고 실행해보 Meta Data엔 어떤 정보들이 있는지 알아보았다. 이번에는 실전에서 사용할 수 있는 간단한 Spring Batch 내용들을 실행해보며 정리하겠다. Next next()는 step1 -> step2 -> stpe3 순으로 하나씩 Step을 실행시킬때 사용한다. @Slf4j @RequiredArgsConstructor @Configuration public class NextSimpleJobConfiguration { private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; @Bean public Job n..
beekei
'Spring' 태그의 글 목록