728x90

Spring 14

Redisson 으로 분산 Lock 구현하기

회사 프로젝트를 진행하던 동시성 문제를 해결하기 위해 분산락이 필요할 것 같다는 판단이 들었습니다. 분산락이란 무엇일까요? 아주 가볍게 설명하자면 예를 들어, 가게는 하나의 주문만 받을 수 있는데 A 손님과 B 손님이 0.0001 초차이로 주문을 한다고 해봅시다. 근데 가게에 있는 주문 기계는 주문이 들어오면 이미 주문을 받았는지를 체크하고 주문 수락을 누르는 프로세스라고 해봅시다. 하지만 주문을 받았는지 체크하기 위해서는 대략 0.1 초정도의 시간이 필요합니다. 그래서 가계기계는 A 손님의 주문과 B 손님의 주문간의 간격이 0.0001 초 밖에 되지 않아서 A 주문과 B 주문을 동시에 받게되는 상황이 발생합니다. 만약 지금과 같은 상황이면 주문을 받는 순간 뭔가 Lock 을 걸어 제어가 가능할 것 입니..

Spring 2022.02.10

[Spring Batch] Data 를 CSV 파일로 만들기

회사에서 Spring Batch 를 통해서 DB Column 들을 CSV 로 전환해서 뽑을 필요가 있었다. 일단 간단하게 DB 에서 값을 읽어와서 CSV 로 만드는 작업을 해보자. @Entity @Table(name = "user") class User( name: String, email: String ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null @Column(name = "name", length = 20) var name: String = name @Column(name = "email", length = 30) var email: String = email override fun toString()..

Spring 2022.01.23

[Spring] MultiModule 의존성 순서 설정으로 인한 오류

이번에 Spring MultiModule 을 진행하면서 계속해서 Jpa 설정에 관한 오류를 먹고 있었다. 아무리 application.yml 에 설정을 해도 설정이 안먹는 오류가 있었는데 위와 같이 설정을 해줘도 DataSource URL 이 없다고 나온다. 일단 멀티모듈 구조의 패키지를 한번 살펴보도록 하자. 일단 Api 는 Web 계층으로 쉽게 말하면 Controller 계층에 가깝고 Service 와 Entity 는 이름 그대로 Entity(Persistence 계층) , Service(Domain Layer) 라고 생각하면 편하다. 문제는 Service 에서도 Transactional 을 사용해야 해서 JPA 설정을 가지고 있어서 처음에는 아 Service Module 에도 entity 의 app..

Spring 2022.01.17

멀티 모듈 Project 에서 Bean 이 Resolve 되지 않을때 해결

A Module 에서 B Module 의 빈이 Resolve 안되는 경우 현재 내 디렉토리 구조는 아래와 같다. 여기서 Service 에서 Entity 즉 PersistenceLayer 에 대한 Dependency 를 주입받아야 했다. 그런데 Service 계층에서는 Entity 계층에 대한 Bean 의존성을 해석하지 못하고 있었다. 아래 사진처럼. 이유는 무엇일까? 바로 Service 계층에 Bean 을 Resolve 하는 과정에서 스캔대상에 Entity Module 이 포함되어 있지 않기 때문이다. 따라서 우리는 ComponentScan 의 basePackage 에 entity Module 도 추가해주어야 한다. 느낀점 멀티 모듈 Project 를 하면서 Spring 에 대한 지식이 생각보다 높지 않..

Spring 2022.01.15
728x90