일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GC
- K8s
- 이스티오
- 보조스트림
- SpringBoot
- Stack
- jvm
- Real MySQL
- gradle
- spring
- 토비의 스프링 정리
- 스프링
- mysql
- IntellJ
- 스트림
- 토비의 스프링
- Collection
- 백준
- OS
- 쿠버네티스
- Java
- 자바
- JPA
- redis
- thread
- list
- Stream
- Kotlin
- MSA
- 자바 ORM 표준 JPA 프로그래밍
- Today
- Total
목록2022/05 (3)
인생을 코딩하다.
가변성을 제한하라. 읽고 쓸수 있는 프로퍼티 var을 사용하거나 mutable 객체를 사용하면 상태를 가질 수 있습니다. 상태를 가지면 해당 요스의 동작은 사용 방법뿐만 아니라 그 이력에도 의존하게 됩니다. 가변성이 있을 시 문제점 1. 프로그램을 이해하고 디버그하기 힘들어집니다. 이러한 상태를 갖는 부분들의 관계를 이해해야 하며, 상태 변경이 많아지면 이를 추적하는것이 힘들어집니다. 이러한 클래스는 이해하기도 어렵고, 이후에 코드를 수정하기도 힘들어집니다. 클래스가 예상하지 못한 상황 또는 오류를 발생시키는 경우에도 큰 문제가 됩니다. 2. 가변성이 있으면, 코드의 실행을 추론하기 어려워집니다. 시점에 따라서 값이 달라질 수 있으므로, 현재 어떤 값을 갖고 있는지 알아야 코드의 실행을 예측할 수 있습니..
안녕하세요. 오늘은 Pessimistic Lock으로 동시성 제어를 하는 법에 관해 글을 작성해보려 합니다. 저는 상품을 주문하는 API를 개발하고 있었습니다. 여러 사용자가 동시다발적으로 상품을 주문 할 때, 데이터 정합성에 이슈가 발생하는 문제였습니다. 위의 그림처럼 세 명의 사용자가 동시다발적으로 주문을 요청할 시 상품의 총 재고는 70이 되어야하지만, 주문이 동시에 일어나는 바람에 70이 아닌 90이 되어버리는 상황입니다. 총 (10 + 10 + 10)30의 재고가 차감되어야 하지만, 동시에 요청이 일어나서 10의 재고만 차감이 되어버리는 이슈입니다. 이걸 어떻게 해결할 수 있을까요? 이것은 간단하게 JPA의 비관적 락(Pessimistic Lock), 혹은 낙관적 락(Optimistic Lock..
최근에 디프만 프로젝트를 진행하며 회원가입을 위해 이메일 인증 API를 개발하고 있었습니다. 약관 및 정책 등의 링크를 메일로 보내고, 메일에서 링크를 클릭하면 이메일 인증이 되는 flow 였습니다. 허나 이게 로컬에선 잘 돼는데, ec2 서버에서 계속 인증 메일을 보낼 때 AUTH LOGIN failed 발생했습니다. 두 가지 이유가 있엇습니다. 첫 번째 이유는 SMTP의 기본 port는 25입니다. 하지만, Amazon EC2 서버에서는 SMTP port 25을 이용해서 메일을 보내는 것이 전송이 제한이 되어 있기 때문이였습니다. 따라서 Ec2 환경에서 기본 port인 25를 사용하게 돼면 이메일 인증에 실패하게 됩니다. 이는 메일 보내기를 25번 포트가 아닌 다른 포트 465, 587 포트를 사용해..