일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 동시성
- CaffeineCache
- nonclustered index
- lazyloading
- method area
- 웹캐시
- backend
- 재고 시스템
- 지연로딩
- Jenkins
- 카카오 화재
- B+TREE
- Redis
- 제네릭
- JPA
- JAVA8
- JDK14
- 공변
- 트랜잭션
- Metaspace
- 리팩터링
- 부하테스트
- ci/cd
- Spring Data Redis
- GithubActions
- 주문
- java
- Ehcache
- springboot
- 상태패턴
- Today
- Total
목록java (8)
NDM
배달 서비스를 구현하는 slowDelivery 프로젝트 진행중입니다. 주문 로직에 대해 제가 고려한 것을 포스팅 하려고 합니다. 도메인은 장바구니 / 상품/ 재고 / 가게 / 주문이 있으며, 결제API는 클라이언트쪽에서 연동하기 때문에 결제데이터를 save하는 정도로만 구현했습니다. 장바구니와 재고는 Redis로 되어있으며, 나머지는 RDB를 사용했습니다. 재고에 Redis를 사용한 이유는 https://ndm-tech.tistory.com/34 에 기록해 두었습니다. 이번 포스팅에서는 아래의 내용을 다룹니다. 주문 로직의 순서를 결정하게 된 고민 과정 프로젝트를 진행하며 처음에 고생했던 부분은 주문이 성공하고 나서야 재고를 감소시켰었다는 점 입니다. 이것은 실제 상황과 비교해 볼 때, 가장 유사한 순서..
배달 어플을 구현하는 SlowDelivery 프로젝트에서 재고를 처리하는데 동시성 이슈가 있었습니다 더보기 하지만 사실 재고 도메인은 필요가 없었는지도 모릅니다. 일반적인 쇼핑몰과 다르게 배달 어플은 판매중인 상품의 재고를 숫자로 나타내지 않고 각 가게마다 유연하게 판매 가능 / 판매 불가능 상태값을 바꿔주는 로직만 작성해주면 굳이 재고의 증가/감소를 구현할 필요는 없었을 수도 있습니다. 하지만 이 프로젝트는 순수하게 학습용이고, 취업 시 [이런것도 구현하고 고민해 보았다] 를 어필하고 싶었고, 무엇보다 이커머스 분야에서 일하고 싶다면 한번쯤은 경험해보는게 낫겠다 싶어 억지로(?) 끼워넣은 도메인입니다 때문에 프로젝트 주제나 도메인에 있어 어색함이 있을 수 있습니다 현재 제 프로젝트의 주문 로직은 주문접..
Java의 Checked Exception과 UnCheckedException을 검색하다 보면 이런 표를 쉽게 찾을 수 있습니다. 이 표의 일부 내용은 맞으면서도 틀렸습니다. 어떤게 틀렸을까요?? CheckedException / UnCheckedException Java의 Exception은 Throwable 하위의 객체들입니다. 그중에서도 Error는 메모리부족이나 시스템 오류같이 개발자가 접근해서는 안되는 오류들이고, Exception 객체가 개발자가 신경써야 할 영역이라고 보시면 됩니다. 때문에 그냥 제일 위에있는 객체로 예외처리를 하기 위해 throw Throwable을 한다던가 하시면 안됩니다. CheckedException 반드시 예외처리를 해야합니다. 안그러면 컴파일 오류에서 잡힙니다 잡아..
목차 Java Generic이란? Java Generic을 왜 쓸까? 공변과 불공변 Generic의 동작 방식 왜 Primitive type은 Generic에서 사용할 수 없는가 ** 기본 문법에 대해서는 포스팅 하지 않습니다 ** Java Generic이란? Java 프로그래밍을 하다 보면 ArrayList , HashMap 등 안에 들어간 의문의 문자들을 볼 수 있는데 이를 제네릭(Generic)이라 한다. Data type을 특정한 type하나로 정하지 않고 사용할때마다 바뀔 수 있게 범용적이고 포괄적으로 지정한다 라는 의미이며 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미 왜 Generic을 사용하는 걸까? 비슷한 기능의 경우 재사용성이 높다. Spring을 이용해..